Browse code

Remove old version 5

Benjamin Roth authored on14/03/2021 15:27:00
Showing173 changed files
1 1
deleted file mode 100644
... ...
@@ -1,20 +0,0 @@
1
-The MIT License (MIT)
2
-
3
-Copyright (c) 2019 Vladimir Kharlampidi
4
-
5
-Permission is hereby granted, free of charge, to any person obtaining a copy of
6
-this software and associated documentation files (the "Software"), to deal in
7
-the Software without restriction, including without limitation the rights to
8
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
-the Software, and to permit persons to whom the Software is furnished to do so,
10
-subject to the following conditions:
11
-
12
-The above copyright notice and this permission notice shall be included in all
13
-copies or substantial portions of the Software.
14
-
15
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 0
deleted file mode 100644
... ...
@@ -1,11 +0,0 @@
1
-Swiper
2
-==========
3
-
4
-Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps.
5
-
6
-Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity.
7
-
8
-# Getting Started
9
-  * [Getting Started Guide](https://swiperjs.com/get-started/)
10
-  * [API](https://swiperjs.com/api/)
11
-  * [Demos](https://swiperjs.com/demos/)
12 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-/* a11y */
2
-.swiper-container .swiper-notification {
3
-  position: absolute;
4
-  left: 0;
5
-  top: 0;
6
-  pointer-events: none;
7
-  opacity: 0;
8
-  z-index: -1000;
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-/* a11y */
2
-.swiper-container .swiper-notification {
3
-  position: absolute;
4
-  left: 0;
5
-  top: 0;
6
-  pointer-events: none;
7
-  opacity: 0;
8
-  z-index: -1000;
9
-}
10 0
deleted file mode 100644
11 1
deleted file mode 100644
12 2
deleted file mode 100644
... ...
@@ -1,111 +0,0 @@
1
-:root {
2
-  --swiper-theme-color: @themeColor;
3
-}
4
-.swiper-container {
5
-  margin-left: auto;
6
-  margin-right: auto;
7
-  position: relative;
8
-  overflow: hidden;
9
-  list-style: none;
10
-  padding: 0;
11
-  /* Fix of Webkit flickering */
12
-  z-index:1;
13
-}
14
-.swiper-container-vertical > .swiper-wrapper {
15
-  flex-direction: column;
16
-}
17
-.swiper-wrapper {
18
-  position:relative;
19
-  width: 100%;
20
-  height: 100%;
21
-  z-index: 1;
22
-  display: flex;
23
-  transition-property:transform;
24
-  box-sizing: content-box;
25
-}
26
-.swiper-container-android .swiper-slide, .swiper-wrapper {
27
-  transform:translate3d(0px,0,0);
28
-}
29
-.swiper-container-multirow > .swiper-wrapper {
30
-  flex-wrap: wrap;
31
-}
32
-.swiper-container-multirow-column > .swiper-wrapper {
33
-  flex-wrap: wrap;
34
-  flex-direction: column;
35
-}
36
-.swiper-container-free-mode > .swiper-wrapper {
37
-  transition-timing-function: ease-out;
38
-  margin: 0 auto;
39
-}
40
-.swiper-slide {
41
-  flex-shrink: 0;
42
-  width: 100%;
43
-  height: 100%;
44
-  position: relative;
45
-  transition-property: transform;
46
-}
47
-.swiper-slide-invisible-blank {
48
-  visibility: hidden;
49
-}
50
-/* Auto Height */
51
-.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide {
52
-  height: auto;
53
-}
54
-.swiper-container-autoheight .swiper-wrapper {
55
-  align-items: flex-start;
56
-  transition-property: transform, height;
57
-}
58
-
59
-/* 3D Effects */
60
-.swiper-container-3d {
61
-  perspective: 1200px;
62
-  .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow {
63
-    transform-style: preserve-3d;
64
-  }
65
-  .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom {
66
-    position: absolute;
67
-    left: 0;
68
-    top: 0;
69
-    width: 100%;
70
-    height: 100%;
71
-    pointer-events: none;
72
-    z-index: 10;
73
-  }
74
-  .swiper-slide-shadow-left {
75
-    background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0));
76
-  }
77
-  .swiper-slide-shadow-right {
78
-    background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0));
79
-  }
80
-  .swiper-slide-shadow-top {
81
-    background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0));
82
-  }
83
-  .swiper-slide-shadow-bottom {
84
-    background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0));
85
-  }
86
-}
87
-
88
-/* CSS Mode */
89
-.swiper-container-css-mode {
90
-  > .swiper-wrapper {
91
-    overflow: auto;
92
-    scrollbar-width: none; /* For Firefox */
93
-    -ms-overflow-style: none; /* For Internet Explorer and Edge */
94
-    &::-webkit-scrollbar {
95
-      display: none;
96
-    }
97
-  }
98
-  > .swiper-wrapper > .swiper-slide {
99
-    scroll-snap-align: start start;
100
-  }
101
-}
102
-.swiper-container-horizontal.swiper-container-css-mode {
103
-  > .swiper-wrapper {
104
-    scroll-snap-type: x mandatory;
105
-  }
106
-}
107
-.swiper-container-vertical.swiper-container-css-mode {
108
-  > .swiper-wrapper {
109
-    scroll-snap-type: y mandatory;
110
-  }
111
-}
112 0
deleted file mode 100644
... ...
@@ -1,115 +0,0 @@
1
-:root {
2
-  --swiper-theme-color: #{$themeColor};
3
-}
4
-.swiper-container {
5
-  margin-left: auto;
6
-  margin-right: auto;
7
-  position: relative;
8
-  overflow: hidden;
9
-  list-style: none;
10
-  padding: 0;
11
-  /* Fix of Webkit flickering */
12
-  z-index:1;
13
-}
14
-.swiper-container-vertical > .swiper-wrapper {
15
-  flex-direction: column;
16
-}
17
-.swiper-wrapper {
18
-  position:relative;
19
-  width: 100%;
20
-  height: 100%;
21
-  z-index: 1;
22
-  display: flex;
23
-  transition-property:transform;
24
-  box-sizing: content-box;
25
-}
26
-.swiper-container-android .swiper-slide,
27
-.swiper-wrapper {
28
-  transform:translate3d(0px,0,0);
29
-}
30
-.swiper-container-multirow > .swiper-wrapper {
31
-  flex-wrap: wrap;
32
-}
33
-.swiper-container-multirow-column > .swiper-wrapper {
34
-  flex-wrap: wrap;
35
-  flex-direction: column;
36
-}
37
-.swiper-container-free-mode > .swiper-wrapper {
38
-  transition-timing-function: ease-out;
39
-  margin: 0 auto;
40
-}
41
-.swiper-slide {
42
-  flex-shrink: 0;
43
-  width: 100%;
44
-  height: 100%;
45
-  position: relative;
46
-  transition-property: transform;
47
-}
48
-.swiper-slide-invisible-blank {
49
-  visibility: hidden;
50
-}
51
-/* Auto Height */
52
-.swiper-container-autoheight {
53
-  &, .swiper-slide {
54
-    height: auto;
55
-  }
56
-
57
-  .swiper-wrapper {
58
-    align-items: flex-start;
59
-    transition-property: transform, height;
60
-  }
61
-}
62
-
63
-/* 3D Effects */
64
-.swiper-container-3d {
65
-  perspective: 1200px;
66
-  .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow {
67
-    transform-style: preserve-3d;
68
-  }
69
-  .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom {
70
-    position: absolute;
71
-    left: 0;
72
-    top: 0;
73
-    width: 100%;
74
-    height: 100%;
75
-    pointer-events: none;
76
-    z-index: 10;
77
-  }
78
-  .swiper-slide-shadow-left {
79
-    background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0));
80
-  }
81
-  .swiper-slide-shadow-right {
82
-    background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0));
83
-  }
84
-  .swiper-slide-shadow-top {
85
-    background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0));
86
-  }
87
-  .swiper-slide-shadow-bottom {
88
-    background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0));
89
-  }
90
-}
91
-
92
-/* CSS Mode */
93
-.swiper-container-css-mode {
94
-  > .swiper-wrapper {
95
-    overflow: auto;
96
-    scrollbar-width: none; /* For Firefox */
97
-    -ms-overflow-style: none; /* For Internet Explorer and Edge */
98
-    &::-webkit-scrollbar {
99
-      display: none;
100
-    }
101
-  }
102
-  > .swiper-wrapper > .swiper-slide {
103
-    scroll-snap-align: start start;
104
-  }
105
-}
106
-.swiper-container-horizontal.swiper-container-css-mode {
107
-  > .swiper-wrapper {
108
-    scroll-snap-type: x mandatory;
109
-  }
110
-}
111
-.swiper-container-vertical.swiper-container-css-mode {
112
-  > .swiper-wrapper {
113
-    scroll-snap-type: y mandatory;
114
-  }
115
-}
116 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-.swiper-container-coverflow {}
2 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-.swiper-container-coverflow {}
2 0
deleted file mode 100644
... ...
@@ -1,43 +0,0 @@
1
-.swiper-container-cube {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    visibility: hidden;
8
-    transform-origin: 0 0;
9
-    width: 100%;
10
-    height: 100%;
11
-    .swiper-slide {
12
-      pointer-events: none;
13
-    }
14
-  }
15
-  &.swiper-container-rtl .swiper-slide {
16
-    transform-origin: 100% 0;
17
-  }
18
-  .swiper-slide-active {
19
-    &, & .swiper-slide-active {
20
-      pointer-events: auto;
21
-    }
22
-  }
23
-  .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide {
24
-    pointer-events: auto;
25
-    visibility: visible;
26
-  }
27
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
28
-    z-index: 0;
29
-    backface-visibility: hidden;
30
-  }
31
-  .swiper-cube-shadow {
32
-    position: absolute;
33
-    left: 0;
34
-    bottom: 0px;
35
-    width: 100%;
36
-    height: 100%;
37
-    background: #000;
38
-    opacity: 0.6;
39
-    -webkit-filter: blur(50px);
40
-    filter: blur(50px);
41
-    z-index: 0;
42
-  }
43
-}
44 0
deleted file mode 100644
... ...
@@ -1,43 +0,0 @@
1
-.swiper-container-cube {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    visibility: hidden;
8
-    transform-origin: 0 0;
9
-    width: 100%;
10
-    height: 100%;
11
-    .swiper-slide {
12
-      pointer-events: none;
13
-    }
14
-  }
15
-  &.swiper-container-rtl .swiper-slide {
16
-    transform-origin: 100% 0;
17
-  }
18
-  .swiper-slide-active {
19
-    &, & .swiper-slide-active {
20
-      pointer-events: auto;
21
-    }
22
-  }
23
-  .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide {
24
-    pointer-events: auto;
25
-    visibility: visible;
26
-  }
27
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
28
-    z-index: 0;
29
-    backface-visibility: hidden;
30
-  }
31
-  .swiper-cube-shadow {
32
-    position: absolute;
33
-    left: 0;
34
-    bottom: 0px;
35
-    width: 100%;
36
-    height: 100%;
37
-    background: #000;
38
-    opacity: 0.6;
39
-    -webkit-filter: blur(50px);
40
-    filter: blur(50px);
41
-    z-index: 0;
42
-  }
43
-}
44 0
deleted file mode 100644
... ...
@@ -1,19 +0,0 @@
1
-.swiper-container-fade {
2
-  &.swiper-container-free-mode {
3
-    .swiper-slide {
4
-      transition-timing-function: ease-out;
5
-    }
6
-  }
7
-  .swiper-slide {
8
-    pointer-events: none;
9
-    transition-property: opacity;
10
-    .swiper-slide {
11
-      pointer-events: none;
12
-    }
13
-  }
14
-  .swiper-slide-active {
15
-    &, & .swiper-slide-active {
16
-      pointer-events: auto;
17
-    }
18
-  }
19
-}
20 0
deleted file mode 100644
... ...
@@ -1,19 +0,0 @@
1
-.swiper-container-fade {
2
-  &.swiper-container-free-mode {
3
-    .swiper-slide {
4
-      transition-timing-function: ease-out;
5
-    }
6
-  }
7
-  .swiper-slide {
8
-    pointer-events: none;
9
-    transition-property: opacity;
10
-    .swiper-slide {
11
-      pointer-events: none;
12
-    }
13
-  }
14
-  .swiper-slide-active {
15
-    &, & .swiper-slide-active {
16
-      pointer-events: auto;
17
-    }
18
-  }
19
-}
20 0
deleted file mode 100644
... ...
@@ -1,20 +0,0 @@
1
-.swiper-container-flip {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    .swiper-slide {
8
-      pointer-events: none;
9
-    }
10
-  }
11
-  .swiper-slide-active {
12
-    &, & .swiper-slide-active {
13
-      pointer-events: auto;
14
-    }
15
-  }
16
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
17
-    z-index: 0;
18
-    backface-visibility: hidden;
19
-  }
20
-}
21 0
deleted file mode 100644
... ...
@@ -1,20 +0,0 @@
1
-.swiper-container-flip {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    .swiper-slide {
8
-      pointer-events: none;
9
-    }
10
-  }
11
-  .swiper-slide-active {
12
-    &, & .swiper-slide-active {
13
-      pointer-events: auto;
14
-    }
15
-  }
16
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
17
-    z-index: 0;
18
-    backface-visibility: hidden;
19
-  }
20
-}
21 0
deleted file mode 100644
... ...
@@ -1,34 +0,0 @@
1
-/* Preloader */
2
-:root {
3
-  /*
4
-  --swiper-preloader-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-lazy-preloader {
8
-  width: 42px;
9
-  height: 42px;
10
-  position: absolute;
11
-  left: 50%;
12
-  top: 50%;
13
-  margin-left: -21px;
14
-  margin-top: -21px;
15
-  z-index: 10;
16
-  transform-origin: 50%;
17
-  animation: swiper-preloader-spin 1s infinite linear;
18
-  box-sizing: border-box;
19
-  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
-  border-radius: 50%;
21
-  border-top-color: transparent;
22
-}
23
-
24
-.swiper-lazy-preloader-white {
25
-  --swiper-preloader-color: #fff;
26
-}
27
-.swiper-lazy-preloader-black {
28
-  --swiper-preloader-color: #000;
29
-}
30
-@keyframes swiper-preloader-spin {
31
-  100% {
32
-    transform: rotate(360deg);
33
-  }
34
-}
35 0
deleted file mode 100644
... ...
@@ -1,34 +0,0 @@
1
-/* Preloader */
2
-:root {
3
-  /*
4
-  --swiper-preloader-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-lazy-preloader {
8
-  width: 42px;
9
-  height: 42px;
10
-  position: absolute;
11
-  left: 50%;
12
-  top: 50%;
13
-  margin-left: -21px;
14
-  margin-top: -21px;
15
-  z-index: 10;
16
-  transform-origin: 50%;
17
-  animation: swiper-preloader-spin 1s infinite linear;
18
-  box-sizing: border-box;
19
-  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
-  border-radius: 50%;
21
-  border-top-color: transparent;
22
-}
23
-
24
-.swiper-lazy-preloader-white {
25
-  --swiper-preloader-color: #fff;
26
-}
27
-.swiper-lazy-preloader-black {
28
-  --swiper-preloader-color: #000;
29
-}
30
-@keyframes swiper-preloader-spin {
31
-  100% {
32
-    transform: rotate(360deg);
33
-  }
34
-}
35 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-:root {
2
-  --swiper-navigation-size: 44px;
3
-  /*
4
-  --swiper-navigation-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-button-prev, .swiper-button-next {
8
-  position: absolute;
9
-  top: 50%;
10
-  width: calc(var(--swiper-navigation-size) / 44 * 27);
11
-  height: var(--swiper-navigation-size);
12
-  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
13
-  z-index: 10;
14
-  cursor: pointer;
15
-  display: flex;
16
-  align-items: center;
17
-  justify-content: center;
18
-  color: var(--swiper-navigation-color, var(--swiper-theme-color));
19
-  &.swiper-button-disabled {
20
-    opacity: 0.35;
21
-    cursor: auto;
22
-    pointer-events: none;
23
-  }
24
-  &:after {
25
-    font-family: swiper-icons;
26
-    font-size: var(--swiper-navigation-size);
27
-    text-transform: none !important;
28
-    letter-spacing: 0;
29
-    text-transform: none;
30
-    font-variant: initial;
31
-    line-height: 1;
32
-  }
33
-}
34
-.swiper-button-prev,
35
-.swiper-container-rtl .swiper-button-next {
36
-  &:after {
37
-    content: 'prev';
38
-  }
39
-  left: 10px;
40
-  right: auto;
41
-}
42
-.swiper-button-next,
43
-.swiper-container-rtl .swiper-button-prev {
44
-  &:after {
45
-    content: 'next';
46
-  }
47
-  right: 10px;
48
-  left: auto;
49
-}
50
-.navigation-color-loop({
51
-  .swiper-button-prev,
52
-  .swiper-button-next {
53
-    &.swiper-button-@{navColorName} {
54
-      --swiper-navigation-color: @navColorValue;
55
-    }
56
-  }
57
-});
58
-.swiper-button-lock {
59
-  display: none;
60
-}
61 0
deleted file mode 100644
... ...
@@ -1,61 +0,0 @@
1
-:root {
2
-  --swiper-navigation-size: 44px;
3
-  /*
4
-  --swiper-navigation-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-button-prev, .swiper-button-next {
8
-  position: absolute;
9
-  top: 50%;
10
-  width: calc(var(--swiper-navigation-size) / 44 * 27);
11
-  height: var(--swiper-navigation-size);
12
-  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
13
-  z-index: 10;
14
-  cursor: pointer;
15
-  display: flex;
16
-  align-items: center;
17
-  justify-content: center;
18
-  color: var(--swiper-navigation-color, var(--swiper-theme-color));
19
-  &.swiper-button-disabled {
20
-    opacity: 0.35;
21
-    cursor: auto;
22
-    pointer-events: none;
23
-  }
24
-  &:after {
25
-    font-family: swiper-icons;
26
-    font-size: var(--swiper-navigation-size);
27
-    text-transform: none !important;
28
-    letter-spacing: 0;
29
-    text-transform: none;
30
-    font-variant: initial;
31
-    line-height: 1;
32
-  }
33
-}
34
-.swiper-button-prev,
35
-.swiper-container-rtl .swiper-button-next {
36
-  &:after {
37
-    content: 'prev';
38
-  }
39
-  left: 10px;
40
-  right: auto;
41
-}
42
-.swiper-button-next,
43
-.swiper-container-rtl .swiper-button-prev {
44
-  &:after {
45
-    content: 'next';
46
-  }
47
-  right: 10px;
48
-  left: auto;
49
-}
50
-
51
-@each $navColorName, $navColorValue in $colors {
52
-  .swiper-button-prev,
53
-  .swiper-button-next {
54
-    &.swiper-button-#{$navColorName} {
55
-      --swiper-navigation-color: #{$navColorValue};
56
-    }
57
-  }
58
-}
59
-.swiper-button-lock {
60
-  display: none;
61
-}
62 0
deleted file mode 100644
... ...
@@ -1,149 +0,0 @@
1
-:root {
2
-  /*
3
-  --swiper-pagination-color: var(--swiper-theme-color);
4
-  */
5
-}
6
-.swiper-pagination {
7
-  position: absolute;
8
-  text-align: center;
9
-  transition: 300ms opacity;
10
-  transform: translate3d(0,0,0);
11
-  z-index: 10;
12
-  &.swiper-pagination-hidden {
13
-    opacity: 0;
14
-  }
15
-}
16
-/* Common Styles */
17
-.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{
18
-  bottom: 10px;
19
-  left: 0;
20
-  width: 100%;
21
-}
22
-/* Bullets */
23
-.swiper-pagination-bullets-dynamic {
24
-  overflow: hidden;
25
-  font-size: 0;
26
-  .swiper-pagination-bullet {
27
-    transform: scale(0.33);
28
-    position: relative;
29
-  }
30
-  .swiper-pagination-bullet-active {
31
-    transform: scale(1);
32
-  }
33
-  .swiper-pagination-bullet-active-main {
34
-    transform: scale(1);
35
-  }
36
-  .swiper-pagination-bullet-active-prev {
37
-    transform: scale(0.66);
38
-  }
39
-  .swiper-pagination-bullet-active-prev-prev {
40
-    transform: scale(0.33);
41
-  }
42
-  .swiper-pagination-bullet-active-next {
43
-    transform: scale(0.66);
44
-  }
45
-  .swiper-pagination-bullet-active-next-next {
46
-    transform: scale(0.33);
47
-  }
48
-}
49
-.swiper-pagination-bullet {
50
-  width: 8px;
51
-  height: 8px;
52
-  display: inline-block;
53
-  border-radius: 100%;
54
-  background: #000;
55
-  opacity: 0.2;
56
-  button& {
57
-    border: none;
58
-    margin: 0;
59
-    padding: 0;
60
-    box-shadow: none;
61
-    appearance: none;
62
-  }
63
-  .swiper-pagination-clickable & {
64
-    cursor: pointer;
65
-  }
66
-}
67
-.swiper-pagination-bullet-active {
68
-  opacity: 1;
69
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
70
-}
71
-
72
-.swiper-container-vertical {
73
-  > .swiper-pagination-bullets {
74
-    right: 10px;
75
-    top: 50%;
76
-    transform:translate3d(0px,-50%,0);
77
-    .swiper-pagination-bullet {
78
-      margin: 6px 0;
79
-      display: block;
80
-    }
81
-    &.swiper-pagination-bullets-dynamic {
82
-      top: 50%;
83
-      transform: translateY(-50%);
84
-      width: 8px;
85
-      .swiper-pagination-bullet {
86
-        display: inline-block;
87
-        transition: 200ms transform, 200ms top;
88
-      }
89
-    }
90
-  }
91
-}
92
-.swiper-container-horizontal {
93
-  > .swiper-pagination-bullets {
94
-    .swiper-pagination-bullet {
95
-      margin: 0 4px;
96
-    }
97
-    &.swiper-pagination-bullets-dynamic {
98
-      left: 50%;
99
-      transform: translateX(-50%);
100
-      white-space: nowrap;
101
-      .swiper-pagination-bullet {
102
-        transition: 200ms transform, 200ms left;
103
-      }
104
-    }
105
-  }
106
-  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
107
-    transition: 200ms transform, 200ms right;
108
-  }
109
-}
110
-/* Progress */
111
-.swiper-pagination-progressbar {
112
-  background: rgba(0,0,0,0.25);
113
-  position: absolute;
114
-  .swiper-pagination-progressbar-fill {
115
-    background: var(--swiper-pagination-color, var(--swiper-theme-color));
116
-    position: absolute;
117
-    left: 0;
118
-    top: 0;
119
-    width: 100%;
120
-    height: 100%;
121
-    transform: scale(0);
122
-    transform-origin: left top;
123
-  }
124
-  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
125
-    transform-origin: right top;
126
-  }
127
-  .swiper-container-horizontal > &,
128
-  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
129
-    width: 100%;
130
-    height: 4px;
131
-    left: 0;
132
-    top: 0;
133
-  }
134
-  .swiper-container-vertical > &,
135
-  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
136
-    width: 4px;
137
-    height: 100%;
138
-    left: 0;
139
-    top: 0;
140
-  }
141
-}
142
-.pagination-color-loop({
143
-  .swiper-pagination-@{paginationColorName} {
144
-    --swiper-pagination-color: @paginationColorValue;
145
-  }
146
-});
147
-.swiper-pagination-lock {
148
-  display: none;
149
-}
150 0
deleted file mode 100644
... ...
@@ -1,149 +0,0 @@
1
-:root {
2
-  /*
3
-  --swiper-pagination-color: var(--swiper-theme-color);
4
-  */
5
-}
6
-.swiper-pagination {
7
-  position: absolute;
8
-  text-align: center;
9
-  transition: 300ms opacity;
10
-  transform: translate3d(0,0,0);
11
-  z-index: 10;
12
-  &.swiper-pagination-hidden {
13
-    opacity: 0;
14
-  }
15
-}
16
-/* Common Styles */
17
-.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{
18
-  bottom: 10px;
19
-  left: 0;
20
-  width: 100%;
21
-}
22
-/* Bullets */
23
-.swiper-pagination-bullets-dynamic {
24
-  overflow: hidden;
25
-  font-size: 0;
26
-  .swiper-pagination-bullet {
27
-    transform: scale(0.33);
28
-    position: relative;
29
-  }
30
-  .swiper-pagination-bullet-active {
31
-    transform: scale(1);
32
-  }
33
-  .swiper-pagination-bullet-active-main {
34
-    transform: scale(1);
35
-  }
36
-  .swiper-pagination-bullet-active-prev {
37
-    transform: scale(0.66);
38
-  }
39
-  .swiper-pagination-bullet-active-prev-prev {
40
-    transform: scale(0.33);
41
-  }
42
-  .swiper-pagination-bullet-active-next {
43
-    transform: scale(0.66);
44
-  }
45
-  .swiper-pagination-bullet-active-next-next {
46
-    transform: scale(0.33);
47
-  }
48
-}
49
-.swiper-pagination-bullet {
50
-  width: 8px;
51
-  height: 8px;
52
-  display: inline-block;
53
-  border-radius: 100%;
54
-  background: #000;
55
-  opacity: 0.2;
56
-  @at-root button#{&} {
57
-    border: none;
58
-    margin: 0;
59
-    padding: 0;
60
-    box-shadow: none;
61
-    appearance: none;
62
-  }
63
-  .swiper-pagination-clickable & {
64
-    cursor: pointer;
65
-  }
66
-}
67
-.swiper-pagination-bullet-active {
68
-  opacity: 1;
69
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
70
-}
71
-
72
-.swiper-container-vertical {
73
-  > .swiper-pagination-bullets {
74
-    right: 10px;
75
-    top: 50%;
76
-    transform:translate3d(0px,-50%,0);
77
-    .swiper-pagination-bullet {
78
-      margin: 6px 0;
79
-      display: block;
80
-    }
81
-    &.swiper-pagination-bullets-dynamic {
82
-      top: 50%;
83
-      transform: translateY(-50%);
84
-      width: 8px;
85
-      .swiper-pagination-bullet {
86
-        display: inline-block;
87
-        transition: 200ms transform, 200ms top;
88
-      }
89
-    }
90
-  }
91
-}
92
-.swiper-container-horizontal {
93
-  > .swiper-pagination-bullets {
94
-    .swiper-pagination-bullet {
95
-      margin: 0 4px;
96
-    }
97
-    &.swiper-pagination-bullets-dynamic {
98
-      left: 50%;
99
-      transform: translateX(-50%);
100
-      white-space: nowrap;
101
-      .swiper-pagination-bullet {
102
-        transition: 200ms transform, 200ms left;
103
-      }
104
-    }
105
-  }
106
-  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
107
-    transition: 200ms transform, 200ms right;
108
-  }
109
-}
110
-/* Progress */
111
-.swiper-pagination-progressbar {
112
-  background: rgba(0,0,0,0.25);
113
-  position: absolute;
114
-  .swiper-pagination-progressbar-fill {
115
-    background: var(--swiper-pagination-color, var(--swiper-theme-color));
116
-    position: absolute;
117
-    left: 0;
118
-    top: 0;
119
-    width: 100%;
120
-    height: 100%;
121
-    transform: scale(0);
122
-    transform-origin: left top;
123
-  }
124
-  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
125
-    transform-origin: right top;
126
-  }
127
-  .swiper-container-horizontal > &,
128
-  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
129
-    width: 100%;
130
-    height: 4px;
131
-    left: 0;
132
-    top: 0;
133
-  }
134
-  .swiper-container-vertical > &,
135
-  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
136
-    width: 4px;
137
-    height: 100%;
138
-    left: 0;
139
-    top: 0;
140
-  }
141
-}
142
-@each $paginationColorName, $paginationColorValue in $colors {
143
-  .swiper-pagination-#{$paginationColorName} {
144
-    --swiper-pagination-color: #{$paginationColorValue};
145
-  }
146
-}
147
-.swiper-pagination-lock {
148
-  display: none;
149
-}
150 0
deleted file mode 100644
... ...
@@ -1,38 +0,0 @@
1
-/* Scrollbar */
2
-.swiper-scrollbar {
3
-  border-radius: 10px;
4
-  position: relative;
5
-  -ms-touch-action: none;
6
-  background: rgba(0,0,0,0.1);
7
-  .swiper-container-horizontal > & {
8
-    position: absolute;
9
-    left: 1%;
10
-    bottom: 3px;
11
-    z-index: 50;
12
-    height: 5px;
13
-    width: 98%;
14
-  }
15
-  .swiper-container-vertical > & {
16
-    position: absolute;
17
-    right: 3px;
18
-    top: 1%;
19
-    z-index: 50;
20
-    width: 5px;
21
-    height: 98%;
22
-  }
23
-}
24
-.swiper-scrollbar-drag {
25
-  height: 100%;
26
-  width: 100%;
27
-  position: relative;
28
-  background: rgba(0,0,0,0.5);
29
-  border-radius: 10px;
30
-  left: 0;
31
-  top: 0;
32
-}
33
-.swiper-scrollbar-cursor-drag {
34
-  cursor: move;
35
-}
36
-.swiper-scrollbar-lock {
37
-  display: none;
38
-}
39 0
\ No newline at end of file
40 1
deleted file mode 100644
... ...
@@ -1,38 +0,0 @@
1
-/* Scrollbar */
2
-.swiper-scrollbar {
3
-  border-radius: 10px;
4
-  position: relative;
5
-  -ms-touch-action: none;
6
-  background: rgba(0,0,0,0.1);
7
-  .swiper-container-horizontal > & {
8
-    position: absolute;
9
-    left: 1%;
10
-    bottom: 3px;
11
-    z-index: 50;
12
-    height: 5px;
13
-    width: 98%;
14
-  }
15
-  .swiper-container-vertical > & {
16
-    position: absolute;
17
-    right: 3px;
18
-    top: 1%;
19
-    z-index: 50;
20
-    width: 5px;
21
-    height: 98%;
22
-  }
23
-}
24
-.swiper-scrollbar-drag {
25
-  height: 100%;
26
-  width: 100%;
27
-  position: relative;
28
-  background: rgba(0,0,0,0.5);
29
-  border-radius: 10px;
30
-  left: 0;
31
-  top: 0;
32
-}
33
-.swiper-scrollbar-cursor-drag {
34
-  cursor: move;
35
-}
36
-.swiper-scrollbar-lock {
37
-  display: none;
38
-}
39 0
\ No newline at end of file
40 1
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-.swiper-container-thumbs {
2
-  .swiper-slide-thumb-active {
3
-    // Styles for active thumb slide
4
-  }
5
-}
6 0
\ No newline at end of file
7 1
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-.swiper-container-thumbs {
2
-  .swiper-slide-thumb-active {
3
-    // Styles for active thumb slide
4
-  }
5
-}
6 0
\ No newline at end of file
7 1
deleted file mode 100644
... ...
@@ -1,18 +0,0 @@
1
-.swiper-zoom-container {
2
-  width: 100%;
3
-  height: 100%;
4
-  display: flex;
5
-  justify-content: center;
6
-  align-items: center;
7
-  text-align: center;
8
-
9
-  > img, > svg, > canvas {
10
-    max-width: 100%;
11
-    max-height: 100%;
12
-    object-fit: contain;
13
-  }
14
-}
15
-
16
-.swiper-slide-zoomed {
17
-  cursor: move;
18
-}
19 0
deleted file mode 100644
... ...
@@ -1,18 +0,0 @@
1
-.swiper-zoom-container {
2
-  width: 100%;
3
-  height: 100%;
4
-  display: flex;
5
-  justify-content: center;
6
-  align-items: center;
7
-  text-align: center;
8
-
9
-  > img, > svg, > canvas {
10
-    max-width: 100%;
11
-    max-height: 100%;
12
-    object-fit: contain;
13
-  }
14
-}
15
-
16
-.swiper-slide-zoomed {
17
-  cursor: move;
18
-}
19 0
deleted file mode 100644
... ...
@@ -1,532 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-@font-face {
14
-  font-family: 'swiper-icons';
15
-  src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff");
16
-  font-weight: 400;
17
-  font-style: normal;
18
-}
19
-:root {
20
-  --swiper-theme-color: #007aff;
21
-}
22
-.swiper-container {
23
-  margin-left: auto;
24
-  margin-right: auto;
25
-  position: relative;
26
-  overflow: hidden;
27
-  list-style: none;
28
-  padding: 0;
29
-  /* Fix of Webkit flickering */
30
-  z-index: 1;
31
-}
32
-.swiper-container-vertical > .swiper-wrapper {
33
-  flex-direction: column;
34
-}
35
-.swiper-wrapper {
36
-  position: relative;
37
-  width: 100%;
38
-  height: 100%;
39
-  z-index: 1;
40
-  display: flex;
41
-  transition-property: transform;
42
-  box-sizing: content-box;
43
-}
44
-.swiper-container-android .swiper-slide,
45
-.swiper-wrapper {
46
-  transform: translate3d(0px, 0, 0);
47
-}
48
-.swiper-container-multirow > .swiper-wrapper {
49
-  flex-wrap: wrap;
50
-}
51
-.swiper-container-multirow-column > .swiper-wrapper {
52
-  flex-wrap: wrap;
53
-  flex-direction: column;
54
-}
55
-.swiper-container-free-mode > .swiper-wrapper {
56
-  transition-timing-function: ease-out;
57
-  margin: 0 auto;
58
-}
59
-.swiper-slide {
60
-  flex-shrink: 0;
61
-  width: 100%;
62
-  height: 100%;
63
-  position: relative;
64
-  transition-property: transform;
65
-}
66
-.swiper-slide-invisible-blank {
67
-  visibility: hidden;
68
-}
69
-/* Auto Height */
70
-.swiper-container-autoheight,
71
-.swiper-container-autoheight .swiper-slide {
72
-  height: auto;
73
-}
74
-.swiper-container-autoheight .swiper-wrapper {
75
-  align-items: flex-start;
76
-  transition-property: transform, height;
77
-}
78
-/* 3D Effects */
79
-.swiper-container-3d {
80
-  perspective: 1200px;
81
-}
82
-.swiper-container-3d .swiper-wrapper,
83
-.swiper-container-3d .swiper-slide,
84
-.swiper-container-3d .swiper-slide-shadow-left,
85
-.swiper-container-3d .swiper-slide-shadow-right,
86
-.swiper-container-3d .swiper-slide-shadow-top,
87
-.swiper-container-3d .swiper-slide-shadow-bottom,
88
-.swiper-container-3d .swiper-cube-shadow {
89
-  transform-style: preserve-3d;
90
-}
91
-.swiper-container-3d .swiper-slide-shadow-left,
92
-.swiper-container-3d .swiper-slide-shadow-right,
93
-.swiper-container-3d .swiper-slide-shadow-top,
94
-.swiper-container-3d .swiper-slide-shadow-bottom {
95
-  position: absolute;
96
-  left: 0;
97
-  top: 0;
98
-  width: 100%;
99
-  height: 100%;
100
-  pointer-events: none;
101
-  z-index: 10;
102
-}
103
-.swiper-container-3d .swiper-slide-shadow-left {
104
-  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
105
-}
106
-.swiper-container-3d .swiper-slide-shadow-right {
107
-  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
108
-}
109
-.swiper-container-3d .swiper-slide-shadow-top {
110
-  background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
111
-}
112
-.swiper-container-3d .swiper-slide-shadow-bottom {
113
-  background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
114
-}
115
-/* CSS Mode */
116
-.swiper-container-css-mode > .swiper-wrapper {
117
-  overflow: auto;
118
-  scrollbar-width: none;
119
-  /* For Firefox */
120
-  -ms-overflow-style: none;
121
-  /* For Internet Explorer and Edge */
122
-}
123
-.swiper-container-css-mode > .swiper-wrapper::-webkit-scrollbar {
124
-  display: none;
125
-}
126
-.swiper-container-css-mode > .swiper-wrapper > .swiper-slide {
127
-  scroll-snap-align: start start;
128
-}
129
-.swiper-container-horizontal.swiper-container-css-mode > .swiper-wrapper {
130
-  scroll-snap-type: x mandatory;
131
-}
132
-.swiper-container-vertical.swiper-container-css-mode > .swiper-wrapper {
133
-  scroll-snap-type: y mandatory;
134
-}
135
-:root {
136
-  --swiper-navigation-size: 44px;
137
-  /*
138
-  --swiper-navigation-color: var(--swiper-theme-color);
139
-  */
140
-}
141
-.swiper-button-prev,
142
-.swiper-button-next {
143
-  position: absolute;
144
-  top: 50%;
145
-  width: calc(var(--swiper-navigation-size) / 44 * 27);
146
-  height: var(--swiper-navigation-size);
147
-  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
148
-  z-index: 10;
149
-  cursor: pointer;
150
-  display: flex;
151
-  align-items: center;
152
-  justify-content: center;
153
-  color: var(--swiper-navigation-color, var(--swiper-theme-color));
154
-}
155
-.swiper-button-prev.swiper-button-disabled,
156
-.swiper-button-next.swiper-button-disabled {
157
-  opacity: 0.35;
158
-  cursor: auto;
159
-  pointer-events: none;
160
-}
161
-.swiper-button-prev:after,
162
-.swiper-button-next:after {
163
-  font-family: swiper-icons;
164
-  font-size: var(--swiper-navigation-size);
165
-  text-transform: none !important;
166
-  letter-spacing: 0;
167
-  text-transform: none;
168
-  font-variant: initial;
169
-  line-height: 1;
170
-}
171
-.swiper-button-prev,
172
-.swiper-container-rtl .swiper-button-next {
173
-  left: 10px;
174
-  right: auto;
175
-}
176
-.swiper-button-prev:after,
177
-.swiper-container-rtl .swiper-button-next:after {
178
-  content: 'prev';
179
-}
180
-.swiper-button-next,
181
-.swiper-container-rtl .swiper-button-prev {
182
-  right: 10px;
183
-  left: auto;
184
-}
185
-.swiper-button-next:after,
186
-.swiper-container-rtl .swiper-button-prev:after {
187
-  content: 'next';
188
-}
189
-.swiper-button-prev.swiper-button-white,
190
-.swiper-button-next.swiper-button-white {
191
-  --swiper-navigation-color: #ffffff;
192
-}
193
-.swiper-button-prev.swiper-button-black,
194
-.swiper-button-next.swiper-button-black {
195
-  --swiper-navigation-color: #000000;
196
-}
197
-.swiper-button-lock {
198
-  display: none;
199
-}
200
-:root {
201
-  /*
202
-  --swiper-pagination-color: var(--swiper-theme-color);
203
-  */
204
-}
205
-.swiper-pagination {
206
-  position: absolute;
207
-  text-align: center;
208
-  transition: 300ms opacity;
209
-  transform: translate3d(0, 0, 0);
210
-  z-index: 10;
211
-}
212
-.swiper-pagination.swiper-pagination-hidden {
213
-  opacity: 0;
214
-}
215
-/* Common Styles */
216
-.swiper-pagination-fraction,
217
-.swiper-pagination-custom,
218
-.swiper-container-horizontal > .swiper-pagination-bullets {
219
-  bottom: 10px;
220
-  left: 0;
221
-  width: 100%;
222
-}
223
-/* Bullets */
224
-.swiper-pagination-bullets-dynamic {
225
-  overflow: hidden;
226
-  font-size: 0;
227
-}
228
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
229
-  transform: scale(0.33);
230
-  position: relative;
231
-}
232
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
233
-  transform: scale(1);
234
-}
235
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
236
-  transform: scale(1);
237
-}
238
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
239
-  transform: scale(0.66);
240
-}
241
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
242
-  transform: scale(0.33);
243
-}
244
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
245
-  transform: scale(0.66);
246
-}
247
-.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
248
-  transform: scale(0.33);
249
-}
250
-.swiper-pagination-bullet {
251
-  width: 8px;
252
-  height: 8px;
253
-  display: inline-block;
254
-  border-radius: 100%;
255
-  background: #000;
256
-  opacity: 0.2;
257
-}
258
-button.swiper-pagination-bullet {
259
-  border: none;
260
-  margin: 0;
261
-  padding: 0;
262
-  box-shadow: none;
263
-  -webkit-appearance: none;
264
-     -moz-appearance: none;
265
-          appearance: none;
266
-}
267
-.swiper-pagination-clickable .swiper-pagination-bullet {
268
-  cursor: pointer;
269
-}
270
-.swiper-pagination-bullet-active {
271
-  opacity: 1;
272
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
273
-}
274
-.swiper-container-vertical > .swiper-pagination-bullets {
275
-  right: 10px;
276
-  top: 50%;
277
-  transform: translate3d(0px, -50%, 0);
278
-}
279
-.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {
280
-  margin: 6px 0;
281
-  display: block;
282
-}
283
-.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
284
-  top: 50%;
285
-  transform: translateY(-50%);
286
-  width: 8px;
287
-}
288
-.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
289
-  display: inline-block;
290
-  transition: 200ms transform, 200ms top;
291
-}
292
-.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {
293
-  margin: 0 4px;
294
-}
295
-.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
296
-  left: 50%;
297
-  transform: translateX(-50%);
298
-  white-space: nowrap;
299
-}
300
-.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
301
-  transition: 200ms transform, 200ms left;
302
-}
303
-.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
304
-  transition: 200ms transform, 200ms right;
305
-}
306
-/* Progress */
307
-.swiper-pagination-progressbar {
308
-  background: rgba(0, 0, 0, 0.25);
309
-  position: absolute;
310
-}
311
-.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
312
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
313
-  position: absolute;
314
-  left: 0;
315
-  top: 0;
316
-  width: 100%;
317
-  height: 100%;
318
-  transform: scale(0);
319
-  transform-origin: left top;
320
-}
321
-.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
322
-  transform-origin: right top;
323
-}
324
-.swiper-container-horizontal > .swiper-pagination-progressbar,
325
-.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
326
-  width: 100%;
327
-  height: 4px;
328
-  left: 0;
329
-  top: 0;
330
-}
331
-.swiper-container-vertical > .swiper-pagination-progressbar,
332
-.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
333
-  width: 4px;
334
-  height: 100%;
335
-  left: 0;
336
-  top: 0;
337
-}
338
-.swiper-pagination-white {
339
-  --swiper-pagination-color: #ffffff;
340
-}
341
-.swiper-pagination-black {
342
-  --swiper-pagination-color: #000000;
343
-}
344
-.swiper-pagination-lock {
345
-  display: none;
346
-}
347
-/* Scrollbar */
348
-.swiper-scrollbar {
349
-  border-radius: 10px;
350
-  position: relative;
351
-  -ms-touch-action: none;
352
-  background: rgba(0, 0, 0, 0.1);
353
-}
354
-.swiper-container-horizontal > .swiper-scrollbar {
355
-  position: absolute;
356
-  left: 1%;
357
-  bottom: 3px;
358
-  z-index: 50;
359
-  height: 5px;
360
-  width: 98%;
361
-}
362
-.swiper-container-vertical > .swiper-scrollbar {
363
-  position: absolute;
364
-  right: 3px;
365
-  top: 1%;
366
-  z-index: 50;
367
-  width: 5px;
368
-  height: 98%;
369
-}
370
-.swiper-scrollbar-drag {
371
-  height: 100%;
372
-  width: 100%;
373
-  position: relative;
374
-  background: rgba(0, 0, 0, 0.5);
375
-  border-radius: 10px;
376
-  left: 0;
377
-  top: 0;
378
-}
379
-.swiper-scrollbar-cursor-drag {
380
-  cursor: move;
381
-}
382
-.swiper-scrollbar-lock {
383
-  display: none;
384
-}
385
-.swiper-zoom-container {
386
-  width: 100%;
387
-  height: 100%;
388
-  display: flex;
389
-  justify-content: center;
390
-  align-items: center;
391
-  text-align: center;
392
-}
393
-.swiper-zoom-container > img,
394
-.swiper-zoom-container > svg,
395
-.swiper-zoom-container > canvas {
396
-  max-width: 100%;
397
-  max-height: 100%;
398
-  object-fit: contain;
399
-}
400
-.swiper-slide-zoomed {
401
-  cursor: move;
402
-}
403
-/* Preloader */
404
-:root {
405
-  /*
406
-  --swiper-preloader-color: var(--swiper-theme-color);
407
-  */
408
-}
409
-.swiper-lazy-preloader {
410
-  width: 42px;
411
-  height: 42px;
412
-  position: absolute;
413
-  left: 50%;
414
-  top: 50%;
415
-  margin-left: -21px;
416
-  margin-top: -21px;
417
-  z-index: 10;
418
-  transform-origin: 50%;
419
-  animation: swiper-preloader-spin 1s infinite linear;
420
-  box-sizing: border-box;
421
-  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
422
-  border-radius: 50%;
423
-  border-top-color: transparent;
424
-}
425
-.swiper-lazy-preloader-white {
426
-  --swiper-preloader-color: #fff;
427
-}
428
-.swiper-lazy-preloader-black {
429
-  --swiper-preloader-color: #000;
430
-}
431
-@keyframes swiper-preloader-spin {
432
-  100% {
433
-    transform: rotate(360deg);
434
-  }
435
-}
436
-/* a11y */
437
-.swiper-container .swiper-notification {
438
-  position: absolute;
439
-  left: 0;
440
-  top: 0;
441
-  pointer-events: none;
442
-  opacity: 0;
443
-  z-index: -1000;
444
-}
445
-.swiper-container-fade.swiper-container-free-mode .swiper-slide {
446
-  transition-timing-function: ease-out;
447
-}
448
-.swiper-container-fade .swiper-slide {
449
-  pointer-events: none;
450
-  transition-property: opacity;
451
-}
452
-.swiper-container-fade .swiper-slide .swiper-slide {
453
-  pointer-events: none;
454
-}
455
-.swiper-container-fade .swiper-slide-active,
456
-.swiper-container-fade .swiper-slide-active .swiper-slide-active {
457
-  pointer-events: auto;
458
-}
459
-.swiper-container-cube {
460
-  overflow: visible;
461
-}
462
-.swiper-container-cube .swiper-slide {
463
-  pointer-events: none;
464
-  -webkit-backface-visibility: hidden;
465
-          backface-visibility: hidden;
466
-  z-index: 1;
467
-  visibility: hidden;
468
-  transform-origin: 0 0;
469
-  width: 100%;
470
-  height: 100%;
471
-}
472
-.swiper-container-cube .swiper-slide .swiper-slide {
473
-  pointer-events: none;
474
-}
475
-.swiper-container-cube.swiper-container-rtl .swiper-slide {
476
-  transform-origin: 100% 0;
477
-}
478
-.swiper-container-cube .swiper-slide-active,
479
-.swiper-container-cube .swiper-slide-active .swiper-slide-active {
480
-  pointer-events: auto;
481
-}
482
-.swiper-container-cube .swiper-slide-active,
483
-.swiper-container-cube .swiper-slide-next,
484
-.swiper-container-cube .swiper-slide-prev,
485
-.swiper-container-cube .swiper-slide-next + .swiper-slide {
486
-  pointer-events: auto;
487
-  visibility: visible;
488
-}
489
-.swiper-container-cube .swiper-slide-shadow-top,
490
-.swiper-container-cube .swiper-slide-shadow-bottom,
491
-.swiper-container-cube .swiper-slide-shadow-left,
492
-.swiper-container-cube .swiper-slide-shadow-right {
493
-  z-index: 0;
494
-  -webkit-backface-visibility: hidden;
495
-          backface-visibility: hidden;
496
-}
497
-.swiper-container-cube .swiper-cube-shadow {
498
-  position: absolute;
499
-  left: 0;
500
-  bottom: 0px;
501
-  width: 100%;
502
-  height: 100%;
503
-  background: #000;
504
-  opacity: 0.6;
505
-  -webkit-filter: blur(50px);
506
-  filter: blur(50px);
507
-  z-index: 0;
508
-}
509
-.swiper-container-flip {
510
-  overflow: visible;
511
-}
512
-.swiper-container-flip .swiper-slide {
513
-  pointer-events: none;
514
-  -webkit-backface-visibility: hidden;
515
-          backface-visibility: hidden;
516
-  z-index: 1;
517
-}
518
-.swiper-container-flip .swiper-slide .swiper-slide {
519
-  pointer-events: none;
520
-}
521
-.swiper-container-flip .swiper-slide-active,
522
-.swiper-container-flip .swiper-slide-active .swiper-slide-active {
523
-  pointer-events: auto;
524
-}
525
-.swiper-container-flip .swiper-slide-shadow-top,
526
-.swiper-container-flip .swiper-slide-shadow-bottom,
527
-.swiper-container-flip .swiper-slide-shadow-left,
528
-.swiper-container-flip .swiper-slide-shadow-right {
529
-  z-index: 0;
530
-  -webkit-backface-visibility: hidden;
531
-          backface-visibility: hidden;
532
-}
533 0
deleted file mode 100644
... ...
@@ -1,13 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-@font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(-1 * var(--swiper-navigation-size)/ 2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
14 0
\ No newline at end of file
15 1
deleted file mode 100644
... ...
@@ -1,8579 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-/**
14
- * SSR Window 2.0.0
15
- * Better handling for window object in SSR environment
16
- * https://github.com/nolimits4web/ssr-window
17
- *
18
- * Copyright 2020, Vladimir Kharlampidi
19
- *
20
- * Licensed under MIT
21
- *
22
- * Released on: May 12, 2020
23
- */
24
-/* eslint-disable no-param-reassign */
25
-function isObject(obj) {
26
-    return (obj !== null &&
27
-        typeof obj === 'object' &&
28
-        'constructor' in obj &&
29
-        obj.constructor === Object);
30
-}
31
-function extend(target, src) {
32
-    if (target === void 0) { target = {}; }
33
-    if (src === void 0) { src = {}; }
34
-    Object.keys(src).forEach(function (key) {
35
-        if (typeof target[key] === 'undefined')
36
-            target[key] = src[key];
37
-        else if (isObject(src[key]) &&
38
-            isObject(target[key]) &&
39
-            Object.keys(src[key]).length > 0) {
40
-            extend(target[key], src[key]);
41
-        }
42
-    });
43
-}
44
-
45
-var doc = typeof document !== 'undefined' ? document : {};
46
-var ssrDocument = {
47
-    body: {},
48
-    addEventListener: function () { },
49
-    removeEventListener: function () { },
50
-    activeElement: {
51
-        blur: function () { },
52
-        nodeName: '',
53
-    },
54
-    querySelector: function () {
55
-        return null;
56
-    },
57
-    querySelectorAll: function () {
58
-        return [];
59
-    },
60
-    getElementById: function () {
61
-        return null;
62
-    },
63
-    createEvent: function () {
64
-        return {
65
-            initEvent: function () { },
66
-        };
67
-    },
68
-    createElement: function () {
69
-        return {
70
-            children: [],
71
-            childNodes: [],
72
-            style: {},
73
-            setAttribute: function () { },
74
-            getElementsByTagName: function () {
75
-                return [];
76
-            },
77
-        };
78
-    },
79
-    createElementNS: function () {
80
-        return {};
81
-    },
82
-    importNode: function () {
83
-        return null;
84
-    },
85
-    location: {
86
-        hash: '',
87
-        host: '',
88
-        hostname: '',
89
-        href: '',
90
-        origin: '',
91
-        pathname: '',
92
-        protocol: '',
93
-        search: '',
94
-    },
95
-};
96
-extend(doc, ssrDocument);
97
-
98
-var win = typeof window !== 'undefined' ? window : {};
99
-var ssrWindow = {
100
-    document: ssrDocument,
101
-    navigator: {
102
-        userAgent: '',
103
-    },
104
-    location: {
105
-        hash: '',
106
-        host: '',
107
-        hostname: '',
108
-        href: '',
109
-        origin: '',
110
-        pathname: '',
111
-        protocol: '',
112
-        search: '',
113
-    },
114
-    history: {
115
-        replaceState: function () { },
116
-        pushState: function () { },
117
-        go: function () { },
118
-        back: function () { },
119
-    },
120
-    CustomEvent: function CustomEvent() {
121
-        return this;
122
-    },
123
-    addEventListener: function () { },
124
-    removeEventListener: function () { },
125
-    getComputedStyle: function () {
126
-        return {
127
-            getPropertyValue: function () {
128
-                return '';
129
-            },
130
-        };
131
-    },
132
-    Image: function () { },
133
-    Date: function () { },
134
-    screen: {},
135
-    setTimeout: function () { },
136
-    clearTimeout: function () { },
137
-    matchMedia: function () {
138
-        return {};
139
-    },
140
-};
141
-extend(win, ssrWindow);
142
-
143
-/**
144
- * Dom7 2.1.5
145
- * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
146
- * http://framework7.io/docs/dom.html
147
- *
148
- * Copyright 2020, Vladimir Kharlampidi
149
- * The iDangero.us
150
- * http://www.idangero.us/
151
- *
152
- * Licensed under MIT
153
- *
154
- * Released on: May 15, 2020
155
- */
156
-
157
-class Dom7 {
158
-  constructor(arr) {
159
-    const self = this;
160
-    // Create array-like object
161
-    for (let i = 0; i < arr.length; i += 1) {
162
-      self[i] = arr[i];
163
-    }
164
-    self.length = arr.length;
165
-    // Return collection with methods
166
-    return this;
167
-  }
168
-}
169
-
170
-function $(selector, context) {
171
-  const arr = [];
172
-  let i = 0;
173
-  if (selector && !context) {
174
-    if (selector instanceof Dom7) {
175
-      return selector;
176
-    }
177
-  }
178
-  if (selector) {
179
-      // String
180
-    if (typeof selector === 'string') {
181
-      let els;
182
-      let tempParent;
183
-      const html = selector.trim();
184
-      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
185
-        let toCreate = 'div';
186
-        if (html.indexOf('<li') === 0) toCreate = 'ul';
187
-        if (html.indexOf('<tr') === 0) toCreate = 'tbody';
188
-        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
189
-        if (html.indexOf('<tbody') === 0) toCreate = 'table';
190
-        if (html.indexOf('<option') === 0) toCreate = 'select';
191
-        tempParent = doc.createElement(toCreate);
192
-        tempParent.innerHTML = html;
193
-        for (i = 0; i < tempParent.childNodes.length; i += 1) {
194
-          arr.push(tempParent.childNodes[i]);
195
-        }
196
-      } else {
197
-        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
198
-          // Pure ID selector
199
-          els = [doc.getElementById(selector.trim().split('#')[1])];
200
-        } else {
201
-          // Other selectors
202
-          els = (context || doc).querySelectorAll(selector.trim());
203
-        }
204
-        for (i = 0; i < els.length; i += 1) {
205
-          if (els[i]) arr.push(els[i]);
206
-        }
207
-      }
208
-    } else if (selector.nodeType || selector === win || selector === doc) {
209
-      // Node/element
210
-      arr.push(selector);
211
-    } else if (selector.length > 0 && selector[0].nodeType) {
212
-      // Array of elements or instance of Dom
213
-      for (i = 0; i < selector.length; i += 1) {
214
-        arr.push(selector[i]);
215
-      }
216
-    }
217
-  }
218
-  return new Dom7(arr);
219
-}
220
-
221
-$.fn = Dom7.prototype;
222
-$.Class = Dom7;
223
-$.Dom7 = Dom7;
224
-
225
-function unique(arr) {
226
-  const uniqueArray = [];
227
-  for (let i = 0; i < arr.length; i += 1) {
228
-    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
229
-  }
230
-  return uniqueArray;
231
-}
232
-
233
-// Classes and attributes
234
-function addClass(className) {
235
-  if (typeof className === 'undefined') {
236
-    return this;
237
-  }
238
-  const classes = className.split(' ');
239
-  for (let i = 0; i < classes.length; i += 1) {
240
-    for (let j = 0; j < this.length; j += 1) {
241
-      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);
242
-    }
243
-  }
244
-  return this;
245
-}
246
-function removeClass(className) {
247
-  const classes = className.split(' ');
248
-  for (let i = 0; i < classes.length; i += 1) {
249
-    for (let j = 0; j < this.length; j += 1) {
250
-      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);
251
-    }
252
-  }
253
-  return this;
254
-}
255
-function hasClass(className) {
256
-  if (!this[0]) return false;
257
-  return this[0].classList.contains(className);
258
-}
259
-function toggleClass(className) {
260
-  const classes = className.split(' ');
261
-  for (let i = 0; i < classes.length; i += 1) {
262
-    for (let j = 0; j < this.length; j += 1) {
263
-      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);
264
-    }
265
-  }
266
-  return this;
267
-}
268
-function attr(attrs, value) {
269
-  if (arguments.length === 1 && typeof attrs === 'string') {
270
-    // Get attr
271
-    if (this[0]) return this[0].getAttribute(attrs);
272
-    return undefined;
273
-  }
274
-
275
-  // Set attrs
276
-  for (let i = 0; i < this.length; i += 1) {
277
-    if (arguments.length === 2) {
278
-      // String
279
-      this[i].setAttribute(attrs, value);
280
-    } else {
281
-      // Object
282
-      // eslint-disable-next-line
283
-      for (const attrName in attrs) {
284
-        this[i][attrName] = attrs[attrName];
285
-        this[i].setAttribute(attrName, attrs[attrName]);
286
-      }
287
-    }
288
-  }
289
-  return this;
290
-}
291
-// eslint-disable-next-line
292
-function removeAttr(attr) {
293
-  for (let i = 0; i < this.length; i += 1) {
294
-    this[i].removeAttribute(attr);
295
-  }
296
-  return this;
297
-}
298
-function data(key, value) {
299
-  let el;
300
-  if (typeof value === 'undefined') {
301
-    el = this[0];
302
-    // Get value
303
-    if (el) {
304
-      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
305
-        return el.dom7ElementDataStorage[key];
306
-      }
307
-
308
-      const dataKey = el.getAttribute(`data-${key}`);
309
-      if (dataKey) {
310
-        return dataKey;
311
-      }
312
-      return undefined;
313
-    }
314
-    return undefined;
315
-  }
316
-
317
-  // Set value
318
-  for (let i = 0; i < this.length; i += 1) {
319
-    el = this[i];
320
-    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
321
-    el.dom7ElementDataStorage[key] = value;
322
-  }
323
-  return this;
324
-}
325
-// Transforms
326
-// eslint-disable-next-line
327
-function transform(transform) {
328
-  for (let i = 0; i < this.length; i += 1) {
329
-    const elStyle = this[i].style;
330
-    elStyle.webkitTransform = transform;
331
-    elStyle.transform = transform;
332
-  }
333
-  return this;
334
-}
335
-function transition(duration) {
336
-  if (typeof duration !== 'string') {
337
-    duration = `${duration}ms`; // eslint-disable-line
338
-  }
339
-  for (let i = 0; i < this.length; i += 1) {
340
-    const elStyle = this[i].style;
341
-    elStyle.webkitTransitionDuration = duration;
342
-    elStyle.transitionDuration = duration;
343
-  }
344
-  return this;
345
-}
346
-// Events
347
-function on(...args) {
348
-  let [eventType, targetSelector, listener, capture] = args;
349
-  if (typeof args[1] === 'function') {
350
-    [eventType, listener, capture] = args;
351
-    targetSelector = undefined;
352
-  }
353
-  if (!capture) capture = false;
354
-
355
-  function handleLiveEvent(e) {
356
-    const target = e.target;
357
-    if (!target) return;
358
-    const eventData = e.target.dom7EventData || [];
359
-    if (eventData.indexOf(e) < 0) {
360
-      eventData.unshift(e);
361
-    }
362
-    if ($(target).is(targetSelector)) listener.apply(target, eventData);
363
-    else {
364
-      const parents = $(target).parents(); // eslint-disable-line
365
-      for (let k = 0; k < parents.length; k += 1) {
366
-        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
367
-      }
368
-    }
369
-  }
370
-  function handleEvent(e) {
371
-    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
372
-    if (eventData.indexOf(e) < 0) {
373
-      eventData.unshift(e);
374
-    }
375
-    listener.apply(this, eventData);
376
-  }
377
-  const events = eventType.split(' ');
378
-  let j;
379
-  for (let i = 0; i < this.length; i += 1) {
380
-    const el = this[i];
381
-    if (!targetSelector) {
382
-      for (j = 0; j < events.length; j += 1) {
383
-        const event = events[j];
384
-        if (!el.dom7Listeners) el.dom7Listeners = {};
385
-        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
386
-        el.dom7Listeners[event].push({
387
-          listener,
388
-          proxyListener: handleEvent,
389
-        });
390
-        el.addEventListener(event, handleEvent, capture);
391
-      }
392
-    } else {
393
-      // Live events
394
-      for (j = 0; j < events.length; j += 1) {
395
-        const event = events[j];
396
-        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
397
-        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];
398
-        el.dom7LiveListeners[event].push({
399
-          listener,
400
-          proxyListener: handleLiveEvent,
401
-        });
402
-        el.addEventListener(event, handleLiveEvent, capture);
403
-      }
404
-    }
405
-  }
406
-  return this;
407
-}
408
-function off(...args) {
409
-  let [eventType, targetSelector, listener, capture] = args;
410
-  if (typeof args[1] === 'function') {
411
-    [eventType, listener, capture] = args;
412
-    targetSelector = undefined;
413
-  }
414
-  if (!capture) capture = false;
415
-
416
-  const events = eventType.split(' ');
417
-  for (let i = 0; i < events.length; i += 1) {
418
-    const event = events[i];
419
-    for (let j = 0; j < this.length; j += 1) {
420
-      const el = this[j];
421
-      let handlers;
422
-      if (!targetSelector && el.dom7Listeners) {
423
-        handlers = el.dom7Listeners[event];
424
-      } else if (targetSelector && el.dom7LiveListeners) {
425
-        handlers = el.dom7LiveListeners[event];
426
-      }
427
-      if (handlers && handlers.length) {
428
-        for (let k = handlers.length - 1; k >= 0; k -= 1) {
429
-          const handler = handlers[k];
430
-          if (listener && handler.listener === listener) {
431
-            el.removeEventListener(event, handler.proxyListener, capture);
432
-            handlers.splice(k, 1);
433
-          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
434
-            el.removeEventListener(event, handler.proxyListener, capture);
435
-            handlers.splice(k, 1);
436
-          } else if (!listener) {
437
-            el.removeEventListener(event, handler.proxyListener, capture);
438
-            handlers.splice(k, 1);
439
-          }
440
-        }
441
-      }
442
-    }
443
-  }
444
-  return this;
445
-}
446
-function trigger(...args) {
447
-  const events = args[0].split(' ');
448
-  const eventData = args[1];
449
-  for (let i = 0; i < events.length; i += 1) {
450
-    const event = events[i];
451
-    for (let j = 0; j < this.length; j += 1) {
452
-      const el = this[j];
453
-      let evt;
454
-      try {
455
-        evt = new win.CustomEvent(event, {
456
-          detail: eventData,
457
-          bubbles: true,
458
-          cancelable: true,
459
-        });
460
-      } catch (e) {
461
-        evt = doc.createEvent('Event');
462
-        evt.initEvent(event, true, true);
463
-        evt.detail = eventData;
464
-      }
465
-      // eslint-disable-next-line
466
-      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
467
-      el.dispatchEvent(evt);
468
-      el.dom7EventData = [];
469
-      delete el.dom7EventData;
470
-    }
471
-  }
472
-  return this;
473
-}
474
-function transitionEnd(callback) {
475
-  const events = ['webkitTransitionEnd', 'transitionend'];
476
-  const dom = this;
477
-  let i;
478
-  function fireCallBack(e) {
479
-    /* jshint validthis:true */
480
-    if (e.target !== this) return;
481
-    callback.call(this, e);
482
-    for (i = 0; i < events.length; i += 1) {
483
-      dom.off(events[i], fireCallBack);
484
-    }
485
-  }
486
-  if (callback) {
487
-    for (i = 0; i < events.length; i += 1) {
488
-      dom.on(events[i], fireCallBack);
489
-    }
490
-  }
491
-  return this;
492
-}
493
-function outerWidth(includeMargins) {
494
-  if (this.length > 0) {
495
-    if (includeMargins) {
496
-      // eslint-disable-next-line
497
-      const styles = this.styles();
498
-      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
499
-    }
500
-    return this[0].offsetWidth;
501
-  }
502
-  return null;
503
-}
504
-function outerHeight(includeMargins) {
505
-  if (this.length > 0) {
506
-    if (includeMargins) {
507
-      // eslint-disable-next-line
508
-      const styles = this.styles();
509
-      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
510
-    }
511
-    return this[0].offsetHeight;
512
-  }
513
-  return null;
514
-}
515
-function offset() {
516
-  if (this.length > 0) {
517
-    const el = this[0];
518
-    const box = el.getBoundingClientRect();
519
-    const body = doc.body;
520
-    const clientTop = el.clientTop || body.clientTop || 0;
521
-    const clientLeft = el.clientLeft || body.clientLeft || 0;
522
-    const scrollTop = el === win ? win.scrollY : el.scrollTop;
523
-    const scrollLeft = el === win ? win.scrollX : el.scrollLeft;
524
-    return {
525
-      top: (box.top + scrollTop) - clientTop,
526
-      left: (box.left + scrollLeft) - clientLeft,
527
-    };
528
-  }
529
-
530
-  return null;
531
-}
532
-function styles() {
533
-  if (this[0]) return win.getComputedStyle(this[0], null);
534
-  return {};
535
-}
536
-function css(props, value) {
537
-  let i;
538
-  if (arguments.length === 1) {
539
-    if (typeof props === 'string') {
540
-      if (this[0]) return win.getComputedStyle(this[0], null).getPropertyValue(props);
541
-    } else {
542
-      for (i = 0; i < this.length; i += 1) {
543
-        // eslint-disable-next-line
544
-        for (let prop in props) {
545
-          this[i].style[prop] = props[prop];
546
-        }
547
-      }
548
-      return this;
549
-    }
550
-  }
551
-  if (arguments.length === 2 && typeof props === 'string') {
552
-    for (i = 0; i < this.length; i += 1) {
553
-      this[i].style[props] = value;
554
-    }
555
-    return this;
556
-  }
557
-  return this;
558
-}
559
-// Iterate over the collection passing elements to `callback`
560
-function each(callback) {
561
-  // Don't bother continuing without a callback
562
-  if (!callback) return this;
563
-  // Iterate over the current collection
564
-  for (let i = 0; i < this.length; i += 1) {
565
-    // If the callback returns false
566
-    if (callback.call(this[i], i, this[i]) === false) {
567
-      // End the loop early
568
-      return this;
569
-    }
570
-  }
571
-  // Return `this` to allow chained DOM operations
572
-  return this;
573
-}
574
-function filter(callback) {
575
-  const matchedItems = [];
576
-  const dom = this;
577
-  for (let i = 0; i < dom.length; i += 1) {
578
-    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);
579
-  }
580
-  return new Dom7(matchedItems);
581
-}
582
-// eslint-disable-next-line
583
-function html(html) {
584
-  if (typeof html === 'undefined') {
585
-    return this[0] ? this[0].innerHTML : undefined;
586
-  }
587
-
588
-  for (let i = 0; i < this.length; i += 1) {
589
-    this[i].innerHTML = html;
590
-  }
591
-  return this;
592
-}
593
-// eslint-disable-next-line
594
-function text(text) {
595
-  if (typeof text === 'undefined') {
596
-    if (this[0]) {
597
-      return this[0].textContent.trim();
598
-    }
599
-    return null;
600
-  }
601
-
602
-  for (let i = 0; i < this.length; i += 1) {
603
-    this[i].textContent = text;
604
-  }
605
-  return this;
606
-}
607
-function is(selector) {
608
-  const el = this[0];
609
-  let compareWith;
610
-  let i;
611
-  if (!el || typeof selector === 'undefined') return false;
612
-  if (typeof selector === 'string') {
613
-    if (el.matches) return el.matches(selector);
614
-    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
615
-    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);
616
-
617
-    compareWith = $(selector);
618
-    for (i = 0; i < compareWith.length; i += 1) {
619
-      if (compareWith[i] === el) return true;
620
-    }
621
-    return false;
622
-  } else if (selector === doc) return el === doc;
623
-  else if (selector === win) return el === win;
624
-
625
-  if (selector.nodeType || selector instanceof Dom7) {
626
-    compareWith = selector.nodeType ? [selector] : selector;
627
-    for (i = 0; i < compareWith.length; i += 1) {
628
-      if (compareWith[i] === el) return true;
629
-    }
630
-    return false;
631
-  }
632
-  return false;
633
-}
634
-function index() {
635
-  let child = this[0];
636
-  let i;
637
-  if (child) {
638
-    i = 0;
639
-    // eslint-disable-next-line
640
-    while ((child = child.previousSibling) !== null) {
641
-      if (child.nodeType === 1) i += 1;
642
-    }
643
-    return i;
644
-  }
645
-  return undefined;
646
-}
647
-// eslint-disable-next-line
648
-function eq(index) {
649
-  if (typeof index === 'undefined') return this;
650
-  const length = this.length;
651
-  let returnIndex;
652
-  if (index > length - 1) {
653
-    return new Dom7([]);
654
-  }
655
-  if (index < 0) {
656
-    returnIndex = length + index;
657
-    if (returnIndex < 0) return new Dom7([]);
658
-    return new Dom7([this[returnIndex]]);
659
-  }
660
-  return new Dom7([this[index]]);
661
-}
662
-function append(...args) {
663
-  let newChild;
664
-
665
-  for (let k = 0; k < args.length; k += 1) {
666
-    newChild = args[k];
667
-    for (let i = 0; i < this.length; i += 1) {
668
-      if (typeof newChild === 'string') {
669
-        const tempDiv = doc.createElement('div');
670
-        tempDiv.innerHTML = newChild;
671
-        while (tempDiv.firstChild) {
672
-          this[i].appendChild(tempDiv.firstChild);
673
-        }
674
-      } else if (newChild instanceof Dom7) {
675
-        for (let j = 0; j < newChild.length; j += 1) {
676
-          this[i].appendChild(newChild[j]);
677
-        }
678
-      } else {
679
-        this[i].appendChild(newChild);
680
-      }
681
-    }
682
-  }
683
-
684
-  return this;
685
-}
686
-function prepend(newChild) {
687
-  let i;
688
-  let j;
689
-  for (i = 0; i < this.length; i += 1) {
690
-    if (typeof newChild === 'string') {
691
-      const tempDiv = doc.createElement('div');
692
-      tempDiv.innerHTML = newChild;
693
-      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
694
-        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
695
-      }
696
-    } else if (newChild instanceof Dom7) {
697
-      for (j = 0; j < newChild.length; j += 1) {
698
-        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
699
-      }
700
-    } else {
701
-      this[i].insertBefore(newChild, this[i].childNodes[0]);
702
-    }
703
-  }
704
-  return this;
705
-}
706
-function next(selector) {
707
-  if (this.length > 0) {
708
-    if (selector) {
709
-      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
710
-        return new Dom7([this[0].nextElementSibling]);
711
-      }
712
-      return new Dom7([]);
713
-    }
714
-
715
-    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);
716
-    return new Dom7([]);
717
-  }
718
-  return new Dom7([]);
719
-}
720
-function nextAll(selector) {
721
-  const nextEls = [];
722
-  let el = this[0];
723
-  if (!el) return new Dom7([]);
724
-  while (el.nextElementSibling) {
725
-    const next = el.nextElementSibling; // eslint-disable-line
726
-    if (selector) {
727
-      if ($(next).is(selector)) nextEls.push(next);
728
-    } else nextEls.push(next);
729
-    el = next;
730
-  }
731
-  return new Dom7(nextEls);
732
-}
733
-function prev(selector) {
734
-  if (this.length > 0) {
735
-    const el = this[0];
736
-    if (selector) {
737
-      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
738
-        return new Dom7([el.previousElementSibling]);
739
-      }
740
-      return new Dom7([]);
741
-    }
742
-
743
-    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);
744
-    return new Dom7([]);
745
-  }
746
-  return new Dom7([]);
747
-}
748
-function prevAll(selector) {
749
-  const prevEls = [];
750
-  let el = this[0];
751
-  if (!el) return new Dom7([]);
752
-  while (el.previousElementSibling) {
753
-    const prev = el.previousElementSibling; // eslint-disable-line
754
-    if (selector) {
755
-      if ($(prev).is(selector)) prevEls.push(prev);
756
-    } else prevEls.push(prev);
757
-    el = prev;
758
-  }
759
-  return new Dom7(prevEls);
760
-}
761
-function parent(selector) {
762
-  const parents = []; // eslint-disable-line
763
-  for (let i = 0; i < this.length; i += 1) {
764
-    if (this[i].parentNode !== null) {
765
-      if (selector) {
766
-        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
767
-      } else {
768
-        parents.push(this[i].parentNode);
769
-      }
770
-    }
771
-  }
772
-  return $(unique(parents));
773
-}
774
-function parents(selector) {
775
-  const parents = []; // eslint-disable-line
776
-  for (let i = 0; i < this.length; i += 1) {
777
-    let parent = this[i].parentNode; // eslint-disable-line
778
-    while (parent) {
779
-      if (selector) {
780
-        if ($(parent).is(selector)) parents.push(parent);
781
-      } else {
782
-        parents.push(parent);
783
-      }
784
-      parent = parent.parentNode;
785
-    }
786
-  }
787
-  return $(unique(parents));
788
-}
789
-function closest(selector) {
790
-  let closest = this; // eslint-disable-line
791
-  if (typeof selector === 'undefined') {
792
-    return new Dom7([]);
793
-  }
794
-  if (!closest.is(selector)) {
795
-    closest = closest.parents(selector).eq(0);
796
-  }
797
-  return closest;
798
-}
799
-function find(selector) {
800
-  const foundElements = [];
801
-  for (let i = 0; i < this.length; i += 1) {
802
-    const found = this[i].querySelectorAll(selector);
803
-    for (let j = 0; j < found.length; j += 1) {
804
-      foundElements.push(found[j]);
805
-    }
806
-  }
807
-  return new Dom7(foundElements);
808
-}
809
-function children(selector) {
810
-  const children = []; // eslint-disable-line
811
-  for (let i = 0; i < this.length; i += 1) {
812
-    const childNodes = this[i].childNodes;
813
-
814
-    for (let j = 0; j < childNodes.length; j += 1) {
815
-      if (!selector) {
816
-        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);
817
-      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
818
-        children.push(childNodes[j]);
819
-      }
820
-    }
821
-  }
822
-  return new Dom7(unique(children));
823
-}
824
-function remove() {
825
-  for (let i = 0; i < this.length; i += 1) {
826
-    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
827
-  }
828
-  return this;
829
-}
830
-function add(...args) {
831
-  const dom = this;
832
-  let i;
833
-  let j;
834
-  for (i = 0; i < args.length; i += 1) {
835
-    const toAdd = $(args[i]);
836
-    for (j = 0; j < toAdd.length; j += 1) {
837
-      dom[dom.length] = toAdd[j];
838
-      dom.length += 1;
839
-    }
840
-  }
841
-  return dom;
842
-}
843
-
844
-const Methods = {
845
-  addClass,
846
-  removeClass,
847
-  hasClass,
848
-  toggleClass,
849
-  attr,
850
-  removeAttr,
851
-  data,
852
-  transform,
853
-  transition,
854
-  on,
855
-  off,
856
-  trigger,
857
-  transitionEnd,
858
-  outerWidth,
859
-  outerHeight,
860
-  offset,
861
-  css,
862
-  each,
863
-  html,
864
-  text,
865
-  is,
866
-  index,
867
-  eq,
868
-  append,
869
-  prepend,
870
-  next,
871
-  nextAll,
872
-  prev,
873
-  prevAll,
874
-  parent,
875
-  parents,
876
-  closest,
877
-  find,
878
-  children,
879
-  filter,
880
-  remove,
881
-  add,
882
-  styles,
883
-};
884
-
885
-Object.keys(Methods).forEach((methodName) => {
886
-  $.fn[methodName] = $.fn[methodName] || Methods[methodName];
887
-});
888
-
889
-const Utils = {
890
-  deleteProps(obj) {
891
-    const object = obj;
892
-    Object.keys(object).forEach((key) => {
893
-      try {
894
-        object[key] = null;
895
-      } catch (e) {
896
-        // no getter for object
897
-      }
898
-      try {
899
-        delete object[key];
900
-      } catch (e) {
901
-        // something got wrong
902
-      }
903
-    });
904
-  },
905
-  nextTick(callback, delay = 0) {
906
-    return setTimeout(callback, delay);
907
-  },
908
-  now() {
909
-    return Date.now();
910
-  },
911
-  getTranslate(el, axis = 'x') {
912
-    let matrix;
913
-    let curTransform;
914
-    let transformMatrix;
915
-
916
-    const curStyle = win.getComputedStyle(el, null);
917
-
918
-    if (win.WebKitCSSMatrix) {
919
-      curTransform = curStyle.transform || curStyle.webkitTransform;
920
-      if (curTransform.split(',').length > 6) {
921
-        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');
922
-      }
923
-      // Some old versions of Webkit choke when 'none' is passed; pass
924
-      // empty string instead in this case
925
-      transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
926
-    } else {
927
-      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
928
-      matrix = transformMatrix.toString().split(',');
929
-    }
930
-
931
-    if (axis === 'x') {
932
-      // Latest Chrome and webkits Fix
933
-      if (win.WebKitCSSMatrix) curTransform = transformMatrix.m41;
934
-      // Crazy IE10 Matrix
935
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
936
-      // Normal Browsers
937
-      else curTransform = parseFloat(matrix[4]);
938
-    }
939
-    if (axis === 'y') {
940
-      // Latest Chrome and webkits Fix
941
-      if (win.WebKitCSSMatrix) curTransform = transformMatrix.m42;
942
-      // Crazy IE10 Matrix
943
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
944
-      // Normal Browsers
945
-      else curTransform = parseFloat(matrix[5]);
946
-    }
947
-    return curTransform || 0;
948
-  },
949
-  parseUrlQuery(url) {
950
-    const query = {};
951
-    let urlToParse = url || win.location.href;
952
-    let i;
953
-    let params;
954
-    let param;
955
-    let length;
956
-    if (typeof urlToParse === 'string' && urlToParse.length) {
957
-      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
958
-      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');
959
-      length = params.length;
960
-
961
-      for (i = 0; i < length; i += 1) {
962
-        param = params[i].replace(/#\S+/g, '').split('=');
963
-        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
964
-      }
965
-    }
966
-    return query;
967
-  },
968
-  isObject(o) {
969
-    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
970
-  },
971
-  extend(...args) {
972
-    const to = Object(args[0]);
973
-    for (let i = 1; i < args.length; i += 1) {
974
-      const nextSource = args[i];
975
-      if (nextSource !== undefined && nextSource !== null) {
976
-        const keysArray = Object.keys(Object(nextSource));
977
-        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
978
-          const nextKey = keysArray[nextIndex];
979
-          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
980
-          if (desc !== undefined && desc.enumerable) {
981
-            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
982
-              Utils.extend(to[nextKey], nextSource[nextKey]);
983
-            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
984
-              to[nextKey] = {};
985
-              Utils.extend(to[nextKey], nextSource[nextKey]);
986
-            } else {
987
-              to[nextKey] = nextSource[nextKey];
988
-            }
989
-          }
990
-        }
991
-      }
992
-    }
993
-    return to;
994
-  },
995
-};
996
-
997
-const Support = (function Support() {
998
-  return {
999
-    touch: !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)),
1000
-
1001
-    pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints >= 0,
1002
-
1003
-    observer: (function checkObserver() {
1004
-      return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
1005
-    }()),
1006
-
1007
-    passiveListener: (function checkPassiveListener() {
1008
-      let supportsPassive = false;
1009
-      try {
1010
-        const opts = Object.defineProperty({}, 'passive', {
1011
-          // eslint-disable-next-line
1012
-          get() {
1013
-            supportsPassive = true;
1014
-          },
1015
-        });
1016
-        win.addEventListener('testPassiveListener', null, opts);
1017
-      } catch (e) {
1018
-        // No support
1019
-      }
1020
-      return supportsPassive;
1021
-    }()),
1022
-
1023
-    gestures: (function checkGestures() {
1024
-      return 'ongesturestart' in win;
1025
-    }()),
1026
-  };
1027
-}());
1028
-
1029
-class SwiperClass {
1030
-  constructor(params = {}) {
1031
-    const self = this;
1032
-    self.params = params;
1033
-
1034
-    // Events
1035
-    self.eventsListeners = {};
1036
-
1037
-    if (self.params && self.params.on) {
1038
-      Object.keys(self.params.on).forEach((eventName) => {
1039
-        self.on(eventName, self.params.on[eventName]);
1040
-      });
1041
-    }
1042
-  }
1043
-
1044
-  on(events, handler, priority) {
1045
-    const self = this;
1046
-    if (typeof handler !== 'function') return self;
1047
-    const method = priority ? 'unshift' : 'push';
1048
-    events.split(' ').forEach((event) => {
1049
-      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
1050
-      self.eventsListeners[event][method](handler);
1051
-    });
1052
-    return self;
1053
-  }
1054
-
1055
-  once(events, handler, priority) {
1056
-    const self = this;
1057
-    if (typeof handler !== 'function') return self;
1058
-    function onceHandler(...args) {
1059
-      self.off(events, onceHandler);
1060
-      if (onceHandler.f7proxy) {
1061
-        delete onceHandler.f7proxy;
1062
-      }
1063
-      handler.apply(self, args);
1064
-    }
1065
-    onceHandler.f7proxy = handler;
1066
-    return self.on(events, onceHandler, priority);
1067
-  }
1068
-
1069
-  off(events, handler) {
1070
-    const self = this;
1071
-    if (!self.eventsListeners) return self;
1072
-    events.split(' ').forEach((event) => {
1073
-      if (typeof handler === 'undefined') {
1074
-        self.eventsListeners[event] = [];
1075
-      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
1076
-        self.eventsListeners[event].forEach((eventHandler, index) => {
1077
-          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
1078
-            self.eventsListeners[event].splice(index, 1);
1079
-          }
1080
-        });
1081
-      }
1082
-    });
1083
-    return self;
1084
-  }
1085
-
1086
-  emit(...args) {
1087
-    const self = this;
1088
-    if (!self.eventsListeners) return self;
1089
-    let events;
1090
-    let data;
1091
-    let context;
1092
-    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1093
-      events = args[0];
1094
-      data = args.slice(1, args.length);
1095
-      context = self;
1096
-    } else {
1097
-      events = args[0].events;
1098
-      data = args[0].data;
1099
-      context = args[0].context || self;
1100
-    }
1101
-    const eventsArray = Array.isArray(events) ? events : events.split(' ');
1102
-    eventsArray.forEach((event) => {
1103
-      if (self.eventsListeners && self.eventsListeners[event]) {
1104
-        const handlers = [];
1105
-        self.eventsListeners[event].forEach((eventHandler) => {
1106
-          handlers.push(eventHandler);
1107
-        });
1108
-        handlers.forEach((eventHandler) => {
1109
-          eventHandler.apply(context, data);
1110
-        });
1111
-      }
1112
-    });
1113
-    return self;
1114
-  }
1115
-
1116
-  useModulesParams(instanceParams) {
1117
-    const instance = this;
1118
-    if (!instance.modules) return;
1119
-    Object.keys(instance.modules).forEach((moduleName) => {
1120
-      const module = instance.modules[moduleName];
1121
-      // Extend params
1122
-      if (module.params) {
1123
-        Utils.extend(instanceParams, module.params);
1124
-      }
1125
-    });
1126
-  }
1127
-
1128
-  useModules(modulesParams = {}) {
1129
-    const instance = this;
1130
-    if (!instance.modules) return;
1131
-    Object.keys(instance.modules).forEach((moduleName) => {
1132
-      const module = instance.modules[moduleName];
1133
-      const moduleParams = modulesParams[moduleName] || {};
1134
-      // Extend instance methods and props
1135
-      if (module.instance) {
1136
-        Object.keys(module.instance).forEach((modulePropName) => {
1137
-          const moduleProp = module.instance[modulePropName];
1138
-          if (typeof moduleProp === 'function') {
1139
-            instance[modulePropName] = moduleProp.bind(instance);
1140
-          } else {
1141
-            instance[modulePropName] = moduleProp;
1142
-          }
1143
-        });
1144
-      }
1145
-      // Add event listeners
1146
-      if (module.on && instance.on) {
1147
-        Object.keys(module.on).forEach((moduleEventName) => {
1148
-          instance.on(moduleEventName, module.on[moduleEventName]);
1149
-        });
1150
-      }
1151
-
1152
-      // Module create callback
1153
-      if (module.create) {
1154
-        module.create.bind(instance)(moduleParams);
1155
-      }
1156
-    });
1157
-  }
1158
-
1159
-  static set components(components) {
1160
-    const Class = this;
1161
-    if (!Class.use) return;
1162
-    Class.use(components);
1163
-  }
1164
-
1165
-  static installModule(module, ...params) {
1166
-    const Class = this;
1167
-    if (!Class.prototype.modules) Class.prototype.modules = {};
1168
-    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);
1169
-    Class.prototype.modules[name] = module;
1170
-    // Prototype
1171
-    if (module.proto) {
1172
-      Object.keys(module.proto).forEach((key) => {
1173
-        Class.prototype[key] = module.proto[key];
1174
-      });
1175
-    }
1176
-    // Class
1177
-    if (module.static) {
1178
-      Object.keys(module.static).forEach((key) => {
1179
-        Class[key] = module.static[key];
1180
-      });
1181
-    }
1182
-    // Callback
1183
-    if (module.install) {
1184
-      module.install.apply(Class, params);
1185
-    }
1186
-    return Class;
1187
-  }
1188
-
1189
-  static use(module, ...params) {
1190
-    const Class = this;
1191
-    if (Array.isArray(module)) {
1192
-      module.forEach((m) => Class.installModule(m));
1193
-      return Class;
1194
-    }
1195
-    return Class.installModule(module, ...params);
1196
-  }
1197
-}
1198
-
1199
-function updateSize () {
1200
-  const swiper = this;
1201
-  let width;
1202
-  let height;
1203
-  const $el = swiper.$el;
1204
-  if (typeof swiper.params.width !== 'undefined') {
1205
-    width = swiper.params.width;
1206
-  } else {
1207
-    width = $el[0].clientWidth;
1208
-  }
1209
-  if (typeof swiper.params.height !== 'undefined') {
1210
-    height = swiper.params.height;
1211
-  } else {
1212
-    height = $el[0].clientHeight;
1213
-  }
1214
-  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
1215
-    return;
1216
-  }
1217
-
1218
-  // Subtract paddings
1219
-  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
1220
-  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
1221
-
1222
-  Utils.extend(swiper, {
1223
-    width,
1224
-    height,
1225
-    size: swiper.isHorizontal() ? width : height,
1226
-  });
1227
-}
1228
-
1229
-function updateSlides () {
1230
-  const swiper = this;
1231
-  const params = swiper.params;
1232
-
1233
-  const {
1234
-    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
1235
-  } = swiper;
1236
-  const isVirtual = swiper.virtual && params.virtual.enabled;
1237
-  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1238
-  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
1239
-  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1240
-  let snapGrid = [];
1241
-  const slidesGrid = [];
1242
-  const slidesSizesGrid = [];
1243
-
1244
-  function slidesForMargin(slideIndex) {
1245
-    if (!params.cssMode) return true;
1246
-    if (slideIndex === slides.length - 1) {
1247
-      return false;
1248
-    }
1249
-    return true;
1250
-  }
1251
-
1252
-  let offsetBefore = params.slidesOffsetBefore;
1253
-  if (typeof offsetBefore === 'function') {
1254
-    offsetBefore = params.slidesOffsetBefore.call(swiper);
1255
-  }
1256
-
1257
-  let offsetAfter = params.slidesOffsetAfter;
1258
-  if (typeof offsetAfter === 'function') {
1259
-    offsetAfter = params.slidesOffsetAfter.call(swiper);
1260
-  }
1261
-
1262
-  const previousSnapGridLength = swiper.snapGrid.length;
1263
-  const previousSlidesGridLength = swiper.snapGrid.length;
1264
-
1265
-  let spaceBetween = params.spaceBetween;
1266
-  let slidePosition = -offsetBefore;
1267
-  let prevSlideSize = 0;
1268
-  let index = 0;
1269
-  if (typeof swiperSize === 'undefined') {
1270
-    return;
1271
-  }
1272
-  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1273
-    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
1274
-  }
1275
-
1276
-  swiper.virtualSize = -spaceBetween;
1277
-
1278
-  // reset margins
1279
-  if (rtl) slides.css({ marginLeft: '', marginTop: '' });
1280
-  else slides.css({ marginRight: '', marginBottom: '' });
1281
-
1282
-  let slidesNumberEvenToRows;
1283
-  if (params.slidesPerColumn > 1) {
1284
-    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1285
-      slidesNumberEvenToRows = slidesLength;
1286
-    } else {
1287
-      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1288
-    }
1289
-    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1290
-      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1291
-    }
1292
-  }
1293
-
1294
-  // Calc slides
1295
-  let slideSize;
1296
-  const slidesPerColumn = params.slidesPerColumn;
1297
-  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1298
-  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1299
-  for (let i = 0; i < slidesLength; i += 1) {
1300
-    slideSize = 0;
1301
-    const slide = slides.eq(i);
1302
-    if (params.slidesPerColumn > 1) {
1303
-      // Set slides order
1304
-      let newSlideOrderIndex;
1305
-      let column;
1306
-      let row;
1307
-      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1308
-        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1309
-        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1310
-        const columnsInGroup = groupIndex === 0
1311
-          ? params.slidesPerGroup
1312
-          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1313
-        row = Math.floor(slideIndexInGroup / columnsInGroup);
1314
-        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
1315
-
1316
-        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
1317
-        slide
1318
-          .css({
1319
-            '-webkit-box-ordinal-group': newSlideOrderIndex,
1320
-            '-moz-box-ordinal-group': newSlideOrderIndex,
1321
-            '-ms-flex-order': newSlideOrderIndex,
1322
-            '-webkit-order': newSlideOrderIndex,
1323
-            order: newSlideOrderIndex,
1324
-          });
1325
-      } else if (params.slidesPerColumnFill === 'column') {
1326
-        column = Math.floor(i / slidesPerColumn);
1327
-        row = i - (column * slidesPerColumn);
1328
-        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
1329
-          row += 1;
1330
-          if (row >= slidesPerColumn) {
1331
-            row = 0;
1332
-            column += 1;
1333
-          }
1334
-        }
1335
-      } else {
1336
-        row = Math.floor(i / slidesPerRow);
1337
-        column = i - (row * slidesPerRow);
1338
-      }
1339
-      slide.css(
1340
-        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,
1341
-        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)
1342
-      );
1343
-    }
1344
-    if (slide.css('display') === 'none') continue; // eslint-disable-line
1345
-
1346
-    if (params.slidesPerView === 'auto') {
1347
-      const slideStyles = win.getComputedStyle(slide[0], null);
1348
-      const currentTransform = slide[0].style.transform;
1349
-      const currentWebKitTransform = slide[0].style.webkitTransform;
1350
-      if (currentTransform) {
1351
-        slide[0].style.transform = 'none';
1352
-      }
1353
-      if (currentWebKitTransform) {
1354
-        slide[0].style.webkitTransform = 'none';
1355
-      }
1356
-      if (params.roundLengths) {
1357
-        slideSize = swiper.isHorizontal()
1358
-          ? slide.outerWidth(true)
1359
-          : slide.outerHeight(true);
1360
-      } else {
1361
-        // eslint-disable-next-line
1362
-        if (swiper.isHorizontal()) {
1363
-          const width = parseFloat(slideStyles.getPropertyValue('width'));
1364
-          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
1365
-          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
1366
-          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
1367
-          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
1368
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
1369
-          if (boxSizing && boxSizing === 'border-box') {
1370
-            slideSize = width + marginLeft + marginRight;
1371
-          } else {
1372
-            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
1373
-          }
1374
-        } else {
1375
-          const height = parseFloat(slideStyles.getPropertyValue('height'));
1376
-          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
1377
-          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
1378
-          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
1379
-          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
1380
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
1381
-          if (boxSizing && boxSizing === 'border-box') {
1382
-            slideSize = height + marginTop + marginBottom;
1383
-          } else {
1384
-            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
1385
-          }
1386
-        }
1387
-      }
1388
-      if (currentTransform) {
1389
-        slide[0].style.transform = currentTransform;
1390
-      }
1391
-      if (currentWebKitTransform) {
1392
-        slide[0].style.webkitTransform = currentWebKitTransform;
1393
-      }
1394
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
1395
-    } else {
1396
-      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
1397
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
1398
-
1399
-      if (slides[i]) {
1400
-        if (swiper.isHorizontal()) {
1401
-          slides[i].style.width = `${slideSize}px`;
1402
-        } else {
1403
-          slides[i].style.height = `${slideSize}px`;
1404
-        }
1405
-      }
1406
-    }
1407
-    if (slides[i]) {
1408
-      slides[i].swiperSlideSize = slideSize;
1409
-    }
1410
-    slidesSizesGrid.push(slideSize);
1411
-
1412
-
1413
-    if (params.centeredSlides) {
1414
-      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
1415
-      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
1416
-      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
1417
-      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
1418
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1419
-      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1420
-      slidesGrid.push(slidePosition);
1421
-    } else {
1422
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1423
-      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1424
-      slidesGrid.push(slidePosition);
1425
-      slidePosition = slidePosition + slideSize + spaceBetween;
1426
-    }
1427
-
1428
-    swiper.virtualSize += slideSize + spaceBetween;
1429
-
1430
-    prevSlideSize = slideSize;
1431
-
1432
-    index += 1;
1433
-  }
1434
-  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1435
-  let newSlidesGrid;
1436
-
1437
-  if (
1438
-    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1439
-    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
1440
-  }
1441
-  if (params.setWrapperSize) {
1442
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
1443
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
1444
-  }
1445
-
1446
-  if (params.slidesPerColumn > 1) {
1447
-    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1448
-    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1449
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
1450
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
1451
-    if (params.centeredSlides) {
1452
-      newSlidesGrid = [];
1453
-      for (let i = 0; i < snapGrid.length; i += 1) {
1454
-        let slidesGridItem = snapGrid[i];
1455
-        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
1456
-        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
1457
-      }
1458
-      snapGrid = newSlidesGrid;
1459
-    }
1460
-  }
1461
-
1462
-  // Remove last grid elements depending on width
1463
-  if (!params.centeredSlides) {
1464
-    newSlidesGrid = [];
1465
-    for (let i = 0; i < snapGrid.length; i += 1) {
1466
-      let slidesGridItem = snapGrid[i];
1467
-      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
1468
-      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1469
-        newSlidesGrid.push(slidesGridItem);
1470
-      }
1471
-    }
1472
-    snapGrid = newSlidesGrid;
1473
-    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
1474
-      snapGrid.push(swiper.virtualSize - swiperSize);
1475
-    }
1476
-  }
1477
-  if (snapGrid.length === 0) snapGrid = [0];
1478
-
1479
-  if (params.spaceBetween !== 0) {
1480
-    if (swiper.isHorizontal()) {
1481
-      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });
1482
-      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });
1483
-    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });
1484
-  }
1485
-
1486
-  if (params.centeredSlides && params.centeredSlidesBounds) {
1487
-    let allSlidesSize = 0;
1488
-    slidesSizesGrid.forEach((slideSizeValue) => {
1489
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1490
-    });
1491
-    allSlidesSize -= params.spaceBetween;
1492
-    const maxSnap = allSlidesSize - swiperSize;
1493
-    snapGrid = snapGrid.map((snap) => {
1494
-      if (snap < 0) return -offsetBefore;
1495
-      if (snap > maxSnap) return maxSnap + offsetAfter;
1496
-      return snap;
1497
-    });
1498
-  }
1499
-
1500
-  if (params.centerInsufficientSlides) {
1501
-    let allSlidesSize = 0;
1502
-    slidesSizesGrid.forEach((slideSizeValue) => {
1503
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1504
-    });
1505
-    allSlidesSize -= params.spaceBetween;
1506
-    if (allSlidesSize < swiperSize) {
1507
-      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1508
-      snapGrid.forEach((snap, snapIndex) => {
1509
-        snapGrid[snapIndex] = snap - allSlidesOffset;
1510
-      });
1511
-      slidesGrid.forEach((snap, snapIndex) => {
1512
-        slidesGrid[snapIndex] = snap + allSlidesOffset;
1513
-      });
1514
-    }
1515
-  }
1516
-
1517
-  Utils.extend(swiper, {
1518
-    slides,
1519
-    snapGrid,
1520
-    slidesGrid,
1521
-    slidesSizesGrid,
1522
-  });
1523
-
1524
-  if (slidesLength !== previousSlidesLength) {
1525
-    swiper.emit('slidesLengthChange');
1526
-  }
1527
-  if (snapGrid.length !== previousSnapGridLength) {
1528
-    if (swiper.params.watchOverflow) swiper.checkOverflow();
1529
-    swiper.emit('snapGridLengthChange');
1530
-  }
1531
-  if (slidesGrid.length !== previousSlidesGridLength) {
1532
-    swiper.emit('slidesGridLengthChange');
1533
-  }
1534
-
1535
-  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
1536
-    swiper.updateSlidesOffset();
1537
-  }
1538
-}
1539
-
1540
-function updateAutoHeight (speed) {
1541
-  const swiper = this;
1542
-  const activeSlides = [];
1543
-  let newHeight = 0;
1544
-  let i;
1545
-  if (typeof speed === 'number') {
1546
-    swiper.setTransition(speed);
1547
-  } else if (speed === true) {
1548
-    swiper.setTransition(swiper.params.speed);
1549
-  }
1550
-  // Find slides currently in view
1551
-  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
1552
-    if (swiper.params.centeredSlides) {
1553
-      swiper.visibleSlides.each((index, slide) => {
1554
-        activeSlides.push(slide);
1555
-      });
1556
-    } else {
1557
-      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1558
-        const index = swiper.activeIndex + i;
1559
-        if (index > swiper.slides.length) break;
1560
-        activeSlides.push(swiper.slides.eq(index)[0]);
1561
-      }
1562
-    }
1563
-  } else {
1564
-    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
1565
-  }
1566
-
1567
-  // Find new height from highest slide in view
1568
-  for (i = 0; i < activeSlides.length; i += 1) {
1569
-    if (typeof activeSlides[i] !== 'undefined') {
1570
-      const height = activeSlides[i].offsetHeight;
1571
-      newHeight = height > newHeight ? height : newHeight;
1572
-    }
1573
-  }
1574
-
1575
-  // Update Height
1576
-  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);
1577
-}
1578
-
1579
-function updateSlidesOffset () {
1580
-  const swiper = this;
1581
-  const slides = swiper.slides;
1582
-  for (let i = 0; i < slides.length; i += 1) {
1583
-    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
1584
-  }
1585
-}
1586
-
1587
-function updateSlidesProgress (translate = (this && this.translate) || 0) {
1588
-  const swiper = this;
1589
-  const params = swiper.params;
1590
-
1591
-  const { slides, rtlTranslate: rtl } = swiper;
1592
-
1593
-  if (slides.length === 0) return;
1594
-  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
1595
-
1596
-  let offsetCenter = -translate;
1597
-  if (rtl) offsetCenter = translate;
1598
-
1599
-  // Visible Slides
1600
-  slides.removeClass(params.slideVisibleClass);
1601
-
1602
-  swiper.visibleSlidesIndexes = [];
1603
-  swiper.visibleSlides = [];
1604
-
1605
-  for (let i = 0; i < slides.length; i += 1) {
1606
-    const slide = slides[i];
1607
-    const slideProgress = (
1608
-      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
1609
-    ) / (slide.swiperSlideSize + params.spaceBetween);
1610
-    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
1611
-      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);
1612
-      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
1613
-      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
1614
-                || (slideAfter > 1 && slideAfter <= swiper.size)
1615
-                || (slideBefore <= 0 && slideAfter >= swiper.size);
1616
-      if (isVisible) {
1617
-        swiper.visibleSlides.push(slide);
1618
-        swiper.visibleSlidesIndexes.push(i);
1619
-        slides.eq(i).addClass(params.slideVisibleClass);
1620
-      }
1621
-    }
1622
-    slide.progress = rtl ? -slideProgress : slideProgress;
1623
-  }
1624
-  swiper.visibleSlides = $(swiper.visibleSlides);
1625
-}
1626
-
1627
-function updateProgress (translate) {
1628
-  const swiper = this;
1629
-  if (typeof translate === 'undefined') {
1630
-    const multiplier = swiper.rtlTranslate ? -1 : 1;
1631
-    // eslint-disable-next-line
1632
-    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
1633
-  }
1634
-  const params = swiper.params;
1635
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1636
-  let { progress, isBeginning, isEnd } = swiper;
1637
-  const wasBeginning = isBeginning;
1638
-  const wasEnd = isEnd;
1639
-  if (translatesDiff === 0) {
1640
-    progress = 0;
1641
-    isBeginning = true;
1642
-    isEnd = true;
1643
-  } else {
1644
-    progress = (translate - swiper.minTranslate()) / (translatesDiff);
1645
-    isBeginning = progress <= 0;
1646
-    isEnd = progress >= 1;
1647
-  }
1648
-  Utils.extend(swiper, {
1649
-    progress,
1650
-    isBeginning,
1651
-    isEnd,
1652
-  });
1653
-
1654
-  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);
1655
-
1656
-  if (isBeginning && !wasBeginning) {
1657
-    swiper.emit('reachBeginning toEdge');
1658
-  }
1659
-  if (isEnd && !wasEnd) {
1660
-    swiper.emit('reachEnd toEdge');
1661
-  }
1662
-  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
1663
-    swiper.emit('fromEdge');
1664
-  }
1665
-
1666
-  swiper.emit('progress', progress);
1667
-}
1668
-
1669
-function updateSlidesClasses () {
1670
-  const swiper = this;
1671
-
1672
-  const {
1673
-    slides, params, $wrapperEl, activeIndex, realIndex,
1674
-  } = swiper;
1675
-  const isVirtual = swiper.virtual && params.virtual.enabled;
1676
-
1677
-  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
1678
-
1679
-  let activeSlide;
1680
-  if (isVirtual) {
1681
-    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
1682
-  } else {
1683
-    activeSlide = slides.eq(activeIndex);
1684
-  }
1685
-
1686
-  // Active classes
1687
-  activeSlide.addClass(params.slideActiveClass);
1688
-
1689
-  if (params.loop) {
1690
-    // Duplicate to all looped slides
1691
-    if (activeSlide.hasClass(params.slideDuplicateClass)) {
1692
-      $wrapperEl
1693
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`)
1694
-        .addClass(params.slideDuplicateActiveClass);
1695
-    } else {
1696
-      $wrapperEl
1697
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`)
1698
-        .addClass(params.slideDuplicateActiveClass);
1699
-    }
1700
-  }
1701
-  // Next Slide
1702
-  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
1703
-  if (params.loop && nextSlide.length === 0) {
1704
-    nextSlide = slides.eq(0);
1705
-    nextSlide.addClass(params.slideNextClass);
1706
-  }
1707
-  // Prev Slide
1708
-  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
1709
-  if (params.loop && prevSlide.length === 0) {
1710
-    prevSlide = slides.eq(-1);
1711
-    prevSlide.addClass(params.slidePrevClass);
1712
-  }
1713
-  if (params.loop) {
1714
-    // Duplicate to all looped slides
1715
-    if (nextSlide.hasClass(params.slideDuplicateClass)) {
1716
-      $wrapperEl
1717
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
1718
-        .addClass(params.slideDuplicateNextClass);
1719
-    } else {
1720
-      $wrapperEl
1721
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
1722
-        .addClass(params.slideDuplicateNextClass);
1723
-    }
1724
-    if (prevSlide.hasClass(params.slideDuplicateClass)) {
1725
-      $wrapperEl
1726
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
1727
-        .addClass(params.slideDuplicatePrevClass);
1728
-    } else {
1729
-      $wrapperEl
1730
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
1731
-        .addClass(params.slideDuplicatePrevClass);
1732
-    }
1733
-  }
1734
-}
1735
-
1736
-function updateActiveIndex (newActiveIndex) {
1737
-  const swiper = this;
1738
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1739
-  const {
1740
-    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,
1741
-  } = swiper;
1742
-  let activeIndex = newActiveIndex;
1743
-  let snapIndex;
1744
-  if (typeof activeIndex === 'undefined') {
1745
-    for (let i = 0; i < slidesGrid.length; i += 1) {
1746
-      if (typeof slidesGrid[i + 1] !== 'undefined') {
1747
-        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
1748
-          activeIndex = i;
1749
-        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
1750
-          activeIndex = i + 1;
1751
-        }
1752
-      } else if (translate >= slidesGrid[i]) {
1753
-        activeIndex = i;
1754
-      }
1755
-    }
1756
-    // Normalize slideIndex
1757
-    if (params.normalizeSlideIndex) {
1758
-      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
1759
-    }
1760
-  }
1761
-  if (snapGrid.indexOf(translate) >= 0) {
1762
-    snapIndex = snapGrid.indexOf(translate);
1763
-  } else {
1764
-    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
1765
-    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
1766
-  }
1767
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
1768
-  if (activeIndex === previousIndex) {
1769
-    if (snapIndex !== previousSnapIndex) {
1770
-      swiper.snapIndex = snapIndex;
1771
-      swiper.emit('snapIndexChange');
1772
-    }
1773
-    return;
1774
-  }
1775
-
1776
-  // Get real index
1777
-  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
1778
-
1779
-  Utils.extend(swiper, {
1780
-    snapIndex,
1781
-    realIndex,
1782
-    previousIndex,
1783
-    activeIndex,
1784
-  });
1785
-  swiper.emit('activeIndexChange');
1786
-  swiper.emit('snapIndexChange');
1787
-  if (previousRealIndex !== realIndex) {
1788
-    swiper.emit('realIndexChange');
1789
-  }
1790
-  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
1791
-    swiper.emit('slideChange');
1792
-  }
1793
-}
1794
-
1795
-function updateClickedSlide (e) {
1796
-  const swiper = this;
1797
-  const params = swiper.params;
1798
-  const slide = $(e.target).closest(`.${params.slideClass}`)[0];
1799
-  let slideFound = false;
1800
-  if (slide) {
1801
-    for (let i = 0; i < swiper.slides.length; i += 1) {
1802
-      if (swiper.slides[i] === slide) slideFound = true;
1803
-    }
1804
-  }
1805
-
1806
-  if (slide && slideFound) {
1807
-    swiper.clickedSlide = slide;
1808
-    if (swiper.virtual && swiper.params.virtual.enabled) {
1809
-      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
1810
-    } else {
1811
-      swiper.clickedIndex = $(slide).index();
1812
-    }
1813
-  } else {
1814
-    swiper.clickedSlide = undefined;
1815
-    swiper.clickedIndex = undefined;
1816
-    return;
1817
-  }
1818
-  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
1819
-    swiper.slideToClickedSlide();
1820
-  }
1821
-}
1822
-
1823
-var update = {
1824
-  updateSize,
1825
-  updateSlides,
1826
-  updateAutoHeight,
1827
-  updateSlidesOffset,
1828
-  updateSlidesProgress,
1829
-  updateProgress,
1830
-  updateSlidesClasses,
1831
-  updateActiveIndex,
1832
-  updateClickedSlide,
1833
-};
1834
-
1835
-function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {
1836
-  const swiper = this;
1837
-
1838
-  const {
1839
-    params, rtlTranslate: rtl, translate, $wrapperEl,
1840
-  } = swiper;
1841
-
1842
-  if (params.virtualTranslate) {
1843
-    return rtl ? -translate : translate;
1844
-  }
1845
-  if (params.cssMode) {
1846
-    return translate;
1847
-  }
1848
-
1849
-  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
1850
-  if (rtl) currentTranslate = -currentTranslate;
1851
-
1852
-  return currentTranslate || 0;
1853
-}
1854
-
1855
-function setTranslate (translate, byController) {
1856
-  const swiper = this;
1857
-  const {
1858
-    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,
1859
-  } = swiper;
1860
-  let x = 0;
1861
-  let y = 0;
1862
-  const z = 0;
1863
-
1864
-  if (swiper.isHorizontal()) {
1865
-    x = rtl ? -translate : translate;
1866
-  } else {
1867
-    y = translate;
1868
-  }
1869
-
1870
-  if (params.roundLengths) {
1871
-    x = Math.floor(x);
1872
-    y = Math.floor(y);
1873
-  }
1874
-
1875
-  if (params.cssMode) {
1876
-    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
1877
-  } else if (!params.virtualTranslate) {
1878
-    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
1879
-  }
1880
-  swiper.previousTranslate = swiper.translate;
1881
-  swiper.translate = swiper.isHorizontal() ? x : y;
1882
-
1883
-  // Check if we need to update progress
1884
-  let newProgress;
1885
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1886
-  if (translatesDiff === 0) {
1887
-    newProgress = 0;
1888
-  } else {
1889
-    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
1890
-  }
1891
-  if (newProgress !== progress) {
1892
-    swiper.updateProgress(translate);
1893
-  }
1894
-
1895
-  swiper.emit('setTranslate', swiper.translate, byController);
1896
-}
1897
-
1898
-function minTranslate () {
1899
-  return (-this.snapGrid[0]);
1900
-}
1901
-
1902
-function maxTranslate () {
1903
-  return (-this.snapGrid[this.snapGrid.length - 1]);
1904
-}
1905
-
1906
-function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1907
-  const swiper = this;
1908
-
1909
-  const {
1910
-    params,
1911
-    wrapperEl,
1912
-  } = swiper;
1913
-
1914
-  if (swiper.animating && params.preventInteractionOnTransition) {
1915
-    return false;
1916
-  }
1917
-
1918
-  const minTranslate = swiper.minTranslate();
1919
-  const maxTranslate = swiper.maxTranslate();
1920
-  let newTranslate;
1921
-  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
1922
-  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
1923
-  else newTranslate = translate;
1924
-
1925
-  // Update progress
1926
-  swiper.updateProgress(newTranslate);
1927
-
1928
-  if (params.cssMode) {
1929
-    const isH = swiper.isHorizontal();
1930
-    if (speed === 0) {
1931
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1932
-    } else {
1933
-      // eslint-disable-next-line
1934
-      if (wrapperEl.scrollTo) {
1935
-        wrapperEl.scrollTo({
1936
-          [isH ? 'left' : 'top']: -newTranslate,
1937
-          behavior: 'smooth',
1938
-        });
1939
-      } else {
1940
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1941
-      }
1942
-    }
1943
-    return true;
1944
-  }
1945
-
1946
-  if (speed === 0) {
1947
-    swiper.setTransition(0);
1948
-    swiper.setTranslate(newTranslate);
1949
-    if (runCallbacks) {
1950
-      swiper.emit('beforeTransitionStart', speed, internal);
1951
-      swiper.emit('transitionEnd');
1952
-    }
1953
-  } else {
1954
-    swiper.setTransition(speed);
1955
-    swiper.setTranslate(newTranslate);
1956
-    if (runCallbacks) {
1957
-      swiper.emit('beforeTransitionStart', speed, internal);
1958
-      swiper.emit('transitionStart');
1959
-    }
1960
-    if (!swiper.animating) {
1961
-      swiper.animating = true;
1962
-      if (!swiper.onTranslateToWrapperTransitionEnd) {
1963
-        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
1964
-          if (!swiper || swiper.destroyed) return;
1965
-          if (e.target !== this) return;
1966
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1967
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1968
-          swiper.onTranslateToWrapperTransitionEnd = null;
1969
-          delete swiper.onTranslateToWrapperTransitionEnd;
1970
-          if (runCallbacks) {
1971
-            swiper.emit('transitionEnd');
1972
-          }
1973
-        };
1974
-      }
1975
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1976
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1977
-    }
1978
-  }
1979
-
1980
-  return true;
1981
-}
1982
-
1983
-var translate = {
1984
-  getTranslate,
1985
-  setTranslate,
1986
-  minTranslate,
1987
-  maxTranslate,
1988
-  translateTo,
1989
-};
1990
-
1991
-function setTransition (duration, byController) {
1992
-  const swiper = this;
1993
-
1994
-  if (!swiper.params.cssMode) {
1995
-    swiper.$wrapperEl.transition(duration);
1996
-  }
1997
-
1998
-  swiper.emit('setTransition', duration, byController);
1999
-}
2000
-
2001
-function transitionStart (runCallbacks = true, direction) {
2002
-  const swiper = this;
2003
-  const { activeIndex, params, previousIndex } = swiper;
2004
-  if (params.cssMode) return;
2005
-  if (params.autoHeight) {
2006
-    swiper.updateAutoHeight();
2007
-  }
2008
-
2009
-  let dir = direction;
2010
-  if (!dir) {
2011
-    if (activeIndex > previousIndex) dir = 'next';
2012
-    else if (activeIndex < previousIndex) dir = 'prev';
2013
-    else dir = 'reset';
2014
-  }
2015
-
2016
-  swiper.emit('transitionStart');
2017
-
2018
-  if (runCallbacks && activeIndex !== previousIndex) {
2019
-    if (dir === 'reset') {
2020
-      swiper.emit('slideResetTransitionStart');
2021
-      return;
2022
-    }
2023
-    swiper.emit('slideChangeTransitionStart');
2024
-    if (dir === 'next') {
2025
-      swiper.emit('slideNextTransitionStart');
2026
-    } else {
2027
-      swiper.emit('slidePrevTransitionStart');
2028
-    }
2029
-  }
2030
-}
2031
-
2032
-function transitionEnd$1 (runCallbacks = true, direction) {
2033
-  const swiper = this;
2034
-  const { activeIndex, previousIndex, params } = swiper;
2035
-  swiper.animating = false;
2036
-  if (params.cssMode) return;
2037
-  swiper.setTransition(0);
2038
-
2039
-  let dir = direction;
2040
-  if (!dir) {
2041
-    if (activeIndex > previousIndex) dir = 'next';
2042
-    else if (activeIndex < previousIndex) dir = 'prev';
2043
-    else dir = 'reset';
2044
-  }
2045
-
2046
-  swiper.emit('transitionEnd');
2047
-
2048
-  if (runCallbacks && activeIndex !== previousIndex) {
2049
-    if (dir === 'reset') {
2050
-      swiper.emit('slideResetTransitionEnd');
2051
-      return;
2052
-    }
2053
-    swiper.emit('slideChangeTransitionEnd');
2054
-    if (dir === 'next') {
2055
-      swiper.emit('slideNextTransitionEnd');
2056
-    } else {
2057
-      swiper.emit('slidePrevTransitionEnd');
2058
-    }
2059
-  }
2060
-}
2061
-
2062
-var transition$1 = {
2063
-  setTransition,
2064
-  transitionStart,
2065
-  transitionEnd: transitionEnd$1,
2066
-};
2067
-
2068
-function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
2069
-  const swiper = this;
2070
-  let slideIndex = index;
2071
-  if (slideIndex < 0) slideIndex = 0;
2072
-
2073
-  const {
2074
-    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,
2075
-  } = swiper;
2076
-  if (swiper.animating && params.preventInteractionOnTransition) {
2077
-    return false;
2078
-  }
2079
-
2080
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2081
-  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2082
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2083
-
2084
-  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2085
-    swiper.emit('beforeSlideChangeStart');
2086
-  }
2087
-
2088
-  const translate = -snapGrid[snapIndex];
2089
-
2090
-  // Update progress
2091
-  swiper.updateProgress(translate);
2092
-
2093
-  // Normalize slideIndex
2094
-  if (params.normalizeSlideIndex) {
2095
-    for (let i = 0; i < slidesGrid.length; i += 1) {
2096
-      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2097
-        slideIndex = i;
2098
-      }
2099
-    }
2100
-  }
2101
-  // Directions locks
2102
-  if (swiper.initialized && slideIndex !== activeIndex) {
2103
-    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2104
-      return false;
2105
-    }
2106
-    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2107
-      if ((activeIndex || 0) !== slideIndex) return false;
2108
-    }
2109
-  }
2110
-
2111
-  let direction;
2112
-  if (slideIndex > activeIndex) direction = 'next';
2113
-  else if (slideIndex < activeIndex) direction = 'prev';
2114
-  else direction = 'reset';
2115
-
2116
-
2117
-  // Update Index
2118
-  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
2119
-    swiper.updateActiveIndex(slideIndex);
2120
-    // Update Height
2121
-    if (params.autoHeight) {
2122
-      swiper.updateAutoHeight();
2123
-    }
2124
-    swiper.updateSlidesClasses();
2125
-    if (params.effect !== 'slide') {
2126
-      swiper.setTranslate(translate);
2127
-    }
2128
-    if (direction !== 'reset') {
2129
-      swiper.transitionStart(runCallbacks, direction);
2130
-      swiper.transitionEnd(runCallbacks, direction);
2131
-    }
2132
-    return false;
2133
-  }
2134
-  if (params.cssMode) {
2135
-    const isH = swiper.isHorizontal();
2136
-    let t = -translate;
2137
-    if (rtl) {
2138
-      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2139
-    }
2140
-    if (speed === 0) {
2141
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2142
-    } else {
2143
-      // eslint-disable-next-line
2144
-      if (wrapperEl.scrollTo) {
2145
-        wrapperEl.scrollTo({
2146
-          [isH ? 'left' : 'top']: t,
2147
-          behavior: 'smooth',
2148
-        });
2149
-      } else {
2150
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2151
-      }
2152
-    }
2153
-    return true;
2154
-  }
2155
-
2156
-  if (speed === 0) {
2157
-    swiper.setTransition(0);
2158
-    swiper.setTranslate(translate);
2159
-    swiper.updateActiveIndex(slideIndex);
2160
-    swiper.updateSlidesClasses();
2161
-    swiper.emit('beforeTransitionStart', speed, internal);
2162
-    swiper.transitionStart(runCallbacks, direction);
2163
-    swiper.transitionEnd(runCallbacks, direction);
2164
-  } else {
2165
-    swiper.setTransition(speed);
2166
-    swiper.setTranslate(translate);
2167
-    swiper.updateActiveIndex(slideIndex);
2168
-    swiper.updateSlidesClasses();
2169
-    swiper.emit('beforeTransitionStart', speed, internal);
2170
-    swiper.transitionStart(runCallbacks, direction);
2171
-    if (!swiper.animating) {
2172
-      swiper.animating = true;
2173
-      if (!swiper.onSlideToWrapperTransitionEnd) {
2174
-        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2175
-          if (!swiper || swiper.destroyed) return;
2176
-          if (e.target !== this) return;
2177
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2178
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2179
-          swiper.onSlideToWrapperTransitionEnd = null;
2180
-          delete swiper.onSlideToWrapperTransitionEnd;
2181
-          swiper.transitionEnd(runCallbacks, direction);
2182
-        };
2183
-      }
2184
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2185
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2186
-    }
2187
-  }
2188
-
2189
-  return true;
2190
-}
2191
-
2192
-function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
2193
-  const swiper = this;
2194
-  let newIndex = index;
2195
-  if (swiper.params.loop) {
2196
-    newIndex += swiper.loopedSlides;
2197
-  }
2198
-
2199
-  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2200
-}
2201
-
2202
-/* eslint no-unused-vars: "off" */
2203
-function slideNext (speed = this.params.speed, runCallbacks = true, internal) {
2204
-  const swiper = this;
2205
-  const { params, animating } = swiper;
2206
-  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2207
-  if (params.loop) {
2208
-    if (animating) return false;
2209
-    swiper.loopFix();
2210
-    // eslint-disable-next-line
2211
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2212
-  }
2213
-  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2214
-}
2215
-
2216
-/* eslint no-unused-vars: "off" */
2217
-function slidePrev (speed = this.params.speed, runCallbacks = true, internal) {
2218
-  const swiper = this;
2219
-  const {
2220
-    params, animating, snapGrid, slidesGrid, rtlTranslate,
2221
-  } = swiper;
2222
-
2223
-  if (params.loop) {
2224
-    if (animating) return false;
2225
-    swiper.loopFix();
2226
-    // eslint-disable-next-line
2227
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2228
-  }
2229
-  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
2230
-  function normalize(val) {
2231
-    if (val < 0) return -Math.floor(Math.abs(val));
2232
-    return Math.floor(val);
2233
-  }
2234
-  const normalizedTranslate = normalize(translate);
2235
-  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
2236
-  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
2237
-
2238
-  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2239
-  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2240
-  if (typeof prevSnap === 'undefined' && params.cssMode) {
2241
-    snapGrid.forEach((snap) => {
2242
-      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
2243
-    });
2244
-  }
2245
-  let prevIndex;
2246
-  if (typeof prevSnap !== 'undefined') {
2247
-    prevIndex = slidesGrid.indexOf(prevSnap);
2248
-    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
2249
-  }
2250
-  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2251
-}
2252
-
2253
-/* eslint no-unused-vars: "off" */
2254
-function slideReset (speed = this.params.speed, runCallbacks = true, internal) {
2255
-  const swiper = this;
2256
-  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2257
-}
2258
-
2259
-/* eslint no-unused-vars: "off" */
2260
-function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
2261
-  const swiper = this;
2262
-  let index = swiper.activeIndex;
2263
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
2264
-  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
2265
-
2266
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2267
-
2268
-  if (translate >= swiper.snapGrid[snapIndex]) {
2269
-    // The current translate is on or after the current snap index, so the choice
2270
-    // is between the current index and the one after it.
2271
-    const currentSnap = swiper.snapGrid[snapIndex];
2272
-    const nextSnap = swiper.snapGrid[snapIndex + 1];
2273
-    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
2274
-      index += swiper.params.slidesPerGroup;
2275
-    }
2276
-  } else {
2277
-    // The current translate is before the current snap index, so the choice
2278
-    // is between the current index and the one before it.
2279
-    const prevSnap = swiper.snapGrid[snapIndex - 1];
2280
-    const currentSnap = swiper.snapGrid[snapIndex];
2281
-    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {
2282
-      index -= swiper.params.slidesPerGroup;
2283
-    }
2284
-  }
2285
-  index = Math.max(index, 0);
2286
-  index = Math.min(index, swiper.slidesGrid.length - 1);
2287
-
2288
-  return swiper.slideTo(index, speed, runCallbacks, internal);
2289
-}
2290
-
2291
-function slideToClickedSlide () {
2292
-  const swiper = this;
2293
-  const { params, $wrapperEl } = swiper;
2294
-
2295
-  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2296
-  let slideToIndex = swiper.clickedIndex;
2297
-  let realIndex;
2298
-  if (params.loop) {
2299
-    if (swiper.animating) return;
2300
-    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
2301
-    if (params.centeredSlides) {
2302
-      if (
2303
-        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
2304
-        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
2305
-      ) {
2306
-        swiper.loopFix();
2307
-        slideToIndex = $wrapperEl
2308
-          .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
2309
-          .eq(0)
2310
-          .index();
2311
-
2312
-        Utils.nextTick(() => {
2313
-          swiper.slideTo(slideToIndex);
2314
-        });
2315
-      } else {
2316
-        swiper.slideTo(slideToIndex);
2317
-      }
2318
-    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2319
-      swiper.loopFix();
2320
-      slideToIndex = $wrapperEl
2321
-        .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
2322
-        .eq(0)
2323
-        .index();
2324
-
2325
-      Utils.nextTick(() => {
2326
-        swiper.slideTo(slideToIndex);
2327
-      });
2328
-    } else {
2329
-      swiper.slideTo(slideToIndex);
2330
-    }
2331
-  } else {
2332
-    swiper.slideTo(slideToIndex);
2333
-  }
2334
-}
2335
-
2336
-var slide = {
2337
-  slideTo,
2338
-  slideToLoop,
2339
-  slideNext,
2340
-  slidePrev,
2341
-  slideReset,
2342
-  slideToClosest,
2343
-  slideToClickedSlide,
2344
-};
2345
-
2346
-function loopCreate () {
2347
-  const swiper = this;
2348
-  const { params, $wrapperEl } = swiper;
2349
-  // Remove duplicated slides
2350
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
2351
-
2352
-  let slides = $wrapperEl.children(`.${params.slideClass}`);
2353
-
2354
-  if (params.loopFillGroupWithBlank) {
2355
-    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
2356
-    if (blankSlidesNum !== params.slidesPerGroup) {
2357
-      for (let i = 0; i < blankSlidesNum; i += 1) {
2358
-        const blankNode = $(doc.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
2359
-        $wrapperEl.append(blankNode);
2360
-      }
2361
-      slides = $wrapperEl.children(`.${params.slideClass}`);
2362
-    }
2363
-  }
2364
-
2365
-  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
2366
-
2367
-  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
2368
-  swiper.loopedSlides += params.loopAdditionalSlides;
2369
-  if (swiper.loopedSlides > slides.length) {
2370
-    swiper.loopedSlides = slides.length;
2371
-  }
2372
-
2373
-  const prependSlides = [];
2374
-  const appendSlides = [];
2375
-  slides.each((index, el) => {
2376
-    const slide = $(el);
2377
-    if (index < swiper.loopedSlides) appendSlides.push(el);
2378
-    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);
2379
-    slide.attr('data-swiper-slide-index', index);
2380
-  });
2381
-  for (let i = 0; i < appendSlides.length; i += 1) {
2382
-    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
2383
-  }
2384
-  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
2385
-    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
2386
-  }
2387
-}
2388
-
2389
-function loopFix () {
2390
-  const swiper = this;
2391
-
2392
-  swiper.emit('beforeLoopFix');
2393
-
2394
-  const {
2395
-    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,
2396
-  } = swiper;
2397
-  let newIndex;
2398
-  swiper.allowSlidePrev = true;
2399
-  swiper.allowSlideNext = true;
2400
-
2401
-  const snapTranslate = -snapGrid[activeIndex];
2402
-  const diff = snapTranslate - swiper.getTranslate();
2403
-
2404
-  // Fix For Negative Oversliding
2405
-  if (activeIndex < loopedSlides) {
2406
-    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
2407
-    newIndex += loopedSlides;
2408
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
2409
-    if (slideChanged && diff !== 0) {
2410
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2411
-    }
2412
-  } else if (activeIndex >= slides.length - loopedSlides) {
2413
-    // Fix For Positive Oversliding
2414
-    newIndex = -slides.length + activeIndex + loopedSlides;
2415
-    newIndex += loopedSlides;
2416
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
2417
-    if (slideChanged && diff !== 0) {
2418
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2419
-    }
2420
-  }
2421
-  swiper.allowSlidePrev = allowSlidePrev;
2422
-  swiper.allowSlideNext = allowSlideNext;
2423
-
2424
-  swiper.emit('loopFix');
2425
-}
2426
-
2427
-function loopDestroy () {
2428
-  const swiper = this;
2429
-  const { $wrapperEl, params, slides } = swiper;
2430
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
2431
-  slides.removeAttr('data-swiper-slide-index');
2432
-}
2433
-
2434
-var loop = {
2435
-  loopCreate,
2436
-  loopFix,
2437
-  loopDestroy,
2438
-};
2439
-
2440
-function setGrabCursor (moving) {
2441
-  const swiper = this;
2442
-  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
2443
-  const el = swiper.el;
2444
-  el.style.cursor = 'move';
2445
-  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
2446
-  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
2447
-  el.style.cursor = moving ? 'grabbing' : 'grab';
2448
-}
2449
-
2450
-function unsetGrabCursor () {
2451
-  const swiper = this;
2452
-  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
2453
-  swiper.el.style.cursor = '';
2454
-}
2455
-
2456
-var grabCursor = {
2457
-  setGrabCursor,
2458
-  unsetGrabCursor,
2459
-};
2460
-
2461
-function appendSlide (slides) {
2462
-  const swiper = this;
2463
-  const { $wrapperEl, params } = swiper;
2464
-  if (params.loop) {
2465
-    swiper.loopDestroy();
2466
-  }
2467
-  if (typeof slides === 'object' && 'length' in slides) {
2468
-    for (let i = 0; i < slides.length; i += 1) {
2469
-      if (slides[i]) $wrapperEl.append(slides[i]);
2470
-    }
2471
-  } else {
2472
-    $wrapperEl.append(slides);
2473
-  }
2474
-  if (params.loop) {
2475
-    swiper.loopCreate();
2476
-  }
2477
-  if (!(params.observer && Support.observer)) {
2478
-    swiper.update();
2479
-  }
2480
-}
2481
-
2482
-function prependSlide (slides) {
2483
-  const swiper = this;
2484
-  const { params, $wrapperEl, activeIndex } = swiper;
2485
-
2486
-  if (params.loop) {
2487
-    swiper.loopDestroy();
2488
-  }
2489
-  let newActiveIndex = activeIndex + 1;
2490
-  if (typeof slides === 'object' && 'length' in slides) {
2491
-    for (let i = 0; i < slides.length; i += 1) {
2492
-      if (slides[i]) $wrapperEl.prepend(slides[i]);
2493
-    }
2494
-    newActiveIndex = activeIndex + slides.length;
2495
-  } else {
2496
-    $wrapperEl.prepend(slides);
2497
-  }
2498
-  if (params.loop) {
2499
-    swiper.loopCreate();
2500
-  }
2501
-  if (!(params.observer && Support.observer)) {
2502
-    swiper.update();
2503
-  }
2504
-  swiper.slideTo(newActiveIndex, 0, false);
2505
-}
2506
-
2507
-function addSlide (index, slides) {
2508
-  const swiper = this;
2509
-  const { $wrapperEl, params, activeIndex } = swiper;
2510
-  let activeIndexBuffer = activeIndex;
2511
-  if (params.loop) {
2512
-    activeIndexBuffer -= swiper.loopedSlides;
2513
-    swiper.loopDestroy();
2514
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
2515
-  }
2516
-  const baseLength = swiper.slides.length;
2517
-  if (index <= 0) {
2518
-    swiper.prependSlide(slides);
2519
-    return;
2520
-  }
2521
-  if (index >= baseLength) {
2522
-    swiper.appendSlide(slides);
2523
-    return;
2524
-  }
2525
-  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
2526
-
2527
-  const slidesBuffer = [];
2528
-  for (let i = baseLength - 1; i >= index; i -= 1) {
2529
-    const currentSlide = swiper.slides.eq(i);
2530
-    currentSlide.remove();
2531
-    slidesBuffer.unshift(currentSlide);
2532
-  }
2533
-
2534
-  if (typeof slides === 'object' && 'length' in slides) {
2535
-    for (let i = 0; i < slides.length; i += 1) {
2536
-      if (slides[i]) $wrapperEl.append(slides[i]);
2537
-    }
2538
-    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
2539
-  } else {
2540
-    $wrapperEl.append(slides);
2541
-  }
2542
-
2543
-  for (let i = 0; i < slidesBuffer.length; i += 1) {
2544
-    $wrapperEl.append(slidesBuffer[i]);
2545
-  }
2546
-
2547
-  if (params.loop) {
2548
-    swiper.loopCreate();
2549
-  }
2550
-  if (!(params.observer && Support.observer)) {
2551
-    swiper.update();
2552
-  }
2553
-  if (params.loop) {
2554
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2555
-  } else {
2556
-    swiper.slideTo(newActiveIndex, 0, false);
2557
-  }
2558
-}
2559
-
2560
-function removeSlide (slidesIndexes) {
2561
-  const swiper = this;
2562
-  const { params, $wrapperEl, activeIndex } = swiper;
2563
-
2564
-  let activeIndexBuffer = activeIndex;
2565
-  if (params.loop) {
2566
-    activeIndexBuffer -= swiper.loopedSlides;
2567
-    swiper.loopDestroy();
2568
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
2569
-  }
2570
-  let newActiveIndex = activeIndexBuffer;
2571
-  let indexToRemove;
2572
-
2573
-  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
2574
-    for (let i = 0; i < slidesIndexes.length; i += 1) {
2575
-      indexToRemove = slidesIndexes[i];
2576
-      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
2577
-      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2578
-    }
2579
-    newActiveIndex = Math.max(newActiveIndex, 0);
2580
-  } else {
2581
-    indexToRemove = slidesIndexes;
2582
-    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
2583
-    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
2584
-    newActiveIndex = Math.max(newActiveIndex, 0);
2585
-  }
2586
-
2587
-  if (params.loop) {
2588
-    swiper.loopCreate();
2589
-  }
2590
-
2591
-  if (!(params.observer && Support.observer)) {
2592
-    swiper.update();
2593
-  }
2594
-  if (params.loop) {
2595
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2596
-  } else {
2597
-    swiper.slideTo(newActiveIndex, 0, false);
2598
-  }
2599
-}
2600
-
2601
-function removeAllSlides () {
2602
-  const swiper = this;
2603
-
2604
-  const slidesIndexes = [];
2605
-  for (let i = 0; i < swiper.slides.length; i += 1) {
2606
-    slidesIndexes.push(i);
2607
-  }
2608
-  swiper.removeSlide(slidesIndexes);
2609
-}
2610
-
2611
-var manipulation = {
2612
-  appendSlide,
2613
-  prependSlide,
2614
-  addSlide,
2615
-  removeSlide,
2616
-  removeAllSlides,
2617
-};
2618
-
2619
-const Device = (function Device() {
2620
-  const platform = win.navigator.platform;
2621
-  const ua = win.navigator.userAgent;
2622
-
2623
-  const device = {
2624
-    ios: false,
2625
-    android: false,
2626
-    androidChrome: false,
2627
-    desktop: false,
2628
-    iphone: false,
2629
-    ipod: false,
2630
-    ipad: false,
2631
-    edge: false,
2632
-    ie: false,
2633
-    firefox: false,
2634
-    macos: false,
2635
-    windows: false,
2636
-    cordova: !!(win.cordova || win.phonegap),
2637
-    phonegap: !!(win.cordova || win.phonegap),
2638
-    electron: false,
2639
-  };
2640
-
2641
-  const screenWidth = win.screen.width;
2642
-  const screenHeight = win.screen.height;
2643
-
2644
-  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
2645
-  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
2646
-  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
2647
-  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
2648
-  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
2649
-  const edge = ua.indexOf('Edge/') >= 0;
2650
-  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
2651
-  const windows = platform === 'Win32';
2652
-  const electron = ua.toLowerCase().indexOf('electron') >= 0;
2653
-  let macos = platform === 'MacIntel';
2654
-
2655
-  // iPadOs 13 fix
2656
-  if (!ipad
2657
-    && macos
2658
-    && Support.touch
2659
-    && (
2660
-      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
2661
-      || (screenWidth === 834 && screenHeight === 1194) // Pro 11
2662
-      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
2663
-      || (screenWidth === 768 && screenHeight === 1024) // other
2664
-    )
2665
-  ) {
2666
-    ipad = ua.match(/(Version)\/([\d.]+)/);
2667
-    macos = false;
2668
-  }
2669
-
2670
-  device.ie = ie;
2671
-  device.edge = edge;
2672
-  device.firefox = firefox;
2673
-
2674
-  // Android
2675
-  if (android && !windows) {
2676
-    device.os = 'android';
2677
-    device.osVersion = android[2];
2678
-    device.android = true;
2679
-    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
2680
-  }
2681
-  if (ipad || iphone || ipod) {
2682
-    device.os = 'ios';
2683
-    device.ios = true;
2684
-  }
2685
-  // iOS
2686
-  if (iphone && !ipod) {
2687
-    device.osVersion = iphone[2].replace(/_/g, '.');
2688
-    device.iphone = true;
2689
-  }
2690
-  if (ipad) {
2691
-    device.osVersion = ipad[2].replace(/_/g, '.');
2692
-    device.ipad = true;
2693
-  }
2694
-  if (ipod) {
2695
-    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
2696
-    device.ipod = true;
2697
-  }
2698
-  // iOS 8+ changed UA
2699
-  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
2700
-    if (device.osVersion.split('.')[0] === '10') {
2701
-      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
2702
-    }
2703
-  }
2704
-
2705
-  // Webview
2706
-  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))
2707
-    || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);
2708
-  device.webview = device.webView;
2709
-  device.standalone = device.webView;
2710
-
2711
-  // Desktop
2712
-  device.desktop = !(device.ios || device.android) || electron;
2713
-  if (device.desktop) {
2714
-    device.electron = electron;
2715
-    device.macos = macos;
2716
-    device.windows = windows;
2717
-    if (device.macos) {
2718
-      device.os = 'macos';
2719
-    }
2720
-    if (device.windows) {
2721
-      device.os = 'windows';
2722
-    }
2723
-  }
2724
-
2725
-  // Pixel Ratio
2726
-  device.pixelRatio = win.devicePixelRatio || 1;
2727
-
2728
-  // Export object
2729
-  return device;
2730
-}());
2731
-
2732
-function onTouchStart (event) {
2733
-  const swiper = this;
2734
-  const data = swiper.touchEventsData;
2735
-  const { params, touches } = swiper;
2736
-
2737
-  if (swiper.animating && params.preventInteractionOnTransition) {
2738
-    return;
2739
-  }
2740
-  let e = event;
2741
-  if (e.originalEvent) e = e.originalEvent;
2742
-  const $targetEl = $(e.target);
2743
-
2744
-  if (params.touchEventsTarget === 'wrapper') {
2745
-    if (!$targetEl.closest(swiper.wrapperEl).length) return;
2746
-  }
2747
-  data.isTouchEvent = e.type === 'touchstart';
2748
-  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
2749
-  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
2750
-  if (data.isTouched && data.isMoved) return;
2751
-  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
2752
-    swiper.allowClick = true;
2753
-    return;
2754
-  }
2755
-  if (params.swipeHandler) {
2756
-    if (!$targetEl.closest(params.swipeHandler)[0]) return;
2757
-  }
2758
-
2759
-  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
2760
-  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
2761
-  const startX = touches.currentX;
2762
-  const startY = touches.currentY;
2763
-
2764
-  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
2765
-
2766
-  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
2767
-  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
2768
-  if (
2769
-    edgeSwipeDetection
2770
-    && ((startX <= edgeSwipeThreshold)
2771
-    || (startX >= win.screen.width - edgeSwipeThreshold))
2772
-  ) {
2773
-    return;
2774
-  }
2775
-
2776
-  Utils.extend(data, {
2777
-    isTouched: true,
2778
-    isMoved: false,
2779
-    allowTouchCallbacks: true,
2780
-    isScrolling: undefined,
2781
-    startMoving: undefined,
2782
-  });
2783
-
2784
-  touches.startX = startX;
2785
-  touches.startY = startY;
2786
-  data.touchStartTime = Utils.now();
2787
-  swiper.allowClick = true;
2788
-  swiper.updateSize();
2789
-  swiper.swipeDirection = undefined;
2790
-  if (params.threshold > 0) data.allowThresholdMove = false;
2791
-  if (e.type !== 'touchstart') {
2792
-    let preventDefault = true;
2793
-    if ($targetEl.is(data.formElements)) preventDefault = false;
2794
-    if (
2795
-      doc.activeElement
2796
-      && $(doc.activeElement).is(data.formElements)
2797
-      && doc.activeElement !== $targetEl[0]
2798
-    ) {
2799
-      doc.activeElement.blur();
2800
-    }
2801
-
2802
-    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
2803
-    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
2804
-      e.preventDefault();
2805
-    }
2806
-  }
2807
-  swiper.emit('touchStart', e);
2808
-}
2809
-
2810
-function onTouchMove (event) {
2811
-  const swiper = this;
2812
-  const data = swiper.touchEventsData;
2813
-  const { params, touches, rtlTranslate: rtl } = swiper;
2814
-  let e = event;
2815
-  if (e.originalEvent) e = e.originalEvent;
2816
-  if (!data.isTouched) {
2817
-    if (data.startMoving && data.isScrolling) {
2818
-      swiper.emit('touchMoveOpposite', e);
2819
-    }
2820
-    return;
2821
-  }
2822
-  if (data.isTouchEvent && e.type !== 'touchmove') return;
2823
-  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
2824
-  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
2825
-  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
2826
-  if (e.preventedByNestedSwiper) {
2827
-    touches.startX = pageX;
2828
-    touches.startY = pageY;
2829
-    return;
2830
-  }
2831
-  if (!swiper.allowTouchMove) {
2832
-    // isMoved = true;
2833
-    swiper.allowClick = false;
2834
-    if (data.isTouched) {
2835
-      Utils.extend(touches, {
2836
-        startX: pageX,
2837
-        startY: pageY,
2838
-        currentX: pageX,
2839
-        currentY: pageY,
2840
-      });
2841
-      data.touchStartTime = Utils.now();
2842
-    }
2843
-    return;
2844
-  }
2845
-  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2846
-    if (swiper.isVertical()) {
2847
-      // Vertical
2848
-      if (
2849
-        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
2850
-        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
2851
-      ) {
2852
-        data.isTouched = false;
2853
-        data.isMoved = false;
2854
-        return;
2855
-      }
2856
-    } else if (
2857
-      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
2858
-      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
2859
-    ) {
2860
-      return;
2861
-    }
2862
-  }
2863
-  if (data.isTouchEvent && doc.activeElement) {
2864
-    if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
2865
-      data.isMoved = true;
2866
-      swiper.allowClick = false;
2867
-      return;
2868
-    }
2869
-  }
2870
-  if (data.allowTouchCallbacks) {
2871
-    swiper.emit('touchMove', e);
2872
-  }
2873
-  if (e.targetTouches && e.targetTouches.length > 1) return;
2874
-
2875
-  touches.currentX = pageX;
2876
-  touches.currentY = pageY;
2877
-
2878
-  const diffX = touches.currentX - touches.startX;
2879
-  const diffY = touches.currentY - touches.startY;
2880
-  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;
2881
-
2882
-  if (typeof data.isScrolling === 'undefined') {
2883
-    let touchAngle;
2884
-    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
2885
-      data.isScrolling = false;
2886
-    } else {
2887
-      // eslint-disable-next-line
2888
-      if ((diffX * diffX) + (diffY * diffY) >= 25) {
2889
-        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
2890
-        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
2891
-      }
2892
-    }
2893
-  }
2894
-  if (data.isScrolling) {
2895
-    swiper.emit('touchMoveOpposite', e);
2896
-  }
2897
-  if (typeof data.startMoving === 'undefined') {
2898
-    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2899
-      data.startMoving = true;
2900
-    }
2901
-  }
2902
-  if (data.isScrolling) {
2903
-    data.isTouched = false;
2904
-    return;
2905
-  }
2906
-  if (!data.startMoving) {
2907
-    return;
2908
-  }
2909
-  swiper.allowClick = false;
2910
-  if (!params.cssMode && e.cancelable) {
2911
-    e.preventDefault();
2912
-  }
2913
-  if (params.touchMoveStopPropagation && !params.nested) {
2914
-    e.stopPropagation();
2915
-  }
2916
-
2917
-  if (!data.isMoved) {
2918
-    if (params.loop) {
2919
-      swiper.loopFix();
2920
-    }
2921
-    data.startTranslate = swiper.getTranslate();
2922
-    swiper.setTransition(0);
2923
-    if (swiper.animating) {
2924
-      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
2925
-    }
2926
-    data.allowMomentumBounce = false;
2927
-    // Grab Cursor
2928
-    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2929
-      swiper.setGrabCursor(true);
2930
-    }
2931
-    swiper.emit('sliderFirstMove', e);
2932
-  }
2933
-  swiper.emit('sliderMove', e);
2934
-  data.isMoved = true;
2935
-
2936
-  let diff = swiper.isHorizontal() ? diffX : diffY;
2937
-  touches.diff = diff;
2938
-
2939
-  diff *= params.touchRatio;
2940
-  if (rtl) diff = -diff;
2941
-
2942
-  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
2943
-  data.currentTranslate = diff + data.startTranslate;
2944
-
2945
-  let disableParentSwiper = true;
2946
-  let resistanceRatio = params.resistanceRatio;
2947
-  if (params.touchReleaseOnEdges) {
2948
-    resistanceRatio = 0;
2949
-  }
2950
-  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
2951
-    disableParentSwiper = false;
2952
-    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);
2953
-  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
2954
-    disableParentSwiper = false;
2955
-    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);
2956
-  }
2957
-
2958
-  if (disableParentSwiper) {
2959
-    e.preventedByNestedSwiper = true;
2960
-  }
2961
-
2962
-  // Directions locks
2963
-  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
2964
-    data.currentTranslate = data.startTranslate;
2965
-  }
2966
-  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
2967
-    data.currentTranslate = data.startTranslate;
2968
-  }
2969
-
2970
-
2971
-  // Threshold
2972
-  if (params.threshold > 0) {
2973
-    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2974
-      if (!data.allowThresholdMove) {
2975
-        data.allowThresholdMove = true;
2976
-        touches.startX = touches.currentX;
2977
-        touches.startY = touches.currentY;
2978
-        data.currentTranslate = data.startTranslate;
2979
-        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2980
-        return;
2981
-      }
2982
-    } else {
2983
-      data.currentTranslate = data.startTranslate;
2984
-      return;
2985
-    }
2986
-  }
2987
-
2988
-  if (!params.followFinger || params.cssMode) return;
2989
-
2990
-  // Update active index in free mode
2991
-  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
2992
-    swiper.updateActiveIndex();
2993
-    swiper.updateSlidesClasses();
2994
-  }
2995
-  if (params.freeMode) {
2996
-    // Velocity
2997
-    if (data.velocities.length === 0) {
2998
-      data.velocities.push({
2999
-        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3000
-        time: data.touchStartTime,
3001
-      });
3002
-    }
3003
-    data.velocities.push({
3004
-      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3005
-      time: Utils.now(),
3006
-    });
3007
-  }
3008
-  // Update progress
3009
-  swiper.updateProgress(data.currentTranslate);
3010
-  // Update translate
3011
-  swiper.setTranslate(data.currentTranslate);
3012
-}
3013
-
3014
-function onTouchEnd (event) {
3015
-  const swiper = this;
3016
-  const data = swiper.touchEventsData;
3017
-
3018
-  const {
3019
-    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,
3020
-  } = swiper;
3021
-  let e = event;
3022
-  if (e.originalEvent) e = e.originalEvent;
3023
-  if (data.allowTouchCallbacks) {
3024
-    swiper.emit('touchEnd', e);
3025
-  }
3026
-  data.allowTouchCallbacks = false;
3027
-  if (!data.isTouched) {
3028
-    if (data.isMoved && params.grabCursor) {
3029
-      swiper.setGrabCursor(false);
3030
-    }
3031
-    data.isMoved = false;
3032
-    data.startMoving = false;
3033
-    return;
3034
-  }
3035
-  // Return Grab Cursor
3036
-  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3037
-    swiper.setGrabCursor(false);
3038
-  }
3039
-
3040
-  // Time diff
3041
-  const touchEndTime = Utils.now();
3042
-  const timeDiff = touchEndTime - data.touchStartTime;
3043
-
3044
-  // Tap, doubleTap, Click
3045
-  if (swiper.allowClick) {
3046
-    swiper.updateClickedSlide(e);
3047
-    swiper.emit('tap click', e);
3048
-    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
3049
-      swiper.emit('doubleTap doubleClick', e);
3050
-    }
3051
-  }
3052
-
3053
-  data.lastClickTime = Utils.now();
3054
-  Utils.nextTick(() => {
3055
-    if (!swiper.destroyed) swiper.allowClick = true;
3056
-  });
3057
-
3058
-  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3059
-    data.isTouched = false;
3060
-    data.isMoved = false;
3061
-    data.startMoving = false;
3062
-    return;
3063
-  }
3064
-  data.isTouched = false;
3065
-  data.isMoved = false;
3066
-  data.startMoving = false;
3067
-
3068
-  let currentPos;
3069
-  if (params.followFinger) {
3070
-    currentPos = rtl ? swiper.translate : -swiper.translate;
3071
-  } else {
3072
-    currentPos = -data.currentTranslate;
3073
-  }
3074
-
3075
-  if (params.cssMode) {
3076
-    return;
3077
-  }
3078
-
3079
-  if (params.freeMode) {
3080
-    if (currentPos < -swiper.minTranslate()) {
3081
-      swiper.slideTo(swiper.activeIndex);
3082
-      return;
3083
-    }
3084
-    if (currentPos > -swiper.maxTranslate()) {
3085
-      if (swiper.slides.length < snapGrid.length) {
3086
-        swiper.slideTo(snapGrid.length - 1);
3087
-      } else {
3088
-        swiper.slideTo(swiper.slides.length - 1);
3089
-      }
3090
-      return;
3091
-    }
3092
-
3093
-    if (params.freeModeMomentum) {
3094
-      if (data.velocities.length > 1) {
3095
-        const lastMoveEvent = data.velocities.pop();
3096
-        const velocityEvent = data.velocities.pop();
3097
-
3098
-        const distance = lastMoveEvent.position - velocityEvent.position;
3099
-        const time = lastMoveEvent.time - velocityEvent.time;
3100
-        swiper.velocity = distance / time;
3101
-        swiper.velocity /= 2;
3102
-        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3103
-          swiper.velocity = 0;
3104
-        }
3105
-        // this implies that the user stopped moving a finger then released.
3106
-        // There would be no events with distance zero, so the last event is stale.
3107
-        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
3108
-          swiper.velocity = 0;
3109
-        }
3110
-      } else {
3111
-        swiper.velocity = 0;
3112
-      }
3113
-      swiper.velocity *= params.freeModeMomentumVelocityRatio;
3114
-
3115
-      data.velocities.length = 0;
3116
-      let momentumDuration = 1000 * params.freeModeMomentumRatio;
3117
-      const momentumDistance = swiper.velocity * momentumDuration;
3118
-
3119
-      let newPosition = swiper.translate + momentumDistance;
3120
-      if (rtl) newPosition = -newPosition;
3121
-
3122
-      let doBounce = false;
3123
-      let afterBouncePosition;
3124
-      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3125
-      let needsLoopFix;
3126
-      if (newPosition < swiper.maxTranslate()) {
3127
-        if (params.freeModeMomentumBounce) {
3128
-          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3129
-            newPosition = swiper.maxTranslate() - bounceAmount;
3130
-          }
3131
-          afterBouncePosition = swiper.maxTranslate();
3132
-          doBounce = true;
3133
-          data.allowMomentumBounce = true;
3134
-        } else {
3135
-          newPosition = swiper.maxTranslate();
3136
-        }
3137
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
3138
-      } else if (newPosition > swiper.minTranslate()) {
3139
-        if (params.freeModeMomentumBounce) {
3140
-          if (newPosition - swiper.minTranslate() > bounceAmount) {
3141
-            newPosition = swiper.minTranslate() + bounceAmount;
3142
-          }
3143
-          afterBouncePosition = swiper.minTranslate();
3144
-          doBounce = true;
3145
-          data.allowMomentumBounce = true;
3146
-        } else {
3147
-          newPosition = swiper.minTranslate();
3148
-        }
3149
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
3150
-      } else if (params.freeModeSticky) {
3151
-        let nextSlide;
3152
-        for (let j = 0; j < snapGrid.length; j += 1) {
3153
-          if (snapGrid[j] > -newPosition) {
3154
-            nextSlide = j;
3155
-            break;
3156
-          }
3157
-        }
3158
-
3159
-        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3160
-          newPosition = snapGrid[nextSlide];
3161
-        } else {
3162
-          newPosition = snapGrid[nextSlide - 1];
3163
-        }
3164
-        newPosition = -newPosition;
3165
-      }
3166
-      if (needsLoopFix) {
3167
-        swiper.once('transitionEnd', () => {
3168
-          swiper.loopFix();
3169
-        });
3170
-      }
3171
-      // Fix duration
3172
-      if (swiper.velocity !== 0) {
3173
-        if (rtl) {
3174
-          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3175
-        } else {
3176
-          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3177
-        }
3178
-        if (params.freeModeSticky) {
3179
-          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3180
-          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3181
-          // It's easy to see this when simulating touch with mouse events. To fix this,
3182
-          // limit single-slide swipes to the default slide duration. This also has the
3183
-          // nice side effect of matching slide speed if the user stopped moving before
3184
-          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3185
-          // For faster swipes, also apply limits (albeit higher ones).
3186
-          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3187
-          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3188
-          if (moveDistance < currentSlideSize) {
3189
-            momentumDuration = params.speed;
3190
-          } else if (moveDistance < 2 * currentSlideSize) {
3191
-            momentumDuration = params.speed * 1.5;
3192
-          } else {
3193
-            momentumDuration = params.speed * 2.5;
3194
-          }
3195
-        }
3196
-      } else if (params.freeModeSticky) {
3197
-        swiper.slideToClosest();
3198
-        return;
3199
-      }
3200
-
3201
-      if (params.freeModeMomentumBounce && doBounce) {
3202
-        swiper.updateProgress(afterBouncePosition);
3203
-        swiper.setTransition(momentumDuration);
3204
-        swiper.setTranslate(newPosition);
3205
-        swiper.transitionStart(true, swiper.swipeDirection);
3206
-        swiper.animating = true;
3207
-        $wrapperEl.transitionEnd(() => {
3208
-          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
3209
-          swiper.emit('momentumBounce');
3210
-          swiper.setTransition(params.speed);
3211
-          setTimeout(() => {
3212
-            swiper.setTranslate(afterBouncePosition);
3213
-            $wrapperEl.transitionEnd(() => {
3214
-              if (!swiper || swiper.destroyed) return;
3215
-              swiper.transitionEnd();
3216
-            });
3217
-          }, 0);
3218
-        });
3219
-      } else if (swiper.velocity) {
3220
-        swiper.updateProgress(newPosition);
3221
-        swiper.setTransition(momentumDuration);
3222
-        swiper.setTranslate(newPosition);
3223
-        swiper.transitionStart(true, swiper.swipeDirection);
3224
-        if (!swiper.animating) {
3225
-          swiper.animating = true;
3226
-          $wrapperEl.transitionEnd(() => {
3227
-            if (!swiper || swiper.destroyed) return;
3228
-            swiper.transitionEnd();
3229
-          });
3230
-        }
3231
-      } else {
3232
-        swiper.updateProgress(newPosition);
3233
-      }
3234
-
3235
-      swiper.updateActiveIndex();
3236
-      swiper.updateSlidesClasses();
3237
-    } else if (params.freeModeSticky) {
3238
-      swiper.slideToClosest();
3239
-      return;
3240
-    }
3241
-
3242
-    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3243
-      swiper.updateProgress();
3244
-      swiper.updateActiveIndex();
3245
-      swiper.updateSlidesClasses();
3246
-    }
3247
-    return;
3248
-  }
3249
-
3250
-  // Find current slide
3251
-  let stopIndex = 0;
3252
-  let groupSize = swiper.slidesSizesGrid[0];
3253
-  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
3254
-    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
3255
-    if (typeof slidesGrid[i + increment] !== 'undefined') {
3256
-      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
3257
-        stopIndex = i;
3258
-        groupSize = slidesGrid[i + increment] - slidesGrid[i];
3259
-      }
3260
-    } else if (currentPos >= slidesGrid[i]) {
3261
-      stopIndex = i;
3262
-      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3263
-    }
3264
-  }
3265
-
3266
-  // Find current slide size
3267
-  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3268
-  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
3269
-
3270
-  if (timeDiff > params.longSwipesMs) {
3271
-    // Long touches
3272
-    if (!params.longSwipes) {
3273
-      swiper.slideTo(swiper.activeIndex);
3274
-      return;
3275
-    }
3276
-    if (swiper.swipeDirection === 'next') {
3277
-      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);
3278
-      else swiper.slideTo(stopIndex);
3279
-    }
3280
-    if (swiper.swipeDirection === 'prev') {
3281
-      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);
3282
-      else swiper.slideTo(stopIndex);
3283
-    }
3284
-  } else {
3285
-    // Short swipes
3286
-    if (!params.shortSwipes) {
3287
-      swiper.slideTo(swiper.activeIndex);
3288
-      return;
3289
-    }
3290
-    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3291
-    if (!isNavButtonTarget) {
3292
-      if (swiper.swipeDirection === 'next') {
3293
-        swiper.slideTo(stopIndex + increment);
3294
-      }
3295
-      if (swiper.swipeDirection === 'prev') {
3296
-        swiper.slideTo(stopIndex);
3297
-      }
3298
-    } else if (e.target === swiper.navigation.nextEl) {
3299
-      swiper.slideTo(stopIndex + increment);
3300
-    } else {
3301
-      swiper.slideTo(stopIndex);
3302
-    }
3303
-  }
3304
-}
3305
-
3306
-function onResize () {
3307
-  const swiper = this;
3308
-
3309
-  const { params, el } = swiper;
3310
-
3311
-  if (el && el.offsetWidth === 0) return;
3312
-
3313
-  // Breakpoints
3314
-  if (params.breakpoints) {
3315
-    swiper.setBreakpoint();
3316
-  }
3317
-
3318
-  // Save locks
3319
-  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;
3320
-
3321
-  // Disable locks on resize
3322
-  swiper.allowSlideNext = true;
3323
-  swiper.allowSlidePrev = true;
3324
-
3325
-  swiper.updateSize();
3326
-  swiper.updateSlides();
3327
-
3328
-  swiper.updateSlidesClasses();
3329
-  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3330
-    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3331
-  } else {
3332
-    swiper.slideTo(swiper.activeIndex, 0, false, true);
3333
-  }
3334
-
3335
-  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
3336
-    swiper.autoplay.run();
3337
-  }
3338
-  // Return locks after resize
3339
-  swiper.allowSlidePrev = allowSlidePrev;
3340
-  swiper.allowSlideNext = allowSlideNext;
3341
-
3342
-  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
3343
-    swiper.checkOverflow();
3344
-  }
3345
-}
3346
-
3347
-function onClick (e) {
3348
-  const swiper = this;
3349
-  if (!swiper.allowClick) {
3350
-    if (swiper.params.preventClicks) e.preventDefault();
3351
-    if (swiper.params.preventClicksPropagation && swiper.animating) {
3352
-      e.stopPropagation();
3353
-      e.stopImmediatePropagation();
3354
-    }
3355
-  }
3356
-}
3357
-
3358
-function onScroll () {
3359
-  const swiper = this;
3360
-  const { wrapperEl, rtlTranslate } = swiper;
3361
-  swiper.previousTranslate = swiper.translate;
3362
-  if (swiper.isHorizontal()) {
3363
-    if (rtlTranslate) {
3364
-      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
3365
-    } else {
3366
-      swiper.translate = -wrapperEl.scrollLeft;
3367
-    }
3368
-  } else {
3369
-    swiper.translate = -wrapperEl.scrollTop;
3370
-  }
3371
-  // eslint-disable-next-line
3372
-  if (swiper.translate === -0) swiper.translate = 0;
3373
-
3374
-  swiper.updateActiveIndex();
3375
-  swiper.updateSlidesClasses();
3376
-
3377
-  let newProgress;
3378
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
3379
-  if (translatesDiff === 0) {
3380
-    newProgress = 0;
3381
-  } else {
3382
-    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
3383
-  }
3384
-  if (newProgress !== swiper.progress) {
3385
-    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
3386
-  }
3387
-
3388
-  swiper.emit('setTranslate', swiper.translate, false);
3389
-}
3390
-
3391
-let dummyEventAttached = false;
3392
-function dummyEventListener() {}
3393
-
3394
-function attachEvents() {
3395
-  const swiper = this;
3396
-  const {
3397
-    params, touchEvents, el, wrapperEl,
3398
-  } = swiper;
3399
-
3400
-  swiper.onTouchStart = onTouchStart.bind(swiper);
3401
-  swiper.onTouchMove = onTouchMove.bind(swiper);
3402
-  swiper.onTouchEnd = onTouchEnd.bind(swiper);
3403
-  if (params.cssMode) {
3404
-    swiper.onScroll = onScroll.bind(swiper);
3405
-  }
3406
-
3407
-  swiper.onClick = onClick.bind(swiper);
3408
-
3409
-  const capture = !!params.nested;
3410
-
3411
-  // Touch Events
3412
-  if (!Support.touch && Support.pointerEvents) {
3413
-    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
3414
-    doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
3415
-    doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
3416
-  } else {
3417
-    if (Support.touch) {
3418
-      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3419
-      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3420
-      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
3421
-      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3422
-      if (touchEvents.cancel) {
3423
-        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
3424
-      }
3425
-      if (!dummyEventAttached) {
3426
-        doc.addEventListener('touchstart', dummyEventListener);
3427
-        dummyEventAttached = true;
3428
-      }
3429
-    }
3430
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3431
-      el.addEventListener('mousedown', swiper.onTouchStart, false);
3432
-      doc.addEventListener('mousemove', swiper.onTouchMove, capture);
3433
-      doc.addEventListener('mouseup', swiper.onTouchEnd, false);
3434
-    }
3435
-  }
3436
-  // Prevent Links Clicks
3437
-  if (params.preventClicks || params.preventClicksPropagation) {
3438
-    el.addEventListener('click', swiper.onClick, true);
3439
-  }
3440
-  if (params.cssMode) {
3441
-    wrapperEl.addEventListener('scroll', swiper.onScroll);
3442
-  }
3443
-
3444
-  // Resize handler
3445
-  if (params.updateOnWindowResize) {
3446
-    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
3447
-  } else {
3448
-    swiper.on('observerUpdate', onResize, true);
3449
-  }
3450
-}
3451
-
3452
-function detachEvents() {
3453
-  const swiper = this;
3454
-
3455
-  const {
3456
-    params, touchEvents, el, wrapperEl,
3457
-  } = swiper;
3458
-
3459
-  const capture = !!params.nested;
3460
-
3461
-  // Touch Events
3462
-  if (!Support.touch && Support.pointerEvents) {
3463
-    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
3464
-    doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3465
-    doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
3466
-  } else {
3467
-    if (Support.touch) {
3468
-      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3469
-      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3470
-      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3471
-      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3472
-      if (touchEvents.cancel) {
3473
-        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
3474
-      }
3475
-    }
3476
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3477
-      el.removeEventListener('mousedown', swiper.onTouchStart, false);
3478
-      doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
3479
-      doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
3480
-    }
3481
-  }
3482
-  // Prevent Links Clicks
3483
-  if (params.preventClicks || params.preventClicksPropagation) {
3484
-    el.removeEventListener('click', swiper.onClick, true);
3485
-  }
3486
-
3487
-  if (params.cssMode) {
3488
-    wrapperEl.removeEventListener('scroll', swiper.onScroll);
3489
-  }
3490
-
3491
-  // Resize handler
3492
-  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
3493
-}
3494
-
3495
-var events = {
3496
-  attachEvents,
3497
-  detachEvents,
3498
-};
3499
-
3500
-function setBreakpoint () {
3501
-  const swiper = this;
3502
-  const {
3503
-    activeIndex, initialized, loopedSlides = 0, params, $el,
3504
-  } = swiper;
3505
-  const breakpoints = params.breakpoints;
3506
-  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;
3507
-
3508
-  // Get breakpoint for window width and update parameters
3509
-  const breakpoint = swiper.getBreakpoint(breakpoints);
3510
-
3511
-  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
3512
-    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
3513
-    if (breakpointOnlyParams) {
3514
-      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {
3515
-        const paramValue = breakpointOnlyParams[param];
3516
-        if (typeof paramValue === 'undefined') return;
3517
-        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
3518
-          breakpointOnlyParams[param] = 'auto';
3519
-        } else if (param === 'slidesPerView') {
3520
-          breakpointOnlyParams[param] = parseFloat(paramValue);
3521
-        } else {
3522
-          breakpointOnlyParams[param] = parseInt(paramValue, 10);
3523
-        }
3524
-      });
3525
-    }
3526
-
3527
-    const breakpointParams = breakpointOnlyParams || swiper.originalParams;
3528
-    const wasMultiRow = params.slidesPerColumn > 1;
3529
-    const isMultiRow = breakpointParams.slidesPerColumn > 1;
3530
-    if (wasMultiRow && !isMultiRow) {
3531
-      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);
3532
-    } else if (!wasMultiRow && isMultiRow) {
3533
-      $el.addClass(`${params.containerModifierClass}multirow`);
3534
-      if (breakpointParams.slidesPerColumnFill === 'column') {
3535
-        $el.addClass(`${params.containerModifierClass}multirow-column`);
3536
-      }
3537
-    }
3538
-
3539
-    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
3540
-    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
3541
-
3542
-    if (directionChanged && initialized) {
3543
-      swiper.changeDirection();
3544
-    }
3545
-
3546
-    Utils.extend(swiper.params, breakpointParams);
3547
-
3548
-    Utils.extend(swiper, {
3549
-      allowTouchMove: swiper.params.allowTouchMove,
3550
-      allowSlideNext: swiper.params.allowSlideNext,
3551
-      allowSlidePrev: swiper.params.allowSlidePrev,
3552
-    });
3553
-
3554
-    swiper.currentBreakpoint = breakpoint;
3555
-
3556
-    if (needsReLoop && initialized) {
3557
-      swiper.loopDestroy();
3558
-      swiper.loopCreate();
3559
-      swiper.updateSlides();
3560
-      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
3561
-    }
3562
-
3563
-    swiper.emit('breakpoint', breakpointParams);
3564
-  }
3565
-}
3566
-
3567
-function getBreakpoint (breakpoints) {
3568
-  // Get breakpoint for window width
3569
-  if (!breakpoints) return undefined;
3570
-  let breakpoint = false;
3571
-
3572
-  const points = Object.keys(breakpoints).map((point) => {
3573
-    if (typeof point === 'string' && point.indexOf('@') === 0) {
3574
-      const minRatio = parseFloat(point.substr(1));
3575
-      const value = win.innerHeight * minRatio;
3576
-      return { value, point };
3577
-    }
3578
-    return { value: point, point };
3579
-  });
3580
-
3581
-  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
3582
-  for (let i = 0; i < points.length; i += 1) {
3583
-    const { point, value } = points[i];
3584
-    if (value <= win.innerWidth) {
3585
-      breakpoint = point;
3586
-    }
3587
-  }
3588
-  return breakpoint || 'max';
3589
-}
3590
-
3591
-var breakpoints = { setBreakpoint, getBreakpoint };
3592
-
3593
-function addClasses () {
3594
-  const swiper = this;
3595
-  const {
3596
-    classNames, params, rtl, $el,
3597
-  } = swiper;
3598
-  const suffixes = [];
3599
-
3600
-  suffixes.push('initialized');
3601
-  suffixes.push(params.direction);
3602
-
3603
-  if (params.freeMode) {
3604
-    suffixes.push('free-mode');
3605
-  }
3606
-  if (params.autoHeight) {
3607
-    suffixes.push('autoheight');
3608
-  }
3609
-  if (rtl) {
3610
-    suffixes.push('rtl');
3611
-  }
3612
-  if (params.slidesPerColumn > 1) {
3613
-    suffixes.push('multirow');
3614
-    if (params.slidesPerColumnFill === 'column') {
3615
-      suffixes.push('multirow-column');
3616
-    }
3617
-  }
3618
-  if (Device.android) {
3619
-    suffixes.push('android');
3620
-  }
3621
-  if (Device.ios) {
3622
-    suffixes.push('ios');
3623
-  }
3624
-
3625
-  if (params.cssMode) {
3626
-    suffixes.push('css-mode');
3627
-  }
3628
-
3629
-  suffixes.forEach((suffix) => {
3630
-    classNames.push(params.containerModifierClass + suffix);
3631
-  });
3632
-
3633
-  $el.addClass(classNames.join(' '));
3634
-}
3635
-
3636
-function removeClasses () {
3637
-  const swiper = this;
3638
-  const { $el, classNames } = swiper;
3639
-
3640
-  $el.removeClass(classNames.join(' '));
3641
-}
3642
-
3643
-var classes = { addClasses, removeClasses };
3644
-
3645
-function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
3646
-  let image;
3647
-  function onReady() {
3648
-    if (callback) callback();
3649
-  }
3650
-  const isPicture = $(imageEl).parent('picture')[0];
3651
-
3652
-  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
3653
-    if (src) {
3654
-      image = new win.Image();
3655
-      image.onload = onReady;
3656
-      image.onerror = onReady;
3657
-      if (sizes) {
3658
-        image.sizes = sizes;
3659
-      }
3660
-      if (srcset) {
3661
-        image.srcset = srcset;
3662
-      }
3663
-      if (src) {
3664
-        image.src = src;
3665
-      }
3666
-    } else {
3667
-      onReady();
3668
-    }
3669
-  } else {
3670
-    // image already loaded...
3671
-    onReady();
3672
-  }
3673
-}
3674
-
3675
-function preloadImages () {
3676
-  const swiper = this;
3677
-  swiper.imagesToLoad = swiper.$el.find('img');
3678
-  function onReady() {
3679
-    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
3680
-    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
3681
-    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
3682
-      if (swiper.params.updateOnImagesReady) swiper.update();
3683
-      swiper.emit('imagesReady');
3684
-    }
3685
-  }
3686
-  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
3687
-    const imageEl = swiper.imagesToLoad[i];
3688
-    swiper.loadImage(
3689
-      imageEl,
3690
-      imageEl.currentSrc || imageEl.getAttribute('src'),
3691
-      imageEl.srcset || imageEl.getAttribute('srcset'),
3692
-      imageEl.sizes || imageEl.getAttribute('sizes'),
3693
-      true,
3694
-      onReady
3695
-    );
3696
-  }
3697
-}
3698
-
3699
-var images = {
3700
-  loadImage,
3701
-  preloadImages,
3702
-};
3703
-
3704
-function checkOverflow() {
3705
-  const swiper = this;
3706
-  const params = swiper.params;
3707
-  const wasLocked = swiper.isLocked;
3708
-  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
3709
-
3710
-  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
3711
-    swiper.isLocked = lastSlidePosition <= swiper.size;
3712
-  } else {
3713
-    swiper.isLocked = swiper.snapGrid.length === 1;
3714
-  }
3715
-
3716
-  swiper.allowSlideNext = !swiper.isLocked;
3717
-  swiper.allowSlidePrev = !swiper.isLocked;
3718
-
3719
-  // events
3720
-  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
3721
-
3722
-  if (wasLocked && wasLocked !== swiper.isLocked) {
3723
-    swiper.isEnd = false;
3724
-    swiper.navigation.update();
3725
-  }
3726
-}
3727
-
3728
-var checkOverflow$1 = { checkOverflow };
3729
-
3730
-var defaults = {
3731
-  init: true,
3732
-  direction: 'horizontal',
3733
-  touchEventsTarget: 'container',
3734
-  initialSlide: 0,
3735
-  speed: 300,
3736
-  cssMode: false,
3737
-  updateOnWindowResize: true,
3738
-  //
3739
-  preventInteractionOnTransition: false,
3740
-
3741
-  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
3742
-  edgeSwipeDetection: false,
3743
-  edgeSwipeThreshold: 20,
3744
-
3745
-  // Free mode
3746
-  freeMode: false,
3747
-  freeModeMomentum: true,
3748
-  freeModeMomentumRatio: 1,
3749
-  freeModeMomentumBounce: true,
3750
-  freeModeMomentumBounceRatio: 1,
3751
-  freeModeMomentumVelocityRatio: 1,
3752
-  freeModeSticky: false,
3753
-  freeModeMinimumVelocity: 0.02,
3754
-
3755
-  // Autoheight
3756
-  autoHeight: false,
3757
-
3758
-  // Set wrapper width
3759
-  setWrapperSize: false,
3760
-
3761
-  // Virtual Translate
3762
-  virtualTranslate: false,
3763
-
3764
-  // Effects
3765
-  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
3766
-
3767
-  // Breakpoints
3768
-  breakpoints: undefined,
3769
-
3770
-  // Slides grid
3771
-  spaceBetween: 0,
3772
-  slidesPerView: 1,
3773
-  slidesPerColumn: 1,
3774
-  slidesPerColumnFill: 'column',
3775
-  slidesPerGroup: 1,
3776
-  slidesPerGroupSkip: 0,
3777
-  centeredSlides: false,
3778
-  centeredSlidesBounds: false,
3779
-  slidesOffsetBefore: 0, // in px
3780
-  slidesOffsetAfter: 0, // in px
3781
-  normalizeSlideIndex: true,
3782
-  centerInsufficientSlides: false,
3783
-
3784
-  // Disable swiper and hide navigation when container not overflow
3785
-  watchOverflow: false,
3786
-
3787
-  // Round length
3788
-  roundLengths: false,
3789
-
3790
-  // Touches
3791
-  touchRatio: 1,
3792
-  touchAngle: 45,
3793
-  simulateTouch: true,
3794
-  shortSwipes: true,
3795
-  longSwipes: true,
3796
-  longSwipesRatio: 0.5,
3797
-  longSwipesMs: 300,
3798
-  followFinger: true,
3799
-  allowTouchMove: true,
3800
-  threshold: 0,
3801
-  touchMoveStopPropagation: false,
3802
-  touchStartPreventDefault: true,
3803
-  touchStartForcePreventDefault: false,
3804
-  touchReleaseOnEdges: false,
3805
-
3806
-  // Unique Navigation Elements
3807
-  uniqueNavElements: true,
3808
-
3809
-  // Resistance
3810
-  resistance: true,
3811
-  resistanceRatio: 0.85,
3812
-
3813
-  // Progress
3814
-  watchSlidesProgress: false,
3815
-  watchSlidesVisibility: false,
3816
-
3817
-  // Cursor
3818
-  grabCursor: false,
3819
-
3820
-  // Clicks
3821
-  preventClicks: true,
3822
-  preventClicksPropagation: true,
3823
-  slideToClickedSlide: false,
3824
-
3825
-  // Images
3826
-  preloadImages: true,
3827
-  updateOnImagesReady: true,
3828
-
3829
-  // loop
3830
-  loop: false,
3831
-  loopAdditionalSlides: 0,
3832
-  loopedSlides: null,
3833
-  loopFillGroupWithBlank: false,
3834
-
3835
-  // Swiping/no swiping
3836
-  allowSlidePrev: true,
3837
-  allowSlideNext: true,
3838
-  swipeHandler: null, // '.swipe-handler',
3839
-  noSwiping: true,
3840
-  noSwipingClass: 'swiper-no-swiping',
3841
-  noSwipingSelector: null,
3842
-
3843
-  // Passive Listeners
3844
-  passiveListeners: true,
3845
-
3846
-  // NS
3847
-  containerModifierClass: 'swiper-container-', // NEW
3848
-  slideClass: 'swiper-slide',
3849
-  slideBlankClass: 'swiper-slide-invisible-blank',
3850
-  slideActiveClass: 'swiper-slide-active',
3851
-  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
3852
-  slideVisibleClass: 'swiper-slide-visible',
3853
-  slideDuplicateClass: 'swiper-slide-duplicate',
3854
-  slideNextClass: 'swiper-slide-next',
3855
-  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
3856
-  slidePrevClass: 'swiper-slide-prev',
3857
-  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
3858
-  wrapperClass: 'swiper-wrapper',
3859
-
3860
-  // Callbacks
3861
-  runCallbacksOnInit: true,
3862
-};
3863
-
3864
-/* eslint no-param-reassign: "off" */
3865
-
3866
-const prototypes = {
3867
-  update,
3868
-  translate,
3869
-  transition: transition$1,
3870
-  slide,
3871
-  loop,
3872
-  grabCursor,
3873
-  manipulation,
3874
-  events,
3875
-  breakpoints,
3876
-  checkOverflow: checkOverflow$1,
3877
-  classes,
3878
-  images,
3879
-};
3880
-
3881
-const extendedDefaults = {};
3882
-
3883
-class Swiper extends SwiperClass {
3884
-  constructor(...args) {
3885
-    let el;
3886
-    let params;
3887
-    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
3888
-      params = args[0];
3889
-    } else {
3890
-      [el, params] = args;
3891
-    }
3892
-    if (!params) params = {};
3893
-
3894
-    params = Utils.extend({}, params);
3895
-    if (el && !params.el) params.el = el;
3896
-
3897
-    super(params);
3898
-
3899
-    Object.keys(prototypes).forEach((prototypeGroup) => {
3900
-      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
3901
-        if (!Swiper.prototype[protoMethod]) {
3902
-          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3903
-        }
3904
-      });
3905
-    });
3906
-
3907
-    // Swiper Instance
3908
-    const swiper = this;
3909
-    if (typeof swiper.modules === 'undefined') {
3910
-      swiper.modules = {};
3911
-    }
3912
-    Object.keys(swiper.modules).forEach((moduleName) => {
3913
-      const module = swiper.modules[moduleName];
3914
-      if (module.params) {
3915
-        const moduleParamName = Object.keys(module.params)[0];
3916
-        const moduleParams = module.params[moduleParamName];
3917
-        if (typeof moduleParams !== 'object' || moduleParams === null) return;
3918
-        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
3919
-        if (params[moduleParamName] === true) {
3920
-          params[moduleParamName] = { enabled: true };
3921
-        }
3922
-        if (
3923
-          typeof params[moduleParamName] === 'object'
3924
-          && !('enabled' in params[moduleParamName])
3925
-        ) {
3926
-          params[moduleParamName].enabled = true;
3927
-        }
3928
-        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
3929
-      }
3930
-    });
3931
-
3932
-    // Extend defaults with modules params
3933
-    const swiperParams = Utils.extend({}, defaults);
3934
-    swiper.useModulesParams(swiperParams);
3935
-
3936
-    // Extend defaults with passed params
3937
-    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
3938
-    swiper.originalParams = Utils.extend({}, swiper.params);
3939
-    swiper.passedParams = Utils.extend({}, params);
3940
-
3941
-    // Save Dom lib
3942
-    swiper.$ = $;
3943
-
3944
-    // Find el
3945
-    const $el = $(swiper.params.el);
3946
-    el = $el[0];
3947
-
3948
-    if (!el) {
3949
-      return undefined;
3950
-    }
3951
-
3952
-    if ($el.length > 1) {
3953
-      const swipers = [];
3954
-      $el.each((index, containerEl) => {
3955
-        const newParams = Utils.extend({}, params, { el: containerEl });
3956
-        swipers.push(new Swiper(newParams));
3957
-      });
3958
-      return swipers;
3959
-    }
3960
-
3961
-    el.swiper = swiper;
3962
-    $el.data('swiper', swiper);
3963
-
3964
-    // Find Wrapper
3965
-    let $wrapperEl;
3966
-    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
3967
-      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));
3968
-      // Children needs to return slot items
3969
-      $wrapperEl.children = (options) => $el.children(options);
3970
-    } else {
3971
-      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);
3972
-    }
3973
-    // Extend Swiper
3974
-    Utils.extend(swiper, {
3975
-      $el,
3976
-      el,
3977
-      $wrapperEl,
3978
-      wrapperEl: $wrapperEl[0],
3979
-
3980
-      // Classes
3981
-      classNames: [],
3982
-
3983
-      // Slides
3984
-      slides: $(),
3985
-      slidesGrid: [],
3986
-      snapGrid: [],
3987
-      slidesSizesGrid: [],
3988
-
3989
-      // isDirection
3990
-      isHorizontal() {
3991
-        return swiper.params.direction === 'horizontal';
3992
-      },
3993
-      isVertical() {
3994
-        return swiper.params.direction === 'vertical';
3995
-      },
3996
-      // RTL
3997
-      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3998
-      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3999
-      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
4000
-
4001
-      // Indexes
4002
-      activeIndex: 0,
4003
-      realIndex: 0,
4004
-
4005
-      //
4006
-      isBeginning: true,
4007
-      isEnd: false,
4008
-
4009
-      // Props
4010
-      translate: 0,
4011
-      previousTranslate: 0,
4012
-      progress: 0,
4013
-      velocity: 0,
4014
-      animating: false,
4015
-
4016
-      // Locks
4017
-      allowSlideNext: swiper.params.allowSlideNext,
4018
-      allowSlidePrev: swiper.params.allowSlidePrev,
4019
-
4020
-      // Touch Events
4021
-      touchEvents: (function touchEvents() {
4022
-        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4023
-        let desktop = ['mousedown', 'mousemove', 'mouseup'];
4024
-        if (Support.pointerEvents) {
4025
-          desktop = ['pointerdown', 'pointermove', 'pointerup'];
4026
-        }
4027
-        swiper.touchEventsTouch = {
4028
-          start: touch[0],
4029
-          move: touch[1],
4030
-          end: touch[2],
4031
-          cancel: touch[3],
4032
-        };
4033
-        swiper.touchEventsDesktop = {
4034
-          start: desktop[0],
4035
-          move: desktop[1],
4036
-          end: desktop[2],
4037
-        };
4038
-        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4039
-      }()),
4040
-      touchEventsData: {
4041
-        isTouched: undefined,
4042
-        isMoved: undefined,
4043
-        allowTouchCallbacks: undefined,
4044
-        touchStartTime: undefined,
4045
-        isScrolling: undefined,
4046
-        currentTranslate: undefined,
4047
-        startTranslate: undefined,
4048
-        allowThresholdMove: undefined,
4049
-        // Form elements to match
4050
-        formElements: 'input, select, option, textarea, button, video, label',
4051
-        // Last click time
4052
-        lastClickTime: Utils.now(),
4053
-        clickTimeout: undefined,
4054
-        // Velocities
4055
-        velocities: [],
4056
-        allowMomentumBounce: undefined,
4057
-        isTouchEvent: undefined,
4058
-        startMoving: undefined,
4059
-      },
4060
-
4061
-      // Clicks
4062
-      allowClick: true,
4063
-
4064
-      // Touches
4065
-      allowTouchMove: swiper.params.allowTouchMove,
4066
-
4067
-      touches: {
4068
-        startX: 0,
4069
-        startY: 0,
4070
-        currentX: 0,
4071
-        currentY: 0,
4072
-        diff: 0,
4073
-      },
4074
-
4075
-      // Images
4076
-      imagesToLoad: [],
4077
-      imagesLoaded: 0,
4078
-
4079
-    });
4080
-
4081
-    // Install Modules
4082
-    swiper.useModules();
4083
-
4084
-    // Init
4085
-    if (swiper.params.init) {
4086
-      swiper.init();
4087
-    }
4088
-
4089
-    // Return app instance
4090
-    return swiper;
4091
-  }
4092
-
4093
-  slidesPerViewDynamic() {
4094
-    const swiper = this;
4095
-    const {
4096
-      params, slides, slidesGrid, size: swiperSize, activeIndex,
4097
-    } = swiper;
4098
-    let spv = 1;
4099
-    if (params.centeredSlides) {
4100
-      let slideSize = slides[activeIndex].swiperSlideSize;
4101
-      let breakLoop;
4102
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
4103
-        if (slides[i] && !breakLoop) {
4104
-          slideSize += slides[i].swiperSlideSize;
4105
-          spv += 1;
4106
-          if (slideSize > swiperSize) breakLoop = true;
4107
-        }
4108
-      }
4109
-      for (let i = activeIndex - 1; i >= 0; i -= 1) {
4110
-        if (slides[i] && !breakLoop) {
4111
-          slideSize += slides[i].swiperSlideSize;
4112
-          spv += 1;
4113
-          if (slideSize > swiperSize) breakLoop = true;
4114
-        }
4115
-      }
4116
-    } else {
4117
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
4118
-        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
4119
-          spv += 1;
4120
-        }
4121
-      }
4122
-    }
4123
-    return spv;
4124
-  }
4125
-
4126
-  update() {
4127
-    const swiper = this;
4128
-    if (!swiper || swiper.destroyed) return;
4129
-    const { snapGrid, params } = swiper;
4130
-    // Breakpoints
4131
-    if (params.breakpoints) {
4132
-      swiper.setBreakpoint();
4133
-    }
4134
-    swiper.updateSize();
4135
-    swiper.updateSlides();
4136
-    swiper.updateProgress();
4137
-    swiper.updateSlidesClasses();
4138
-
4139
-    function setTranslate() {
4140
-      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4141
-      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4142
-      swiper.setTranslate(newTranslate);
4143
-      swiper.updateActiveIndex();
4144
-      swiper.updateSlidesClasses();
4145
-    }
4146
-    let translated;
4147
-    if (swiper.params.freeMode) {
4148
-      setTranslate();
4149
-      if (swiper.params.autoHeight) {
4150
-        swiper.updateAutoHeight();
4151
-      }
4152
-    } else {
4153
-      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4154
-        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4155
-      } else {
4156
-        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4157
-      }
4158
-      if (!translated) {
4159
-        setTranslate();
4160
-      }
4161
-    }
4162
-    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4163
-      swiper.checkOverflow();
4164
-    }
4165
-    swiper.emit('update');
4166
-  }
4167
-
4168
-  changeDirection(newDirection, needUpdate = true) {
4169
-    const swiper = this;
4170
-    const currentDirection = swiper.params.direction;
4171
-    if (!newDirection) {
4172
-      // eslint-disable-next-line
4173
-      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
4174
-    }
4175
-    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
4176
-      return swiper;
4177
-    }
4178
-
4179
-    swiper.$el
4180
-      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)
4181
-      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);
4182
-
4183
-    swiper.params.direction = newDirection;
4184
-
4185
-    swiper.slides.each((slideIndex, slideEl) => {
4186
-      if (newDirection === 'vertical') {
4187
-        slideEl.style.width = '';
4188
-      } else {
4189
-        slideEl.style.height = '';
4190
-      }
4191
-    });
4192
-
4193
-    swiper.emit('changeDirection');
4194
-    if (needUpdate) swiper.update();
4195
-
4196
-    return swiper;
4197
-  }
4198
-
4199
-  init() {
4200
-    const swiper = this;
4201
-    if (swiper.initialized) return;
4202
-
4203
-    swiper.emit('beforeInit');
4204
-
4205
-    // Set breakpoint
4206
-    if (swiper.params.breakpoints) {
4207
-      swiper.setBreakpoint();
4208
-    }
4209
-
4210
-    // Add Classes
4211
-    swiper.addClasses();
4212
-
4213
-    // Create loop
4214
-    if (swiper.params.loop) {
4215
-      swiper.loopCreate();
4216
-    }
4217
-
4218
-    // Update size
4219
-    swiper.updateSize();
4220
-
4221
-    // Update slides
4222
-    swiper.updateSlides();
4223
-
4224
-    if (swiper.params.watchOverflow) {
4225
-      swiper.checkOverflow();
4226
-    }
4227
-
4228
-    // Set Grab Cursor
4229
-    if (swiper.params.grabCursor) {
4230
-      swiper.setGrabCursor();
4231
-    }
4232
-
4233
-    if (swiper.params.preloadImages) {
4234
-      swiper.preloadImages();
4235
-    }
4236
-
4237
-    // Slide To Initial Slide
4238
-    if (swiper.params.loop) {
4239
-      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
4240
-    } else {
4241
-      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
4242
-    }
4243
-
4244
-    // Attach events
4245
-    swiper.attachEvents();
4246
-
4247
-    // Init Flag
4248
-    swiper.initialized = true;
4249
-
4250
-    // Emit
4251
-    swiper.emit('init');
4252
-  }
4253
-
4254
-  destroy(deleteInstance = true, cleanStyles = true) {
4255
-    const swiper = this;
4256
-    const {
4257
-      params, $el, $wrapperEl, slides,
4258
-    } = swiper;
4259
-
4260
-    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
4261
-      return null;
4262
-    }
4263
-
4264
-    swiper.emit('beforeDestroy');
4265
-
4266
-    // Init Flag
4267
-    swiper.initialized = false;
4268
-
4269
-    // Detach events
4270
-    swiper.detachEvents();
4271
-
4272
-    // Destroy loop
4273
-    if (params.loop) {
4274
-      swiper.loopDestroy();
4275
-    }
4276
-
4277
-    // Cleanup styles
4278
-    if (cleanStyles) {
4279
-      swiper.removeClasses();
4280
-      $el.removeAttr('style');
4281
-      $wrapperEl.removeAttr('style');
4282
-      if (slides && slides.length) {
4283
-        slides
4284
-          .removeClass([
4285
-            params.slideVisibleClass,
4286
-            params.slideActiveClass,
4287
-            params.slideNextClass,
4288
-            params.slidePrevClass,
4289
-          ].join(' '))
4290
-          .removeAttr('style')
4291
-          .removeAttr('data-swiper-slide-index');
4292
-      }
4293
-    }
4294
-
4295
-    swiper.emit('destroy');
4296
-
4297
-    // Detach emitter events
4298
-    Object.keys(swiper.eventsListeners).forEach((eventName) => {
4299
-      swiper.off(eventName);
4300
-    });
4301
-
4302
-    if (deleteInstance !== false) {
4303
-      swiper.$el[0].swiper = null;
4304
-      swiper.$el.data('swiper', null);
4305
-      Utils.deleteProps(swiper);
4306
-    }
4307
-    swiper.destroyed = true;
4308
-
4309
-    return null;
4310
-  }
4311
-
4312
-  static extendDefaults(newDefaults) {
4313
-    Utils.extend(extendedDefaults, newDefaults);
4314
-  }
4315
-
4316
-  static get extendedDefaults() {
4317
-    return extendedDefaults;
4318
-  }
4319
-
4320
-  static get defaults() {
4321
-    return defaults;
4322
-  }
4323
-
4324
-  static get Class() {
4325
-    return SwiperClass;
4326
-  }
4327
-
4328
-  static get $() {
4329
-    return $;
4330
-  }
4331
-}
4332
-
4333
-var Device$1 = {
4334
-  name: 'device',
4335
-  proto: {
4336
-    device: Device,
4337
-  },
4338
-  static: {
4339
-    device: Device,
4340
-  },
4341
-};
4342
-
4343
-var Support$1 = {
4344
-  name: 'support',
4345
-  proto: {
4346
-    support: Support,
4347
-  },
4348
-  static: {
4349
-    support: Support,
4350
-  },
4351
-};
4352
-
4353
-const Browser = (function Browser() {
4354
-  function isSafari() {
4355
-    const ua = win.navigator.userAgent.toLowerCase();
4356
-    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
4357
-  }
4358
-  return {
4359
-    isEdge: !!win.navigator.userAgent.match(/Edge/g),
4360
-    isSafari: isSafari(),
4361
-    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
4362
-  };
4363
-}());
4364
-
4365
-var Browser$1 = {
4366
-  name: 'browser',
4367
-  proto: {
4368
-    browser: Browser,
4369
-  },
4370
-  static: {
4371
-    browser: Browser,
4372
-  },
4373
-};
4374
-
4375
-var Resize = {
4376
-  name: 'resize',
4377
-  create() {
4378
-    const swiper = this;
4379
-    Utils.extend(swiper, {
4380
-      resize: {
4381
-        resizeHandler() {
4382
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
4383
-          swiper.emit('beforeResize');
4384
-          swiper.emit('resize');
4385
-        },
4386
-        orientationChangeHandler() {
4387
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
4388
-          swiper.emit('orientationchange');
4389
-        },
4390
-      },
4391
-    });
4392
-  },
4393
-  on: {
4394
-    init() {
4395
-      const swiper = this;
4396
-      // Emit resize
4397
-      win.addEventListener('resize', swiper.resize.resizeHandler);
4398
-
4399
-      // Emit orientationchange
4400
-      win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4401
-    },
4402
-    destroy() {
4403
-      const swiper = this;
4404
-      win.removeEventListener('resize', swiper.resize.resizeHandler);
4405
-      win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4406
-    },
4407
-  },
4408
-};
4409
-
4410
-const Observer = {
4411
-  func: win.MutationObserver || win.WebkitMutationObserver,
4412
-  attach(target, options = {}) {
4413
-    const swiper = this;
4414
-
4415
-    const ObserverFunc = Observer.func;
4416
-    const observer = new ObserverFunc((mutations) => {
4417
-      // The observerUpdate event should only be triggered
4418
-      // once despite the number of mutations.  Additional
4419
-      // triggers are redundant and are very costly
4420
-      if (mutations.length === 1) {
4421
-        swiper.emit('observerUpdate', mutations[0]);
4422
-        return;
4423
-      }
4424
-      const observerUpdate = function observerUpdate() {
4425
-        swiper.emit('observerUpdate', mutations[0]);
4426
-      };
4427
-
4428
-      if (win.requestAnimationFrame) {
4429
-        win.requestAnimationFrame(observerUpdate);
4430
-      } else {
4431
-        win.setTimeout(observerUpdate, 0);
4432
-      }
4433
-    });
4434
-
4435
-    observer.observe(target, {
4436
-      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
4437
-      childList: typeof options.childList === 'undefined' ? true : options.childList,
4438
-      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
4439
-    });
4440
-
4441
-    swiper.observer.observers.push(observer);
4442
-  },
4443
-  init() {
4444
-    const swiper = this;
4445
-    if (!Support.observer || !swiper.params.observer) return;
4446
-    if (swiper.params.observeParents) {
4447
-      const containerParents = swiper.$el.parents();
4448
-      for (let i = 0; i < containerParents.length; i += 1) {
4449
-        swiper.observer.attach(containerParents[i]);
4450
-      }
4451
-    }
4452
-    // Observe container
4453
-    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
4454
-
4455
-    // Observe wrapper
4456
-    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
4457
-  },
4458
-  destroy() {
4459
-    const swiper = this;
4460
-    swiper.observer.observers.forEach((observer) => {
4461
-      observer.disconnect();
4462
-    });
4463
-    swiper.observer.observers = [];
4464
-  },
4465
-};
4466
-
4467
-var Observer$1 = {
4468
-  name: 'observer',
4469
-  params: {
4470
-    observer: false,
4471
-    observeParents: false,
4472
-    observeSlideChildren: false,
4473
-  },
4474
-  create() {
4475
-    const swiper = this;
4476
-    Utils.extend(swiper, {
4477
-      observer: {
4478
-        init: Observer.init.bind(swiper),
4479
-        attach: Observer.attach.bind(swiper),
4480
-        destroy: Observer.destroy.bind(swiper),
4481
-        observers: [],
4482
-      },
4483
-    });
4484
-  },
4485
-  on: {
4486
-    init() {
4487
-      const swiper = this;
4488
-      swiper.observer.init();
4489
-    },
4490
-    destroy() {
4491
-      const swiper = this;
4492
-      swiper.observer.destroy();
4493
-    },
4494
-  },
4495
-};
4496
-
4497
-const Virtual = {
4498
-  update(force) {
4499
-    const swiper = this;
4500
-    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
4501
-    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
4502
-    const {
4503
-      from: previousFrom,
4504
-      to: previousTo,
4505
-      slides,
4506
-      slidesGrid: previousSlidesGrid,
4507
-      renderSlide,
4508
-      offset: previousOffset,
4509
-    } = swiper.virtual;
4510
-    swiper.updateActiveIndex();
4511
-    const activeIndex = swiper.activeIndex || 0;
4512
-
4513
-    let offsetProp;
4514
-    if (swiper.rtlTranslate) offsetProp = 'right';
4515
-    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
4516
-
4517
-    let slidesAfter;
4518
-    let slidesBefore;
4519
-    if (centeredSlides) {
4520
-      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
4521
-      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
4522
-    } else {
4523
-      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
4524
-      slidesBefore = slidesPerGroup + addSlidesAfter;
4525
-    }
4526
-    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
4527
-    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
4528
-    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
4529
-
4530
-    Utils.extend(swiper.virtual, {
4531
-      from,
4532
-      to,
4533
-      offset,
4534
-      slidesGrid: swiper.slidesGrid,
4535
-    });
4536
-
4537
-    function onRendered() {
4538
-      swiper.updateSlides();
4539
-      swiper.updateProgress();
4540
-      swiper.updateSlidesClasses();
4541
-      if (swiper.lazy && swiper.params.lazy.enabled) {
4542
-        swiper.lazy.load();
4543
-      }
4544
-    }
4545
-
4546
-    if (previousFrom === from && previousTo === to && !force) {
4547
-      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
4548
-        swiper.slides.css(offsetProp, `${offset}px`);
4549
-      }
4550
-      swiper.updateProgress();
4551
-      return;
4552
-    }
4553
-    if (swiper.params.virtual.renderExternal) {
4554
-      swiper.params.virtual.renderExternal.call(swiper, {
4555
-        offset,
4556
-        from,
4557
-        to,
4558
-        slides: (function getSlides() {
4559
-          const slidesToRender = [];
4560
-          for (let i = from; i <= to; i += 1) {
4561
-            slidesToRender.push(slides[i]);
4562
-          }
4563
-          return slidesToRender;
4564
-        }()),
4565
-      });
4566
-      onRendered();
4567
-      return;
4568
-    }
4569
-    const prependIndexes = [];
4570
-    const appendIndexes = [];
4571
-    if (force) {
4572
-      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
4573
-    } else {
4574
-      for (let i = previousFrom; i <= previousTo; i += 1) {
4575
-        if (i < from || i > to) {
4576
-          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
4577
-        }
4578
-      }
4579
-    }
4580
-    for (let i = 0; i < slides.length; i += 1) {
4581
-      if (i >= from && i <= to) {
4582
-        if (typeof previousTo === 'undefined' || force) {
4583
-          appendIndexes.push(i);
4584
-        } else {
4585
-          if (i > previousTo) appendIndexes.push(i);
4586
-          if (i < previousFrom) prependIndexes.push(i);
4587
-        }
4588
-      }
4589
-    }
4590
-    appendIndexes.forEach((index) => {
4591
-      swiper.$wrapperEl.append(renderSlide(slides[index], index));
4592
-    });
4593
-    prependIndexes.sort((a, b) => b - a).forEach((index) => {
4594
-      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
4595
-    });
4596
-    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
4597
-    onRendered();
4598
-  },
4599
-  renderSlide(slide, index) {
4600
-    const swiper = this;
4601
-    const params = swiper.params.virtual;
4602
-    if (params.cache && swiper.virtual.cache[index]) {
4603
-      return swiper.virtual.cache[index];
4604
-    }
4605
-    const $slideEl = params.renderSlide
4606
-      ? $(params.renderSlide.call(swiper, slide, index))
4607
-      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
4608
-    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
4609
-    if (params.cache) swiper.virtual.cache[index] = $slideEl;
4610
-    return $slideEl;
4611
-  },
4612
-  appendSlide(slides) {
4613
-    const swiper = this;
4614
-    if (typeof slides === 'object' && 'length' in slides) {
4615
-      for (let i = 0; i < slides.length; i += 1) {
4616
-        if (slides[i]) swiper.virtual.slides.push(slides[i]);
4617
-      }
4618
-    } else {
4619
-      swiper.virtual.slides.push(slides);
4620
-    }
4621
-    swiper.virtual.update(true);
4622
-  },
4623
-  prependSlide(slides) {
4624
-    const swiper = this;
4625
-    const activeIndex = swiper.activeIndex;
4626
-    let newActiveIndex = activeIndex + 1;
4627
-    let numberOfNewSlides = 1;
4628
-
4629
-    if (Array.isArray(slides)) {
4630
-      for (let i = 0; i < slides.length; i += 1) {
4631
-        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
4632
-      }
4633
-      newActiveIndex = activeIndex + slides.length;
4634
-      numberOfNewSlides = slides.length;
4635
-    } else {
4636
-      swiper.virtual.slides.unshift(slides);
4637
-    }
4638
-    if (swiper.params.virtual.cache) {
4639
-      const cache = swiper.virtual.cache;
4640
-      const newCache = {};
4641
-      Object.keys(cache).forEach((cachedIndex) => {
4642
-        const $cachedEl = cache[cachedIndex];
4643
-        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
4644
-        if (cachedElIndex) {
4645
-          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
4646
-        }
4647
-        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
4648
-      });
4649
-      swiper.virtual.cache = newCache;
4650
-    }
4651
-    swiper.virtual.update(true);
4652
-    swiper.slideTo(newActiveIndex, 0);
4653
-  },
4654
-  removeSlide(slidesIndexes) {
4655
-    const swiper = this;
4656
-    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
4657
-    let activeIndex = swiper.activeIndex;
4658
-    if (Array.isArray(slidesIndexes)) {
4659
-      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
4660
-        swiper.virtual.slides.splice(slidesIndexes[i], 1);
4661
-        if (swiper.params.virtual.cache) {
4662
-          delete swiper.virtual.cache[slidesIndexes[i]];
4663
-        }
4664
-        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
4665
-        activeIndex = Math.max(activeIndex, 0);
4666
-      }
4667
-    } else {
4668
-      swiper.virtual.slides.splice(slidesIndexes, 1);
4669
-      if (swiper.params.virtual.cache) {
4670
-        delete swiper.virtual.cache[slidesIndexes];
4671
-      }
4672
-      if (slidesIndexes < activeIndex) activeIndex -= 1;
4673
-      activeIndex = Math.max(activeIndex, 0);
4674
-    }
4675
-    swiper.virtual.update(true);
4676
-    swiper.slideTo(activeIndex, 0);
4677
-  },
4678
-  removeAllSlides() {
4679
-    const swiper = this;
4680
-    swiper.virtual.slides = [];
4681
-    if (swiper.params.virtual.cache) {
4682
-      swiper.virtual.cache = {};
4683
-    }
4684
-    swiper.virtual.update(true);
4685
-    swiper.slideTo(0, 0);
4686
-  },
4687
-};
4688
-
4689
-var Virtual$1 = {
4690
-  name: 'virtual',
4691
-  params: {
4692
-    virtual: {
4693
-      enabled: false,
4694
-      slides: [],
4695
-      cache: true,
4696
-      renderSlide: null,
4697
-      renderExternal: null,
4698
-      addSlidesBefore: 0,
4699
-      addSlidesAfter: 0,
4700
-    },
4701
-  },
4702
-  create() {
4703
-    const swiper = this;
4704
-    Utils.extend(swiper, {
4705
-      virtual: {
4706
-        update: Virtual.update.bind(swiper),
4707
-        appendSlide: Virtual.appendSlide.bind(swiper),
4708
-        prependSlide: Virtual.prependSlide.bind(swiper),
4709
-        removeSlide: Virtual.removeSlide.bind(swiper),
4710
-        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
4711
-        renderSlide: Virtual.renderSlide.bind(swiper),
4712
-        slides: swiper.params.virtual.slides,
4713
-        cache: {},
4714
-      },
4715
-    });
4716
-  },
4717
-  on: {
4718
-    beforeInit() {
4719
-      const swiper = this;
4720
-      if (!swiper.params.virtual.enabled) return;
4721
-      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
4722
-      const overwriteParams = {
4723
-        watchSlidesProgress: true,
4724
-      };
4725
-      Utils.extend(swiper.params, overwriteParams);
4726
-      Utils.extend(swiper.originalParams, overwriteParams);
4727
-
4728
-      if (!swiper.params.initialSlide) {
4729
-        swiper.virtual.update();
4730
-      }
4731
-    },
4732
-    setTranslate() {
4733
-      const swiper = this;
4734
-      if (!swiper.params.virtual.enabled) return;
4735
-      swiper.virtual.update();
4736
-    },
4737
-  },
4738
-};
4739
-
4740
-const Keyboard = {
4741
-  handle(event) {
4742
-    const swiper = this;
4743
-    const { rtlTranslate: rtl } = swiper;
4744
-    let e = event;
4745
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
4746
-    const kc = e.keyCode || e.charCode;
4747
-    // Directions locks
4748
-    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
4749
-      return false;
4750
-    }
4751
-    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
4752
-      return false;
4753
-    }
4754
-    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
4755
-      return undefined;
4756
-    }
4757
-    if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
4758
-      return undefined;
4759
-    }
4760
-    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
4761
-      let inView = false;
4762
-      // Check that swiper should be inside of visible area of window
4763
-      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
4764
-        return undefined;
4765
-      }
4766
-      const windowWidth = win.innerWidth;
4767
-      const windowHeight = win.innerHeight;
4768
-      const swiperOffset = swiper.$el.offset();
4769
-      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
4770
-      const swiperCoord = [
4771
-        [swiperOffset.left, swiperOffset.top],
4772
-        [swiperOffset.left + swiper.width, swiperOffset.top],
4773
-        [swiperOffset.left, swiperOffset.top + swiper.height],
4774
-        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],
4775
-      ];
4776
-      for (let i = 0; i < swiperCoord.length; i += 1) {
4777
-        const point = swiperCoord[i];
4778
-        if (
4779
-          point[0] >= 0 && point[0] <= windowWidth
4780
-          && point[1] >= 0 && point[1] <= windowHeight
4781
-        ) {
4782
-          inView = true;
4783
-        }
4784
-      }
4785
-      if (!inView) return undefined;
4786
-    }
4787
-    if (swiper.isHorizontal()) {
4788
-      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
4789
-        if (e.preventDefault) e.preventDefault();
4790
-        else e.returnValue = false;
4791
-      }
4792
-      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();
4793
-      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();
4794
-    } else {
4795
-      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
4796
-        if (e.preventDefault) e.preventDefault();
4797
-        else e.returnValue = false;
4798
-      }
4799
-      if (kc === 34 || kc === 40) swiper.slideNext();
4800
-      if (kc === 33 || kc === 38) swiper.slidePrev();
4801
-    }
4802
-    swiper.emit('keyPress', kc);
4803
-    return undefined;
4804
-  },
4805
-  enable() {
4806
-    const swiper = this;
4807
-    if (swiper.keyboard.enabled) return;
4808
-    $(doc).on('keydown', swiper.keyboard.handle);
4809
-    swiper.keyboard.enabled = true;
4810
-  },
4811
-  disable() {
4812
-    const swiper = this;
4813
-    if (!swiper.keyboard.enabled) return;
4814
-    $(doc).off('keydown', swiper.keyboard.handle);
4815
-    swiper.keyboard.enabled = false;
4816
-  },
4817
-};
4818
-
4819
-var Keyboard$1 = {
4820
-  name: 'keyboard',
4821
-  params: {
4822
-    keyboard: {
4823
-      enabled: false,
4824
-      onlyInViewport: true,
4825
-    },
4826
-  },
4827
-  create() {
4828
-    const swiper = this;
4829
-    Utils.extend(swiper, {
4830
-      keyboard: {
4831
-        enabled: false,
4832
-        enable: Keyboard.enable.bind(swiper),
4833
-        disable: Keyboard.disable.bind(swiper),
4834
-        handle: Keyboard.handle.bind(swiper),
4835
-      },
4836
-    });
4837
-  },
4838
-  on: {
4839
-    init() {
4840
-      const swiper = this;
4841
-      if (swiper.params.keyboard.enabled) {
4842
-        swiper.keyboard.enable();
4843
-      }
4844
-    },
4845
-    destroy() {
4846
-      const swiper = this;
4847
-      if (swiper.keyboard.enabled) {
4848
-        swiper.keyboard.disable();
4849
-      }
4850
-    },
4851
-  },
4852
-};
4853
-
4854
-function isEventSupported() {
4855
-  const eventName = 'onwheel';
4856
-  let isSupported = eventName in doc;
4857
-
4858
-  if (!isSupported) {
4859
-    const element = doc.createElement('div');
4860
-    element.setAttribute(eventName, 'return;');
4861
-    isSupported = typeof element[eventName] === 'function';
4862
-  }
4863
-
4864
-  if (!isSupported
4865
-    && doc.implementation
4866
-    && doc.implementation.hasFeature
4867
-    // always returns true in newer browsers as per the standard.
4868
-    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
4869
-    && doc.implementation.hasFeature('', '') !== true
4870
-  ) {
4871
-    // This is the only way to test support for the `wheel` event in IE9+.
4872
-    isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
4873
-  }
4874
-
4875
-  return isSupported;
4876
-}
4877
-const Mousewheel = {
4878
-  lastScrollTime: Utils.now(),
4879
-  lastEventBeforeSnap: undefined,
4880
-  recentWheelEvents: [],
4881
-  event() {
4882
-    if (win.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
4883
-    return isEventSupported() ? 'wheel' : 'mousewheel';
4884
-  },
4885
-  normalize(e) {
4886
-    // Reasonable defaults
4887
-    const PIXEL_STEP = 10;
4888
-    const LINE_HEIGHT = 40;
4889
-    const PAGE_HEIGHT = 800;
4890
-
4891
-    let sX = 0;
4892
-    let sY = 0; // spinX, spinY
4893
-    let pX = 0;
4894
-    let pY = 0; // pixelX, pixelY
4895
-
4896
-    // Legacy
4897
-    if ('detail' in e) {
4898
-      sY = e.detail;
4899
-    }
4900
-    if ('wheelDelta' in e) {
4901
-      sY = -e.wheelDelta / 120;
4902
-    }
4903
-    if ('wheelDeltaY' in e) {
4904
-      sY = -e.wheelDeltaY / 120;
4905
-    }
4906
-    if ('wheelDeltaX' in e) {
4907
-      sX = -e.wheelDeltaX / 120;
4908
-    }
4909
-
4910
-    // side scrolling on FF with DOMMouseScroll
4911
-    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
4912
-      sX = sY;
4913
-      sY = 0;
4914
-    }
4915
-
4916
-    pX = sX * PIXEL_STEP;
4917
-    pY = sY * PIXEL_STEP;
4918
-
4919
-    if ('deltaY' in e) {
4920
-      pY = e.deltaY;
4921
-    }
4922
-    if ('deltaX' in e) {
4923
-      pX = e.deltaX;
4924
-    }
4925
-
4926
-    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
4927
-      pX = pY;
4928
-      pY = 0;
4929
-    }
4930
-
4931
-    if ((pX || pY) && e.deltaMode) {
4932
-      if (e.deltaMode === 1) { // delta in LINE units
4933
-        pX *= LINE_HEIGHT;
4934
-        pY *= LINE_HEIGHT;
4935
-      } else { // delta in PAGE units
4936
-        pX *= PAGE_HEIGHT;
4937
-        pY *= PAGE_HEIGHT;
4938
-      }
4939
-    }
4940
-
4941
-    // Fall-back if spin cannot be determined
4942
-    if (pX && !sX) {
4943
-      sX = (pX < 1) ? -1 : 1;
4944
-    }
4945
-    if (pY && !sY) {
4946
-      sY = (pY < 1) ? -1 : 1;
4947
-    }
4948
-
4949
-    return {
4950
-      spinX: sX,
4951
-      spinY: sY,
4952
-      pixelX: pX,
4953
-      pixelY: pY,
4954
-    };
4955
-  },
4956
-  handleMouseEnter() {
4957
-    const swiper = this;
4958
-    swiper.mouseEntered = true;
4959
-  },
4960
-  handleMouseLeave() {
4961
-    const swiper = this;
4962
-    swiper.mouseEntered = false;
4963
-  },
4964
-  handle(event) {
4965
-    let e = event;
4966
-    const swiper = this;
4967
-    const params = swiper.params.mousewheel;
4968
-
4969
-    if (swiper.params.cssMode) {
4970
-      e.preventDefault();
4971
-    }
4972
-
4973
-    let target = swiper.$el;
4974
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4975
-      target = $(swiper.params.mousewheel.eventsTarged);
4976
-    }
4977
-    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
4978
-
4979
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
4980
-    let delta = 0;
4981
-    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
4982
-
4983
-    const data = Mousewheel.normalize(e);
4984
-
4985
-    if (params.forceToAxis) {
4986
-      if (swiper.isHorizontal()) {
4987
-        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;
4988
-        else return true;
4989
-      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;
4990
-      else return true;
4991
-    } else {
4992
-      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
4993
-    }
4994
-
4995
-    if (delta === 0) return true;
4996
-
4997
-    if (params.invert) delta = -delta;
4998
-
4999
-    if (!swiper.params.freeMode) {
5000
-      // Register the new event in a variable which stores the relevant data
5001
-      const newEvent = {
5002
-        time: Utils.now(),
5003
-        delta: Math.abs(delta),
5004
-        direction: Math.sign(delta),
5005
-        raw: event,
5006
-      };
5007
-
5008
-      // Keep the most recent events
5009
-      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5010
-      if (recentWheelEvents.length >= 2) {
5011
-        recentWheelEvents.shift(); // only store the last N events
5012
-      }
5013
-      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5014
-      recentWheelEvents.push(newEvent);
5015
-
5016
-      // If there is at least one previous recorded event:
5017
-      //   If direction has changed or
5018
-      //   if the scroll is quicker than the previous one:
5019
-      //     Animate the slider.
5020
-      // Else (this is the first time the wheel is moved):
5021
-      //     Animate the slider.
5022
-      if (prevEvent) {
5023
-        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5024
-          swiper.mousewheel.animateSlider(newEvent);
5025
-        }
5026
-      } else {
5027
-        swiper.mousewheel.animateSlider(newEvent);
5028
-      }
5029
-
5030
-      // If it's time to release the scroll:
5031
-      //   Return now so you don't hit the preventDefault.
5032
-      if (swiper.mousewheel.releaseScroll(newEvent)) {
5033
-        return true;
5034
-      }
5035
-    } else {
5036
-      // Freemode or scrollContainer:
5037
-
5038
-      // If we recently snapped after a momentum scroll, then ignore wheel events
5039
-      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5040
-      // or if it's a new scroll (larger delta or inverse sign as last event before
5041
-      // an end-of-momentum snap).
5042
-      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
5043
-      const { lastEventBeforeSnap } = swiper.mousewheel;
5044
-      const ignoreWheelEvents = lastEventBeforeSnap
5045
-        && newEvent.time < lastEventBeforeSnap.time + 500
5046
-        && newEvent.delta <= lastEventBeforeSnap.delta
5047
-        && newEvent.direction === lastEventBeforeSnap.direction;
5048
-      if (!ignoreWheelEvents) {
5049
-        swiper.mousewheel.lastEventBeforeSnap = undefined;
5050
-
5051
-        if (swiper.params.loop) {
5052
-          swiper.loopFix();
5053
-        }
5054
-        let position = swiper.getTranslate() + (delta * params.sensitivity);
5055
-        const wasBeginning = swiper.isBeginning;
5056
-        const wasEnd = swiper.isEnd;
5057
-
5058
-        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5059
-        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5060
-
5061
-        swiper.setTransition(0);
5062
-        swiper.setTranslate(position);
5063
-        swiper.updateProgress();
5064
-        swiper.updateActiveIndex();
5065
-        swiper.updateSlidesClasses();
5066
-
5067
-        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
5068
-          swiper.updateSlidesClasses();
5069
-        }
5070
-
5071
-        if (swiper.params.freeModeSticky) {
5072
-          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5073
-          // the end of a momentum scroll by storing recent (N=15?) wheel events.
5074
-          // 1. do all N events have decreasing or same (absolute value) delta?
5075
-          // 2. did all N events arrive in the last M (M=500?) msecs?
5076
-          // 3. does the earliest event have an (absolute value) delta that's
5077
-          //    at least P (P=1?) larger than the most recent event's delta?
5078
-          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5079
-          // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
5080
-          // Snap immediately and ignore remaining wheel events in this scroll.
5081
-          // See comment above for "remaining wheel events in this scroll" determination.
5082
-          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5083
-          clearTimeout(swiper.mousewheel.timeout);
5084
-          swiper.mousewheel.timeout = undefined;
5085
-          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5086
-          if (recentWheelEvents.length >= 15) {
5087
-            recentWheelEvents.shift(); // only store the last N events
5088
-          }
5089
-          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5090
-          const firstEvent = recentWheelEvents[0];
5091
-          recentWheelEvents.push(newEvent);
5092
-          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
5093
-            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5094
-            recentWheelEvents.splice(0);
5095
-          } else if (recentWheelEvents.length >= 15
5096
-              && newEvent.time - firstEvent.time < 500
5097
-              && firstEvent.delta - newEvent.delta >= 1
5098
-              && newEvent.delta <= 6
5099
-          ) {
5100
-            // We're at the end of the deceleration of a momentum scroll, so there's no need
5101
-            // to wait for more events. Snap ASAP on the next tick.
5102
-            // Also, because there's some remaining momentum we'll bias the snap in the
5103
-            // direction of the ongoing scroll because it's better UX for the scroll to snap
5104
-            // in the same direction as the scroll instead of reversing to snap.  Therefore,
5105
-            // if it's already scrolled more than 20% in the current direction, keep going.
5106
-            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
5107
-            swiper.mousewheel.lastEventBeforeSnap = newEvent;
5108
-            recentWheelEvents.splice(0);
5109
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
5110
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5111
-            }, 0); // no delay; move on next tick
5112
-          }
5113
-          if (!swiper.mousewheel.timeout) {
5114
-            // if we get here, then we haven't detected the end of a momentum scroll, so
5115
-            // we'll consider a scroll "complete" when there haven't been any wheel events
5116
-            // for 500ms.
5117
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
5118
-              const snapToThreshold = 0.5;
5119
-              swiper.mousewheel.lastEventBeforeSnap = newEvent;
5120
-              recentWheelEvents.splice(0);
5121
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5122
-            }, 500);
5123
-          }
5124
-        }
5125
-
5126
-        // Emit event
5127
-        if (!ignoreWheelEvents) swiper.emit('scroll', e);
5128
-
5129
-        // Stop autoplay
5130
-        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
5131
-        // Return page scroll on edge positions
5132
-        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
5133
-      }
5134
-    }
5135
-
5136
-    if (e.preventDefault) e.preventDefault();
5137
-    else e.returnValue = false;
5138
-    return false;
5139
-  },
5140
-  animateSlider(newEvent) {
5141
-    const swiper = this;
5142
-    // If the movement is NOT big enough and
5143
-    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5144
-    //   Don't go any further (avoid insignificant scroll movement).
5145
-    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
5146
-      // Return false as a default
5147
-      return true;
5148
-    }
5149
-    // If user is scrolling towards the end:
5150
-    //   If the slider hasn't hit the latest slide or
5151
-    //   if the slider is a loop and
5152
-    //   if the slider isn't moving right now:
5153
-    //     Go to next slide and
5154
-    //     emit a scroll event.
5155
-    // Else (the user is scrolling towards the beginning) and
5156
-    // if the slider hasn't hit the first slide or
5157
-    // if the slider is a loop and
5158
-    // if the slider isn't moving right now:
5159
-    //   Go to prev slide and
5160
-    //   emit a scroll event.
5161
-    if (newEvent.direction < 0) {
5162
-      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5163
-        swiper.slideNext();
5164
-        swiper.emit('scroll', newEvent.raw);
5165
-      }
5166
-    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5167
-      swiper.slidePrev();
5168
-      swiper.emit('scroll', newEvent.raw);
5169
-    }
5170
-    // If you got here is because an animation has been triggered so store the current time
5171
-    swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
5172
-    // Return false as a default
5173
-    return false;
5174
-  },
5175
-  releaseScroll(newEvent) {
5176
-    const swiper = this;
5177
-    const params = swiper.params.mousewheel;
5178
-    if (newEvent.direction < 0) {
5179
-      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5180
-        // Return true to animate scroll on edges
5181
-        return true;
5182
-      }
5183
-    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5184
-      // Return true to animate scroll on edges
5185
-      return true;
5186
-    }
5187
-    return false;
5188
-  },
5189
-  enable() {
5190
-    const swiper = this;
5191
-    const event = Mousewheel.event();
5192
-    if (swiper.params.cssMode) {
5193
-      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
5194
-      return true;
5195
-    }
5196
-    if (!event) return false;
5197
-    if (swiper.mousewheel.enabled) return false;
5198
-    let target = swiper.$el;
5199
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
5200
-      target = $(swiper.params.mousewheel.eventsTarged);
5201
-    }
5202
-    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
5203
-    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
5204
-    target.on(event, swiper.mousewheel.handle);
5205
-    swiper.mousewheel.enabled = true;
5206
-    return true;
5207
-  },
5208
-  disable() {
5209
-    const swiper = this;
5210
-    const event = Mousewheel.event();
5211
-    if (swiper.params.cssMode) {
5212
-      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
5213
-      return true;
5214
-    }
5215
-    if (!event) return false;
5216
-    if (!swiper.mousewheel.enabled) return false;
5217
-    let target = swiper.$el;
5218
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
5219
-      target = $(swiper.params.mousewheel.eventsTarged);
5220
-    }
5221
-    target.off(event, swiper.mousewheel.handle);
5222
-    swiper.mousewheel.enabled = false;
5223
-    return true;
5224
-  },
5225
-};
5226
-
5227
-var Mousewheel$1 = {
5228
-  name: 'mousewheel',
5229
-  params: {
5230
-    mousewheel: {
5231
-      enabled: false,
5232
-      releaseOnEdges: false,
5233
-      invert: false,
5234
-      forceToAxis: false,
5235
-      sensitivity: 1,
5236
-      eventsTarged: 'container',
5237
-    },
5238
-  },
5239
-  create() {
5240
-    const swiper = this;
5241
-    Utils.extend(swiper, {
5242
-      mousewheel: {
5243
-        enabled: false,
5244
-        enable: Mousewheel.enable.bind(swiper),
5245
-        disable: Mousewheel.disable.bind(swiper),
5246
-        handle: Mousewheel.handle.bind(swiper),
5247
-        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
5248
-        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
5249
-        animateSlider: Mousewheel.animateSlider.bind(swiper),
5250
-        releaseScroll: Mousewheel.releaseScroll.bind(swiper),
5251
-        lastScrollTime: Utils.now(),
5252
-        lastEventBeforeSnap: undefined,
5253
-        recentWheelEvents: [],
5254
-      },
5255
-    });
5256
-  },
5257
-  on: {
5258
-    init() {
5259
-      const swiper = this;
5260
-      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5261
-        swiper.mousewheel.disable();
5262
-      }
5263
-      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
5264
-    },
5265
-    destroy() {
5266
-      const swiper = this;
5267
-      if (swiper.params.cssMode) {
5268
-        swiper.mousewheel.enable();
5269
-      }
5270
-      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
5271
-    },
5272
-  },
5273
-};
5274
-
5275
-const Navigation = {
5276
-  update() {
5277
-    // Update Navigation Buttons
5278
-    const swiper = this;
5279
-    const params = swiper.params.navigation;
5280
-
5281
-    if (swiper.params.loop) return;
5282
-    const { $nextEl, $prevEl } = swiper.navigation;
5283
-
5284
-    if ($prevEl && $prevEl.length > 0) {
5285
-      if (swiper.isBeginning) {
5286
-        $prevEl.addClass(params.disabledClass);
5287
-      } else {
5288
-        $prevEl.removeClass(params.disabledClass);
5289
-      }
5290
-      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5291
-    }
5292
-    if ($nextEl && $nextEl.length > 0) {
5293
-      if (swiper.isEnd) {
5294
-        $nextEl.addClass(params.disabledClass);
5295
-      } else {
5296
-        $nextEl.removeClass(params.disabledClass);
5297
-      }
5298
-      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5299
-    }
5300
-  },
5301
-  onPrevClick(e) {
5302
-    const swiper = this;
5303
-    e.preventDefault();
5304
-    if (swiper.isBeginning && !swiper.params.loop) return;
5305
-    swiper.slidePrev();
5306
-  },
5307
-  onNextClick(e) {
5308
-    const swiper = this;
5309
-    e.preventDefault();
5310
-    if (swiper.isEnd && !swiper.params.loop) return;
5311
-    swiper.slideNext();
5312
-  },
5313
-  init() {
5314
-    const swiper = this;
5315
-    const params = swiper.params.navigation;
5316
-    if (!(params.nextEl || params.prevEl)) return;
5317
-
5318
-    let $nextEl;
5319
-    let $prevEl;
5320
-    if (params.nextEl) {
5321
-      $nextEl = $(params.nextEl);
5322
-      if (
5323
-        swiper.params.uniqueNavElements
5324
-        && typeof params.nextEl === 'string'
5325
-        && $nextEl.length > 1
5326
-        && swiper.$el.find(params.nextEl).length === 1
5327
-      ) {
5328
-        $nextEl = swiper.$el.find(params.nextEl);
5329
-      }
5330
-    }
5331
-    if (params.prevEl) {
5332
-      $prevEl = $(params.prevEl);
5333
-      if (
5334
-        swiper.params.uniqueNavElements
5335
-        && typeof params.prevEl === 'string'
5336
-        && $prevEl.length > 1
5337
-        && swiper.$el.find(params.prevEl).length === 1
5338
-      ) {
5339
-        $prevEl = swiper.$el.find(params.prevEl);
5340
-      }
5341
-    }
5342
-
5343
-    if ($nextEl && $nextEl.length > 0) {
5344
-      $nextEl.on('click', swiper.navigation.onNextClick);
5345
-    }
5346
-    if ($prevEl && $prevEl.length > 0) {
5347
-      $prevEl.on('click', swiper.navigation.onPrevClick);
5348
-    }
5349
-
5350
-    Utils.extend(swiper.navigation, {
5351
-      $nextEl,
5352
-      nextEl: $nextEl && $nextEl[0],
5353
-      $prevEl,
5354
-      prevEl: $prevEl && $prevEl[0],
5355
-    });
5356
-  },
5357
-  destroy() {
5358
-    const swiper = this;
5359
-    const { $nextEl, $prevEl } = swiper.navigation;
5360
-    if ($nextEl && $nextEl.length) {
5361
-      $nextEl.off('click', swiper.navigation.onNextClick);
5362
-      $nextEl.removeClass(swiper.params.navigation.disabledClass);
5363
-    }
5364
-    if ($prevEl && $prevEl.length) {
5365
-      $prevEl.off('click', swiper.navigation.onPrevClick);
5366
-      $prevEl.removeClass(swiper.params.navigation.disabledClass);
5367
-    }
5368
-  },
5369
-};
5370
-
5371
-var Navigation$1 = {
5372
-  name: 'navigation',
5373
-  params: {
5374
-    navigation: {
5375
-      nextEl: null,
5376
-      prevEl: null,
5377
-
5378
-      hideOnClick: false,
5379
-      disabledClass: 'swiper-button-disabled',
5380
-      hiddenClass: 'swiper-button-hidden',
5381
-      lockClass: 'swiper-button-lock',
5382
-    },
5383
-  },
5384
-  create() {
5385
-    const swiper = this;
5386
-    Utils.extend(swiper, {
5387
-      navigation: {
5388
-        init: Navigation.init.bind(swiper),
5389
-        update: Navigation.update.bind(swiper),
5390
-        destroy: Navigation.destroy.bind(swiper),
5391
-        onNextClick: Navigation.onNextClick.bind(swiper),
5392
-        onPrevClick: Navigation.onPrevClick.bind(swiper),
5393
-      },
5394
-    });
5395
-  },
5396
-  on: {
5397
-    init() {
5398
-      const swiper = this;
5399
-      swiper.navigation.init();
5400
-      swiper.navigation.update();
5401
-    },
5402
-    toEdge() {
5403
-      const swiper = this;
5404
-      swiper.navigation.update();
5405
-    },
5406
-    fromEdge() {
5407
-      const swiper = this;
5408
-      swiper.navigation.update();
5409
-    },
5410
-    destroy() {
5411
-      const swiper = this;
5412
-      swiper.navigation.destroy();
5413
-    },
5414
-    click(e) {
5415
-      const swiper = this;
5416
-      const { $nextEl, $prevEl } = swiper.navigation;
5417
-      if (
5418
-        swiper.params.navigation.hideOnClick
5419
-        && !$(e.target).is($prevEl)
5420
-        && !$(e.target).is($nextEl)
5421
-      ) {
5422
-        let isHidden;
5423
-        if ($nextEl) {
5424
-          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
5425
-        } else if ($prevEl) {
5426
-          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
5427
-        }
5428
-        if (isHidden === true) {
5429
-          swiper.emit('navigationShow', swiper);
5430
-        } else {
5431
-          swiper.emit('navigationHide', swiper);
5432
-        }
5433
-        if ($nextEl) {
5434
-          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
5435
-        }
5436
-        if ($prevEl) {
5437
-          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
5438
-        }
5439
-      }
5440
-    },
5441
-  },
5442
-};
5443
-
5444
-const Pagination = {
5445
-  update() {
5446
-    // Render || Update Pagination bullets/items
5447
-    const swiper = this;
5448
-    const rtl = swiper.rtl;
5449
-    const params = swiper.params.pagination;
5450
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
5451
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5452
-    const $el = swiper.pagination.$el;
5453
-    // Current/Total
5454
-    let current;
5455
-    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5456
-    if (swiper.params.loop) {
5457
-      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
5458
-      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
5459
-        current -= (slidesLength - (swiper.loopedSlides * 2));
5460
-      }
5461
-      if (current > total - 1) current -= total;
5462
-      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
5463
-    } else if (typeof swiper.snapIndex !== 'undefined') {
5464
-      current = swiper.snapIndex;
5465
-    } else {
5466
-      current = swiper.activeIndex || 0;
5467
-    }
5468
-    // Types
5469
-    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
5470
-      const bullets = swiper.pagination.bullets;
5471
-      let firstIndex;
5472
-      let lastIndex;
5473
-      let midIndex;
5474
-      if (params.dynamicBullets) {
5475
-        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
5476
-        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
5477
-        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
5478
-          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
5479
-          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
5480
-            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
5481
-          } else if (swiper.pagination.dynamicBulletIndex < 0) {
5482
-            swiper.pagination.dynamicBulletIndex = 0;
5483
-          }
5484
-        }
5485
-        firstIndex = current - swiper.pagination.dynamicBulletIndex;
5486
-        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
5487
-        midIndex = (lastIndex + firstIndex) / 2;
5488
-      }
5489
-      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
5490
-      if ($el.length > 1) {
5491
-        bullets.each((index, bullet) => {
5492
-          const $bullet = $(bullet);
5493
-          const bulletIndex = $bullet.index();
5494
-          if (bulletIndex === current) {
5495
-            $bullet.addClass(params.bulletActiveClass);
5496
-          }
5497
-          if (params.dynamicBullets) {
5498
-            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
5499
-              $bullet.addClass(`${params.bulletActiveClass}-main`);
5500
-            }
5501
-            if (bulletIndex === firstIndex) {
5502
-              $bullet
5503
-                .prev()
5504
-                .addClass(`${params.bulletActiveClass}-prev`)
5505
-                .prev()
5506
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
5507
-            }
5508
-            if (bulletIndex === lastIndex) {
5509
-              $bullet
5510
-                .next()
5511
-                .addClass(`${params.bulletActiveClass}-next`)
5512
-                .next()
5513
-                .addClass(`${params.bulletActiveClass}-next-next`);
5514
-            }
5515
-          }
5516
-        });
5517
-      } else {
5518
-        const $bullet = bullets.eq(current);
5519
-        const bulletIndex = $bullet.index();
5520
-        $bullet.addClass(params.bulletActiveClass);
5521
-        if (params.dynamicBullets) {
5522
-          const $firstDisplayedBullet = bullets.eq(firstIndex);
5523
-          const $lastDisplayedBullet = bullets.eq(lastIndex);
5524
-          for (let i = firstIndex; i <= lastIndex; i += 1) {
5525
-            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
5526
-          }
5527
-          if (swiper.params.loop) {
5528
-            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
5529
-              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
5530
-                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
5531
-              }
5532
-              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
5533
-            } else {
5534
-              $firstDisplayedBullet
5535
-                .prev()
5536
-                .addClass(`${params.bulletActiveClass}-prev`)
5537
-                .prev()
5538
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
5539
-              $lastDisplayedBullet
5540
-                .next()
5541
-                .addClass(`${params.bulletActiveClass}-next`)
5542
-                .next()
5543
-                .addClass(`${params.bulletActiveClass}-next-next`);
5544
-            }
5545
-          } else {
5546
-            $firstDisplayedBullet
5547
-              .prev()
5548
-              .addClass(`${params.bulletActiveClass}-prev`)
5549
-              .prev()
5550
-              .addClass(`${params.bulletActiveClass}-prev-prev`);
5551
-            $lastDisplayedBullet
5552
-              .next()
5553
-              .addClass(`${params.bulletActiveClass}-next`)
5554
-              .next()
5555
-              .addClass(`${params.bulletActiveClass}-next-next`);
5556
-          }
5557
-        }
5558
-      }
5559
-      if (params.dynamicBullets) {
5560
-        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
5561
-        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
5562
-        const offsetProp = rtl ? 'right' : 'left';
5563
-        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
5564
-      }
5565
-    }
5566
-    if (params.type === 'fraction') {
5567
-      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
5568
-      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
5569
-    }
5570
-    if (params.type === 'progressbar') {
5571
-      let progressbarDirection;
5572
-      if (params.progressbarOpposite) {
5573
-        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
5574
-      } else {
5575
-        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
5576
-      }
5577
-      const scale = (current + 1) / total;
5578
-      let scaleX = 1;
5579
-      let scaleY = 1;
5580
-      if (progressbarDirection === 'horizontal') {
5581
-        scaleX = scale;
5582
-      } else {
5583
-        scaleY = scale;
5584
-      }
5585
-      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
5586
-    }
5587
-    if (params.type === 'custom' && params.renderCustom) {
5588
-      $el.html(params.renderCustom(swiper, current + 1, total));
5589
-      swiper.emit('paginationRender', swiper, $el[0]);
5590
-    } else {
5591
-      swiper.emit('paginationUpdate', swiper, $el[0]);
5592
-    }
5593
-    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5594
-  },
5595
-  render() {
5596
-    // Render Container
5597
-    const swiper = this;
5598
-    const params = swiper.params.pagination;
5599
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
5600
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5601
-
5602
-    const $el = swiper.pagination.$el;
5603
-    let paginationHTML = '';
5604
-    if (params.type === 'bullets') {
5605
-      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5606
-      for (let i = 0; i < numberOfBullets; i += 1) {
5607
-        if (params.renderBullet) {
5608
-          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
5609
-        } else {
5610
-          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
5611
-        }
5612
-      }
5613
-      $el.html(paginationHTML);
5614
-      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);
5615
-    }
5616
-    if (params.type === 'fraction') {
5617
-      if (params.renderFraction) {
5618
-        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
5619
-      } else {
5620
-        paginationHTML = `<span class="${params.currentClass}"></span>`
5621
-        + ' / '
5622
-        + `<span class="${params.totalClass}"></span>`;
5623
-      }
5624
-      $el.html(paginationHTML);
5625
-    }
5626
-    if (params.type === 'progressbar') {
5627
-      if (params.renderProgressbar) {
5628
-        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
5629
-      } else {
5630
-        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
5631
-      }
5632
-      $el.html(paginationHTML);
5633
-    }
5634
-    if (params.type !== 'custom') {
5635
-      swiper.emit('paginationRender', swiper.pagination.$el[0]);
5636
-    }
5637
-  },
5638
-  init() {
5639
-    const swiper = this;
5640
-    const params = swiper.params.pagination;
5641
-    if (!params.el) return;
5642
-
5643
-    let $el = $(params.el);
5644
-    if ($el.length === 0) return;
5645
-
5646
-    if (
5647
-      swiper.params.uniqueNavElements
5648
-      && typeof params.el === 'string'
5649
-      && $el.length > 1
5650
-      && swiper.$el.find(params.el).length === 1
5651
-    ) {
5652
-      $el = swiper.$el.find(params.el);
5653
-    }
5654
-
5655
-    if (params.type === 'bullets' && params.clickable) {
5656
-      $el.addClass(params.clickableClass);
5657
-    }
5658
-
5659
-    $el.addClass(params.modifierClass + params.type);
5660
-
5661
-    if (params.type === 'bullets' && params.dynamicBullets) {
5662
-      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
5663
-      swiper.pagination.dynamicBulletIndex = 0;
5664
-      if (params.dynamicMainBullets < 1) {
5665
-        params.dynamicMainBullets = 1;
5666
-      }
5667
-    }
5668
-    if (params.type === 'progressbar' && params.progressbarOpposite) {
5669
-      $el.addClass(params.progressbarOppositeClass);
5670
-    }
5671
-
5672
-    if (params.clickable) {
5673
-      $el.on('click', `.${params.bulletClass}`, function onClick(e) {
5674
-        e.preventDefault();
5675
-        let index = $(this).index() * swiper.params.slidesPerGroup;
5676
-        if (swiper.params.loop) index += swiper.loopedSlides;
5677
-        swiper.slideTo(index);
5678
-      });
5679
-    }
5680
-
5681
-    Utils.extend(swiper.pagination, {
5682
-      $el,
5683
-      el: $el[0],
5684
-    });
5685
-  },
5686
-  destroy() {
5687
-    const swiper = this;
5688
-    const params = swiper.params.pagination;
5689
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
5690
-    const $el = swiper.pagination.$el;
5691
-
5692
-    $el.removeClass(params.hiddenClass);
5693
-    $el.removeClass(params.modifierClass + params.type);
5694
-    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
5695
-    if (params.clickable) {
5696
-      $el.off('click', `.${params.bulletClass}`);
5697
-    }
5698
-  },
5699
-};
5700
-
5701
-var Pagination$1 = {
5702
-  name: 'pagination',
5703
-  params: {
5704
-    pagination: {
5705
-      el: null,
5706
-      bulletElement: 'span',
5707
-      clickable: false,
5708
-      hideOnClick: false,
5709
-      renderBullet: null,
5710
-      renderProgressbar: null,
5711
-      renderFraction: null,
5712
-      renderCustom: null,
5713
-      progressbarOpposite: false,
5714
-      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
5715
-      dynamicBullets: false,
5716
-      dynamicMainBullets: 1,
5717
-      formatFractionCurrent: (number) => number,
5718
-      formatFractionTotal: (number) => number,
5719
-      bulletClass: 'swiper-pagination-bullet',
5720
-      bulletActiveClass: 'swiper-pagination-bullet-active',
5721
-      modifierClass: 'swiper-pagination-', // NEW
5722
-      currentClass: 'swiper-pagination-current',
5723
-      totalClass: 'swiper-pagination-total',
5724
-      hiddenClass: 'swiper-pagination-hidden',
5725
-      progressbarFillClass: 'swiper-pagination-progressbar-fill',
5726
-      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
5727
-      clickableClass: 'swiper-pagination-clickable', // NEW
5728
-      lockClass: 'swiper-pagination-lock',
5729
-    },
5730
-  },
5731
-  create() {
5732
-    const swiper = this;
5733
-    Utils.extend(swiper, {
5734
-      pagination: {
5735
-        init: Pagination.init.bind(swiper),
5736
-        render: Pagination.render.bind(swiper),
5737
-        update: Pagination.update.bind(swiper),
5738
-        destroy: Pagination.destroy.bind(swiper),
5739
-        dynamicBulletIndex: 0,
5740
-      },
5741
-    });
5742
-  },
5743
-  on: {
5744
-    init() {
5745
-      const swiper = this;
5746
-      swiper.pagination.init();
5747
-      swiper.pagination.render();
5748
-      swiper.pagination.update();
5749
-    },
5750
-    activeIndexChange() {
5751
-      const swiper = this;
5752
-      if (swiper.params.loop) {
5753
-        swiper.pagination.update();
5754
-      } else if (typeof swiper.snapIndex === 'undefined') {
5755
-        swiper.pagination.update();
5756
-      }
5757
-    },
5758
-    snapIndexChange() {
5759
-      const swiper = this;
5760
-      if (!swiper.params.loop) {
5761
-        swiper.pagination.update();
5762
-      }
5763
-    },
5764
-    slidesLengthChange() {
5765
-      const swiper = this;
5766
-      if (swiper.params.loop) {
5767
-        swiper.pagination.render();
5768
-        swiper.pagination.update();
5769
-      }
5770
-    },
5771
-    snapGridLengthChange() {
5772
-      const swiper = this;
5773
-      if (!swiper.params.loop) {
5774
-        swiper.pagination.render();
5775
-        swiper.pagination.update();
5776
-      }
5777
-    },
5778
-    destroy() {
5779
-      const swiper = this;
5780
-      swiper.pagination.destroy();
5781
-    },
5782
-    click(e) {
5783
-      const swiper = this;
5784
-      if (
5785
-        swiper.params.pagination.el
5786
-        && swiper.params.pagination.hideOnClick
5787
-        && swiper.pagination.$el.length > 0
5788
-        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
5789
-      ) {
5790
-        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
5791
-        if (isHidden === true) {
5792
-          swiper.emit('paginationShow', swiper);
5793
-        } else {
5794
-          swiper.emit('paginationHide', swiper);
5795
-        }
5796
-        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
5797
-      }
5798
-    },
5799
-  },
5800
-};
5801
-
5802
-const Scrollbar = {
5803
-  setTranslate() {
5804
-    const swiper = this;
5805
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5806
-    const { scrollbar, rtlTranslate: rtl, progress } = swiper;
5807
-    const {
5808
-      dragSize, trackSize, $dragEl, $el,
5809
-    } = scrollbar;
5810
-    const params = swiper.params.scrollbar;
5811
-
5812
-    let newSize = dragSize;
5813
-    let newPos = (trackSize - dragSize) * progress;
5814
-    if (rtl) {
5815
-      newPos = -newPos;
5816
-      if (newPos > 0) {
5817
-        newSize = dragSize - newPos;
5818
-        newPos = 0;
5819
-      } else if (-newPos + dragSize > trackSize) {
5820
-        newSize = trackSize + newPos;
5821
-      }
5822
-    } else if (newPos < 0) {
5823
-      newSize = dragSize + newPos;
5824
-      newPos = 0;
5825
-    } else if (newPos + dragSize > trackSize) {
5826
-      newSize = trackSize - newPos;
5827
-    }
5828
-    if (swiper.isHorizontal()) {
5829
-      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
5830
-      $dragEl[0].style.width = `${newSize}px`;
5831
-    } else {
5832
-      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
5833
-      $dragEl[0].style.height = `${newSize}px`;
5834
-    }
5835
-    if (params.hide) {
5836
-      clearTimeout(swiper.scrollbar.timeout);
5837
-      $el[0].style.opacity = 1;
5838
-      swiper.scrollbar.timeout = setTimeout(() => {
5839
-        $el[0].style.opacity = 0;
5840
-        $el.transition(400);
5841
-      }, 1000);
5842
-    }
5843
-  },
5844
-  setTransition(duration) {
5845
-    const swiper = this;
5846
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5847
-    swiper.scrollbar.$dragEl.transition(duration);
5848
-  },
5849
-  updateSize() {
5850
-    const swiper = this;
5851
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5852
-
5853
-    const { scrollbar } = swiper;
5854
-    const { $dragEl, $el } = scrollbar;
5855
-
5856
-    $dragEl[0].style.width = '';
5857
-    $dragEl[0].style.height = '';
5858
-    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
5859
-
5860
-    const divider = swiper.size / swiper.virtualSize;
5861
-    const moveDivider = divider * (trackSize / swiper.size);
5862
-    let dragSize;
5863
-    if (swiper.params.scrollbar.dragSize === 'auto') {
5864
-      dragSize = trackSize * divider;
5865
-    } else {
5866
-      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
5867
-    }
5868
-
5869
-    if (swiper.isHorizontal()) {
5870
-      $dragEl[0].style.width = `${dragSize}px`;
5871
-    } else {
5872
-      $dragEl[0].style.height = `${dragSize}px`;
5873
-    }
5874
-
5875
-    if (divider >= 1) {
5876
-      $el[0].style.display = 'none';
5877
-    } else {
5878
-      $el[0].style.display = '';
5879
-    }
5880
-    if (swiper.params.scrollbar.hide) {
5881
-      $el[0].style.opacity = 0;
5882
-    }
5883
-    Utils.extend(scrollbar, {
5884
-      trackSize,
5885
-      divider,
5886
-      moveDivider,
5887
-      dragSize,
5888
-    });
5889
-    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
5890
-  },
5891
-  getPointerPosition(e) {
5892
-    const swiper = this;
5893
-    if (swiper.isHorizontal()) {
5894
-      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
5895
-    }
5896
-    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
5897
-  },
5898
-  setDragPosition(e) {
5899
-    const swiper = this;
5900
-    const { scrollbar, rtlTranslate: rtl } = swiper;
5901
-    const {
5902
-      $el,
5903
-      dragSize,
5904
-      trackSize,
5905
-      dragStartPos,
5906
-    } = scrollbar;
5907
-
5908
-    let positionRatio;
5909
-    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
5910
-      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
5911
-    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
5912
-    if (rtl) {
5913
-      positionRatio = 1 - positionRatio;
5914
-    }
5915
-
5916
-    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
5917
-
5918
-    swiper.updateProgress(position);
5919
-    swiper.setTranslate(position);
5920
-    swiper.updateActiveIndex();
5921
-    swiper.updateSlidesClasses();
5922
-  },
5923
-  onDragStart(e) {
5924
-    const swiper = this;
5925
-    const params = swiper.params.scrollbar;
5926
-    const { scrollbar, $wrapperEl } = swiper;
5927
-    const { $el, $dragEl } = scrollbar;
5928
-    swiper.scrollbar.isTouched = true;
5929
-    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
5930
-      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
5931
-    e.preventDefault();
5932
-    e.stopPropagation();
5933
-
5934
-    $wrapperEl.transition(100);
5935
-    $dragEl.transition(100);
5936
-    scrollbar.setDragPosition(e);
5937
-
5938
-    clearTimeout(swiper.scrollbar.dragTimeout);
5939
-
5940
-    $el.transition(0);
5941
-    if (params.hide) {
5942
-      $el.css('opacity', 1);
5943
-    }
5944
-    if (swiper.params.cssMode) {
5945
-      swiper.$wrapperEl.css('scroll-snap-type', 'none');
5946
-    }
5947
-    swiper.emit('scrollbarDragStart', e);
5948
-  },
5949
-  onDragMove(e) {
5950
-    const swiper = this;
5951
-    const { scrollbar, $wrapperEl } = swiper;
5952
-    const { $el, $dragEl } = scrollbar;
5953
-
5954
-    if (!swiper.scrollbar.isTouched) return;
5955
-    if (e.preventDefault) e.preventDefault();
5956
-    else e.returnValue = false;
5957
-    scrollbar.setDragPosition(e);
5958
-    $wrapperEl.transition(0);
5959
-    $el.transition(0);
5960
-    $dragEl.transition(0);
5961
-    swiper.emit('scrollbarDragMove', e);
5962
-  },
5963
-  onDragEnd(e) {
5964
-    const swiper = this;
5965
-
5966
-    const params = swiper.params.scrollbar;
5967
-    const { scrollbar, $wrapperEl } = swiper;
5968
-    const { $el } = scrollbar;
5969
-
5970
-    if (!swiper.scrollbar.isTouched) return;
5971
-    swiper.scrollbar.isTouched = false;
5972
-    if (swiper.params.cssMode) {
5973
-      swiper.$wrapperEl.css('scroll-snap-type', '');
5974
-      $wrapperEl.transition('');
5975
-    }
5976
-    if (params.hide) {
5977
-      clearTimeout(swiper.scrollbar.dragTimeout);
5978
-      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {
5979
-        $el.css('opacity', 0);
5980
-        $el.transition(400);
5981
-      }, 1000);
5982
-    }
5983
-    swiper.emit('scrollbarDragEnd', e);
5984
-    if (params.snapOnRelease) {
5985
-      swiper.slideToClosest();
5986
-    }
5987
-  },
5988
-  enableDraggable() {
5989
-    const swiper = this;
5990
-    if (!swiper.params.scrollbar.el) return;
5991
-    const {
5992
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
5993
-    } = swiper;
5994
-    const $el = scrollbar.$el;
5995
-    const target = $el[0];
5996
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5997
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5998
-    if (!Support.touch) {
5999
-      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6000
-      doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6001
-      doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6002
-    } else {
6003
-      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6004
-      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6005
-      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6006
-    }
6007
-  },
6008
-  disableDraggable() {
6009
-    const swiper = this;
6010
-    if (!swiper.params.scrollbar.el) return;
6011
-    const {
6012
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
6013
-    } = swiper;
6014
-    const $el = scrollbar.$el;
6015
-    const target = $el[0];
6016
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
6017
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
6018
-    if (!Support.touch) {
6019
-      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6020
-      doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6021
-      doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6022
-    } else {
6023
-      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6024
-      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6025
-      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6026
-    }
6027
-  },
6028
-  init() {
6029
-    const swiper = this;
6030
-    if (!swiper.params.scrollbar.el) return;
6031
-    const { scrollbar, $el: $swiperEl } = swiper;
6032
-    const params = swiper.params.scrollbar;
6033
-
6034
-    let $el = $(params.el);
6035
-    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6036
-      $el = $swiperEl.find(params.el);
6037
-    }
6038
-
6039
-    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
6040
-    if ($dragEl.length === 0) {
6041
-      $dragEl = $(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
6042
-      $el.append($dragEl);
6043
-    }
6044
-
6045
-    Utils.extend(scrollbar, {
6046
-      $el,
6047
-      el: $el[0],
6048
-      $dragEl,
6049
-      dragEl: $dragEl[0],
6050
-    });
6051
-
6052
-    if (params.draggable) {
6053
-      scrollbar.enableDraggable();
6054
-    }
6055
-  },
6056
-  destroy() {
6057
-    const swiper = this;
6058
-    swiper.scrollbar.disableDraggable();
6059
-  },
6060
-};
6061
-
6062
-var Scrollbar$1 = {
6063
-  name: 'scrollbar',
6064
-  params: {
6065
-    scrollbar: {
6066
-      el: null,
6067
-      dragSize: 'auto',
6068
-      hide: false,
6069
-      draggable: false,
6070
-      snapOnRelease: true,
6071
-      lockClass: 'swiper-scrollbar-lock',
6072
-      dragClass: 'swiper-scrollbar-drag',
6073
-    },
6074
-  },
6075
-  create() {
6076
-    const swiper = this;
6077
-    Utils.extend(swiper, {
6078
-      scrollbar: {
6079
-        init: Scrollbar.init.bind(swiper),
6080
-        destroy: Scrollbar.destroy.bind(swiper),
6081
-        updateSize: Scrollbar.updateSize.bind(swiper),
6082
-        setTranslate: Scrollbar.setTranslate.bind(swiper),
6083
-        setTransition: Scrollbar.setTransition.bind(swiper),
6084
-        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
6085
-        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
6086
-        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
6087
-        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
6088
-        onDragStart: Scrollbar.onDragStart.bind(swiper),
6089
-        onDragMove: Scrollbar.onDragMove.bind(swiper),
6090
-        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
6091
-        isTouched: false,
6092
-        timeout: null,
6093
-        dragTimeout: null,
6094
-      },
6095
-    });
6096
-  },
6097
-  on: {
6098
-    init() {
6099
-      const swiper = this;
6100
-      swiper.scrollbar.init();
6101
-      swiper.scrollbar.updateSize();
6102
-      swiper.scrollbar.setTranslate();
6103
-    },
6104
-    update() {
6105
-      const swiper = this;
6106
-      swiper.scrollbar.updateSize();
6107
-    },
6108
-    resize() {
6109
-      const swiper = this;
6110
-      swiper.scrollbar.updateSize();
6111
-    },
6112
-    observerUpdate() {
6113
-      const swiper = this;
6114
-      swiper.scrollbar.updateSize();
6115
-    },
6116
-    setTranslate() {
6117
-      const swiper = this;
6118
-      swiper.scrollbar.setTranslate();
6119
-    },
6120
-    setTransition(duration) {
6121
-      const swiper = this;
6122
-      swiper.scrollbar.setTransition(duration);
6123
-    },
6124
-    destroy() {
6125
-      const swiper = this;
6126
-      swiper.scrollbar.destroy();
6127
-    },
6128
-  },
6129
-};
6130
-
6131
-const Parallax = {
6132
-  setTransform(el, progress) {
6133
-    const swiper = this;
6134
-    const { rtl } = swiper;
6135
-
6136
-    const $el = $(el);
6137
-    const rtlFactor = rtl ? -1 : 1;
6138
-
6139
-    const p = $el.attr('data-swiper-parallax') || '0';
6140
-    let x = $el.attr('data-swiper-parallax-x');
6141
-    let y = $el.attr('data-swiper-parallax-y');
6142
-    const scale = $el.attr('data-swiper-parallax-scale');
6143
-    const opacity = $el.attr('data-swiper-parallax-opacity');
6144
-
6145
-    if (x || y) {
6146
-      x = x || '0';
6147
-      y = y || '0';
6148
-    } else if (swiper.isHorizontal()) {
6149
-      x = p;
6150
-      y = '0';
6151
-    } else {
6152
-      y = p;
6153
-      x = '0';
6154
-    }
6155
-
6156
-    if ((x).indexOf('%') >= 0) {
6157
-      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
6158
-    } else {
6159
-      x = `${x * progress * rtlFactor}px`;
6160
-    }
6161
-    if ((y).indexOf('%') >= 0) {
6162
-      y = `${parseInt(y, 10) * progress}%`;
6163
-    } else {
6164
-      y = `${y * progress}px`;
6165
-    }
6166
-
6167
-    if (typeof opacity !== 'undefined' && opacity !== null) {
6168
-      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
6169
-      $el[0].style.opacity = currentOpacity;
6170
-    }
6171
-    if (typeof scale === 'undefined' || scale === null) {
6172
-      $el.transform(`translate3d(${x}, ${y}, 0px)`);
6173
-    } else {
6174
-      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
6175
-      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
6176
-    }
6177
-  },
6178
-  setTranslate() {
6179
-    const swiper = this;
6180
-    const {
6181
-      $el, slides, progress, snapGrid,
6182
-    } = swiper;
6183
-    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6184
-      .each((index, el) => {
6185
-        swiper.parallax.setTransform(el, progress);
6186
-      });
6187
-    slides.each((slideIndex, slideEl) => {
6188
-      let slideProgress = slideEl.progress;
6189
-      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6190
-        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
6191
-      }
6192
-      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6193
-      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6194
-        .each((index, el) => {
6195
-          swiper.parallax.setTransform(el, slideProgress);
6196
-        });
6197
-    });
6198
-  },
6199
-  setTransition(duration = this.params.speed) {
6200
-    const swiper = this;
6201
-    const { $el } = swiper;
6202
-    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6203
-      .each((index, parallaxEl) => {
6204
-        const $parallaxEl = $(parallaxEl);
6205
-        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
6206
-        if (duration === 0) parallaxDuration = 0;
6207
-        $parallaxEl.transition(parallaxDuration);
6208
-      });
6209
-  },
6210
-};
6211
-
6212
-var Parallax$1 = {
6213
-  name: 'parallax',
6214
-  params: {
6215
-    parallax: {
6216
-      enabled: false,
6217
-    },
6218
-  },
6219
-  create() {
6220
-    const swiper = this;
6221
-    Utils.extend(swiper, {
6222
-      parallax: {
6223
-        setTransform: Parallax.setTransform.bind(swiper),
6224
-        setTranslate: Parallax.setTranslate.bind(swiper),
6225
-        setTransition: Parallax.setTransition.bind(swiper),
6226
-      },
6227
-    });
6228
-  },
6229
-  on: {
6230
-    beforeInit() {
6231
-      const swiper = this;
6232
-      if (!swiper.params.parallax.enabled) return;
6233
-      swiper.params.watchSlidesProgress = true;
6234
-      swiper.originalParams.watchSlidesProgress = true;
6235
-    },
6236
-    init() {
6237
-      const swiper = this;
6238
-      if (!swiper.params.parallax.enabled) return;
6239
-      swiper.parallax.setTranslate();
6240
-    },
6241
-    setTranslate() {
6242
-      const swiper = this;
6243
-      if (!swiper.params.parallax.enabled) return;
6244
-      swiper.parallax.setTranslate();
6245
-    },
6246
-    setTransition(duration) {
6247
-      const swiper = this;
6248
-      if (!swiper.params.parallax.enabled) return;
6249
-      swiper.parallax.setTransition(duration);
6250
-    },
6251
-  },
6252
-};
6253
-
6254
-const Zoom = {
6255
-  // Calc Scale From Multi-touches
6256
-  getDistanceBetweenTouches(e) {
6257
-    if (e.targetTouches.length < 2) return 1;
6258
-    const x1 = e.targetTouches[0].pageX;
6259
-    const y1 = e.targetTouches[0].pageY;
6260
-    const x2 = e.targetTouches[1].pageX;
6261
-    const y2 = e.targetTouches[1].pageY;
6262
-    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));
6263
-    return distance;
6264
-  },
6265
-  // Events
6266
-  onGestureStart(e) {
6267
-    const swiper = this;
6268
-    const params = swiper.params.zoom;
6269
-    const zoom = swiper.zoom;
6270
-    const { gesture } = zoom;
6271
-    zoom.fakeGestureTouched = false;
6272
-    zoom.fakeGestureMoved = false;
6273
-    if (!Support.gestures) {
6274
-      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
6275
-        return;
6276
-      }
6277
-      zoom.fakeGestureTouched = true;
6278
-      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
6279
-    }
6280
-    if (!gesture.$slideEl || !gesture.$slideEl.length) {
6281
-      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);
6282
-      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6283
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6284
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
6285
-      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6286
-      if (gesture.$imageWrapEl.length === 0) {
6287
-        gesture.$imageEl = undefined;
6288
-        return;
6289
-      }
6290
-    }
6291
-    if (gesture.$imageEl) {
6292
-      gesture.$imageEl.transition(0);
6293
-    }
6294
-    swiper.zoom.isScaling = true;
6295
-  },
6296
-  onGestureChange(e) {
6297
-    const swiper = this;
6298
-    const params = swiper.params.zoom;
6299
-    const zoom = swiper.zoom;
6300
-    const { gesture } = zoom;
6301
-    if (!Support.gestures) {
6302
-      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
6303
-        return;
6304
-      }
6305
-      zoom.fakeGestureMoved = true;
6306
-      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
6307
-    }
6308
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6309
-    if (Support.gestures) {
6310
-      zoom.scale = e.scale * zoom.currentScale;
6311
-    } else {
6312
-      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
6313
-    }
6314
-    if (zoom.scale > gesture.maxRatio) {
6315
-      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);
6316
-    }
6317
-    if (zoom.scale < params.minRatio) {
6318
-      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);
6319
-    }
6320
-    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
6321
-  },
6322
-  onGestureEnd(e) {
6323
-    const swiper = this;
6324
-    const params = swiper.params.zoom;
6325
-    const zoom = swiper.zoom;
6326
-    const { gesture } = zoom;
6327
-    if (!Support.gestures) {
6328
-      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
6329
-        return;
6330
-      }
6331
-      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
6332
-        return;
6333
-      }
6334
-      zoom.fakeGestureTouched = false;
6335
-      zoom.fakeGestureMoved = false;
6336
-    }
6337
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6338
-    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
6339
-    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
6340
-    zoom.currentScale = zoom.scale;
6341
-    zoom.isScaling = false;
6342
-    if (zoom.scale === 1) gesture.$slideEl = undefined;
6343
-  },
6344
-  onTouchStart(e) {
6345
-    const swiper = this;
6346
-    const zoom = swiper.zoom;
6347
-    const { gesture, image } = zoom;
6348
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6349
-    if (image.isTouched) return;
6350
-    if (Device.android && e.cancelable) e.preventDefault();
6351
-    image.isTouched = true;
6352
-    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
6353
-    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
6354
-  },
6355
-  onTouchMove(e) {
6356
-    const swiper = this;
6357
-    const zoom = swiper.zoom;
6358
-    const { gesture, image, velocity } = zoom;
6359
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6360
-    swiper.allowClick = false;
6361
-    if (!image.isTouched || !gesture.$slideEl) return;
6362
-
6363
-    if (!image.isMoved) {
6364
-      image.width = gesture.$imageEl[0].offsetWidth;
6365
-      image.height = gesture.$imageEl[0].offsetHeight;
6366
-      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
6367
-      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
6368
-      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
6369
-      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
6370
-      gesture.$imageWrapEl.transition(0);
6371
-      if (swiper.rtl) {
6372
-        image.startX = -image.startX;
6373
-        image.startY = -image.startY;
6374
-      }
6375
-    }
6376
-    // Define if we need image drag
6377
-    const scaledWidth = image.width * zoom.scale;
6378
-    const scaledHeight = image.height * zoom.scale;
6379
-
6380
-    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
6381
-
6382
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
6383
-    image.maxX = -image.minX;
6384
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
6385
-    image.maxY = -image.minY;
6386
-
6387
-    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
6388
-    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
6389
-
6390
-    if (!image.isMoved && !zoom.isScaling) {
6391
-      if (
6392
-        swiper.isHorizontal()
6393
-        && (
6394
-          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
6395
-          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
6396
-        )
6397
-      ) {
6398
-        image.isTouched = false;
6399
-        return;
6400
-      } if (
6401
-        !swiper.isHorizontal()
6402
-        && (
6403
-          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
6404
-          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
6405
-        )
6406
-      ) {
6407
-        image.isTouched = false;
6408
-        return;
6409
-      }
6410
-    }
6411
-    if (e.cancelable) {
6412
-      e.preventDefault();
6413
-    }
6414
-    e.stopPropagation();
6415
-
6416
-    image.isMoved = true;
6417
-    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
6418
-    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
6419
-
6420
-    if (image.currentX < image.minX) {
6421
-      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);
6422
-    }
6423
-    if (image.currentX > image.maxX) {
6424
-      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);
6425
-    }
6426
-
6427
-    if (image.currentY < image.minY) {
6428
-      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);
6429
-    }
6430
-    if (image.currentY > image.maxY) {
6431
-      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);
6432
-    }
6433
-
6434
-    // Velocity
6435
-    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
6436
-    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
6437
-    if (!velocity.prevTime) velocity.prevTime = Date.now();
6438
-    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
6439
-    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
6440
-    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
6441
-    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
6442
-    velocity.prevPositionX = image.touchesCurrent.x;
6443
-    velocity.prevPositionY = image.touchesCurrent.y;
6444
-    velocity.prevTime = Date.now();
6445
-
6446
-    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
6447
-  },
6448
-  onTouchEnd() {
6449
-    const swiper = this;
6450
-    const zoom = swiper.zoom;
6451
-    const { gesture, image, velocity } = zoom;
6452
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6453
-    if (!image.isTouched || !image.isMoved) {
6454
-      image.isTouched = false;
6455
-      image.isMoved = false;
6456
-      return;
6457
-    }
6458
-    image.isTouched = false;
6459
-    image.isMoved = false;
6460
-    let momentumDurationX = 300;
6461
-    let momentumDurationY = 300;
6462
-    const momentumDistanceX = velocity.x * momentumDurationX;
6463
-    const newPositionX = image.currentX + momentumDistanceX;
6464
-    const momentumDistanceY = velocity.y * momentumDurationY;
6465
-    const newPositionY = image.currentY + momentumDistanceY;
6466
-
6467
-    // Fix duration
6468
-    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
6469
-    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
6470
-    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
6471
-
6472
-    image.currentX = newPositionX;
6473
-    image.currentY = newPositionY;
6474
-
6475
-    // Define if we need image drag
6476
-    const scaledWidth = image.width * zoom.scale;
6477
-    const scaledHeight = image.height * zoom.scale;
6478
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
6479
-    image.maxX = -image.minX;
6480
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
6481
-    image.maxY = -image.minY;
6482
-    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
6483
-    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
6484
-
6485
-    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
6486
-  },
6487
-  onTransitionEnd() {
6488
-    const swiper = this;
6489
-    const zoom = swiper.zoom;
6490
-    const { gesture } = zoom;
6491
-    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
6492
-      if (gesture.$imageEl) {
6493
-        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
6494
-      }
6495
-      if (gesture.$imageWrapEl) {
6496
-        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
6497
-      }
6498
-
6499
-      zoom.scale = 1;
6500
-      zoom.currentScale = 1;
6501
-
6502
-      gesture.$slideEl = undefined;
6503
-      gesture.$imageEl = undefined;
6504
-      gesture.$imageWrapEl = undefined;
6505
-    }
6506
-  },
6507
-  // Toggle Zoom
6508
-  toggle(e) {
6509
-    const swiper = this;
6510
-    const zoom = swiper.zoom;
6511
-
6512
-    if (zoom.scale && zoom.scale !== 1) {
6513
-      // Zoom Out
6514
-      zoom.out();
6515
-    } else {
6516
-      // Zoom In
6517
-      zoom.in(e);
6518
-    }
6519
-  },
6520
-  in(e) {
6521
-    const swiper = this;
6522
-
6523
-    const zoom = swiper.zoom;
6524
-    const params = swiper.params.zoom;
6525
-    const { gesture, image } = zoom;
6526
-
6527
-    if (!gesture.$slideEl) {
6528
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
6529
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
6530
-      } else {
6531
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6532
-      }
6533
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6534
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
6535
-    }
6536
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6537
-
6538
-    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
6539
-
6540
-    let touchX;
6541
-    let touchY;
6542
-    let offsetX;
6543
-    let offsetY;
6544
-    let diffX;
6545
-    let diffY;
6546
-    let translateX;
6547
-    let translateY;
6548
-    let imageWidth;
6549
-    let imageHeight;
6550
-    let scaledWidth;
6551
-    let scaledHeight;
6552
-    let translateMinX;
6553
-    let translateMinY;
6554
-    let translateMaxX;
6555
-    let translateMaxY;
6556
-    let slideWidth;
6557
-    let slideHeight;
6558
-
6559
-    if (typeof image.touchesStart.x === 'undefined' && e) {
6560
-      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
6561
-      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
6562
-    } else {
6563
-      touchX = image.touchesStart.x;
6564
-      touchY = image.touchesStart.y;
6565
-    }
6566
-
6567
-    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6568
-    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6569
-    if (e) {
6570
-      slideWidth = gesture.$slideEl[0].offsetWidth;
6571
-      slideHeight = gesture.$slideEl[0].offsetHeight;
6572
-      offsetX = gesture.$slideEl.offset().left;
6573
-      offsetY = gesture.$slideEl.offset().top;
6574
-      diffX = (offsetX + (slideWidth / 2)) - touchX;
6575
-      diffY = (offsetY + (slideHeight / 2)) - touchY;
6576
-
6577
-      imageWidth = gesture.$imageEl[0].offsetWidth;
6578
-      imageHeight = gesture.$imageEl[0].offsetHeight;
6579
-      scaledWidth = imageWidth * zoom.scale;
6580
-      scaledHeight = imageHeight * zoom.scale;
6581
-
6582
-      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
6583
-      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
6584
-      translateMaxX = -translateMinX;
6585
-      translateMaxY = -translateMinY;
6586
-
6587
-      translateX = diffX * zoom.scale;
6588
-      translateY = diffY * zoom.scale;
6589
-
6590
-      if (translateX < translateMinX) {
6591
-        translateX = translateMinX;
6592
-      }
6593
-      if (translateX > translateMaxX) {
6594
-        translateX = translateMaxX;
6595
-      }
6596
-
6597
-      if (translateY < translateMinY) {
6598
-        translateY = translateMinY;
6599
-      }
6600
-      if (translateY > translateMaxY) {
6601
-        translateY = translateMaxY;
6602
-      }
6603
-    } else {
6604
-      translateX = 0;
6605
-      translateY = 0;
6606
-    }
6607
-    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
6608
-    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
6609
-  },
6610
-  out() {
6611
-    const swiper = this;
6612
-
6613
-    const zoom = swiper.zoom;
6614
-    const params = swiper.params.zoom;
6615
-    const { gesture } = zoom;
6616
-
6617
-    if (!gesture.$slideEl) {
6618
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
6619
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
6620
-      } else {
6621
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6622
-      }
6623
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6624
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
6625
-    }
6626
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
6627
-
6628
-    zoom.scale = 1;
6629
-    zoom.currentScale = 1;
6630
-    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
6631
-    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
6632
-    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
6633
-    gesture.$slideEl = undefined;
6634
-  },
6635
-  // Attach/Detach Events
6636
-  enable() {
6637
-    const swiper = this;
6638
-    const zoom = swiper.zoom;
6639
-    if (zoom.enabled) return;
6640
-    zoom.enabled = true;
6641
-
6642
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6643
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
6644
-
6645
-    const slideSelector = `.${swiper.params.slideClass}`;
6646
-
6647
-    // Scale image
6648
-    if (Support.gestures) {
6649
-      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
6650
-      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
6651
-      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
6652
-    } else if (swiper.touchEvents.start === 'touchstart') {
6653
-      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
6654
-      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
6655
-      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
6656
-      if (swiper.touchEvents.cancel) {
6657
-        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
6658
-      }
6659
-    }
6660
-
6661
-    // Move image
6662
-    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
6663
-  },
6664
-  disable() {
6665
-    const swiper = this;
6666
-    const zoom = swiper.zoom;
6667
-    if (!zoom.enabled) return;
6668
-
6669
-    swiper.zoom.enabled = false;
6670
-
6671
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6672
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
6673
-
6674
-    const slideSelector = `.${swiper.params.slideClass}`;
6675
-
6676
-    // Scale image
6677
-    if (Support.gestures) {
6678
-      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
6679
-      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
6680
-      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
6681
-    } else if (swiper.touchEvents.start === 'touchstart') {
6682
-      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
6683
-      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
6684
-      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
6685
-      if (swiper.touchEvents.cancel) {
6686
-        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
6687
-      }
6688
-    }
6689
-
6690
-    // Move image
6691
-    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
6692
-  },
6693
-};
6694
-
6695
-var Zoom$1 = {
6696
-  name: 'zoom',
6697
-  params: {
6698
-    zoom: {
6699
-      enabled: false,
6700
-      maxRatio: 3,
6701
-      minRatio: 1,
6702
-      toggle: true,
6703
-      containerClass: 'swiper-zoom-container',
6704
-      zoomedSlideClass: 'swiper-slide-zoomed',
6705
-    },
6706
-  },
6707
-  create() {
6708
-    const swiper = this;
6709
-    const zoom = {
6710
-      enabled: false,
6711
-      scale: 1,
6712
-      currentScale: 1,
6713
-      isScaling: false,
6714
-      gesture: {
6715
-        $slideEl: undefined,
6716
-        slideWidth: undefined,
6717
-        slideHeight: undefined,
6718
-        $imageEl: undefined,
6719
-        $imageWrapEl: undefined,
6720
-        maxRatio: 3,
6721
-      },
6722
-      image: {
6723
-        isTouched: undefined,
6724
-        isMoved: undefined,
6725
-        currentX: undefined,
6726
-        currentY: undefined,
6727
-        minX: undefined,
6728
-        minY: undefined,
6729
-        maxX: undefined,
6730
-        maxY: undefined,
6731
-        width: undefined,
6732
-        height: undefined,
6733
-        startX: undefined,
6734
-        startY: undefined,
6735
-        touchesStart: {},
6736
-        touchesCurrent: {},
6737
-      },
6738
-      velocity: {
6739
-        x: undefined,
6740
-        y: undefined,
6741
-        prevPositionX: undefined,
6742
-        prevPositionY: undefined,
6743
-        prevTime: undefined,
6744
-      },
6745
-    };
6746
-
6747
-    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {
6748
-      zoom[methodName] = Zoom[methodName].bind(swiper);
6749
-    });
6750
-    Utils.extend(swiper, {
6751
-      zoom,
6752
-    });
6753
-
6754
-    let scale = 1;
6755
-    Object.defineProperty(swiper.zoom, 'scale', {
6756
-      get() {
6757
-        return scale;
6758
-      },
6759
-      set(value) {
6760
-        if (scale !== value) {
6761
-          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
6762
-          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
6763
-          swiper.emit('zoomChange', value, imageEl, slideEl);
6764
-        }
6765
-        scale = value;
6766
-      },
6767
-    });
6768
-  },
6769
-  on: {
6770
-    init() {
6771
-      const swiper = this;
6772
-      if (swiper.params.zoom.enabled) {
6773
-        swiper.zoom.enable();
6774
-      }
6775
-    },
6776
-    destroy() {
6777
-      const swiper = this;
6778
-      swiper.zoom.disable();
6779
-    },
6780
-    touchStart(e) {
6781
-      const swiper = this;
6782
-      if (!swiper.zoom.enabled) return;
6783
-      swiper.zoom.onTouchStart(e);
6784
-    },
6785
-    touchEnd(e) {
6786
-      const swiper = this;
6787
-      if (!swiper.zoom.enabled) return;
6788
-      swiper.zoom.onTouchEnd(e);
6789
-    },
6790
-    doubleTap(e) {
6791
-      const swiper = this;
6792
-      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
6793
-        swiper.zoom.toggle(e);
6794
-      }
6795
-    },
6796
-    transitionEnd() {
6797
-      const swiper = this;
6798
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
6799
-        swiper.zoom.onTransitionEnd();
6800
-      }
6801
-    },
6802
-    slideChange() {
6803
-      const swiper = this;
6804
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
6805
-        swiper.zoom.onTransitionEnd();
6806
-      }
6807
-    },
6808
-  },
6809
-};
6810
-
6811
-const Lazy = {
6812
-  loadInSlide(index, loadInDuplicate = true) {
6813
-    const swiper = this;
6814
-    const params = swiper.params.lazy;
6815
-    if (typeof index === 'undefined') return;
6816
-    if (swiper.slides.length === 0) return;
6817
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
6818
-
6819
-    const $slideEl = isVirtual
6820
-      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`)
6821
-      : swiper.slides.eq(index);
6822
-
6823
-    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
6824
-    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
6825
-      $images = $images.add($slideEl[0]);
6826
-    }
6827
-    if ($images.length === 0) return;
6828
-
6829
-    $images.each((imageIndex, imageEl) => {
6830
-      const $imageEl = $(imageEl);
6831
-      $imageEl.addClass(params.loadingClass);
6832
-
6833
-      const background = $imageEl.attr('data-background');
6834
-      const src = $imageEl.attr('data-src');
6835
-      const srcset = $imageEl.attr('data-srcset');
6836
-      const sizes = $imageEl.attr('data-sizes');
6837
-      const $pictureEl = $imageEl.parent('picture');
6838
-
6839
-      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {
6840
-        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;
6841
-        if (background) {
6842
-          $imageEl.css('background-image', `url("${background}")`);
6843
-          $imageEl.removeAttr('data-background');
6844
-        } else {
6845
-          if (srcset) {
6846
-            $imageEl.attr('srcset', srcset);
6847
-            $imageEl.removeAttr('data-srcset');
6848
-          }
6849
-          if (sizes) {
6850
-            $imageEl.attr('sizes', sizes);
6851
-            $imageEl.removeAttr('data-sizes');
6852
-          }
6853
-          if ($pictureEl.length) {
6854
-            $pictureEl.children('source').each((sourceIndex, sourceEl) => {
6855
-              const $source = $(sourceEl);
6856
-
6857
-              if ($source.attr('data-srcset')) {
6858
-                $source.attr('srcset', $source.attr('data-srcset'));
6859
-                $source.removeAttr('data-srcset');
6860
-              }
6861
-            });
6862
-          }
6863
-          if (src) {
6864
-            $imageEl.attr('src', src);
6865
-            $imageEl.removeAttr('data-src');
6866
-          }
6867
-        }
6868
-
6869
-        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
6870
-        $slideEl.find(`.${params.preloaderClass}`).remove();
6871
-        if (swiper.params.loop && loadInDuplicate) {
6872
-          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
6873
-          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
6874
-            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
6875
-            swiper.lazy.loadInSlide(originalSlide.index(), false);
6876
-          } else {
6877
-            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
6878
-            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
6879
-          }
6880
-        }
6881
-        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
6882
-        if (swiper.params.autoHeight) {
6883
-          swiper.updateAutoHeight();
6884
-        }
6885
-      });
6886
-
6887
-      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
6888
-    });
6889
-  },
6890
-  load() {
6891
-    const swiper = this;
6892
-    const {
6893
-      $wrapperEl, params: swiperParams, slides, activeIndex,
6894
-    } = swiper;
6895
-    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
6896
-    const params = swiperParams.lazy;
6897
-
6898
-    let slidesPerView = swiperParams.slidesPerView;
6899
-    if (slidesPerView === 'auto') {
6900
-      slidesPerView = 0;
6901
-    }
6902
-
6903
-    function slideExist(index) {
6904
-      if (isVirtual) {
6905
-        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
6906
-          return true;
6907
-        }
6908
-      } else if (slides[index]) return true;
6909
-      return false;
6910
-    }
6911
-
6912
-    function slideIndex(slideEl) {
6913
-      if (isVirtual) {
6914
-        return $(slideEl).attr('data-swiper-slide-index');
6915
-      }
6916
-      return $(slideEl).index();
6917
-    }
6918
-
6919
-    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
6920
-    if (swiper.params.watchSlidesVisibility) {
6921
-      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
6922
-        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
6923
-        swiper.lazy.loadInSlide(index);
6924
-      });
6925
-    } else if (slidesPerView > 1) {
6926
-      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
6927
-        if (slideExist(i)) swiper.lazy.loadInSlide(i);
6928
-      }
6929
-    } else {
6930
-      swiper.lazy.loadInSlide(activeIndex);
6931
-    }
6932
-    if (params.loadPrevNext) {
6933
-      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
6934
-        const amount = params.loadPrevNextAmount;
6935
-        const spv = slidesPerView;
6936
-        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
6937
-        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
6938
-        // Next Slides
6939
-        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
6940
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6941
-        }
6942
-        // Prev Slides
6943
-        for (let i = minIndex; i < activeIndex; i += 1) {
6944
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6945
-        }
6946
-      } else {
6947
-        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
6948
-        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
6949
-
6950
-        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
6951
-        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
6952
-      }
6953
-    }
6954
-  },
6955
-};
6956
-
6957
-var Lazy$1 = {
6958
-  name: 'lazy',
6959
-  params: {
6960
-    lazy: {
6961
-      enabled: false,
6962
-      loadPrevNext: false,
6963
-      loadPrevNextAmount: 1,
6964
-      loadOnTransitionStart: false,
6965
-
6966
-      elementClass: 'swiper-lazy',
6967
-      loadingClass: 'swiper-lazy-loading',
6968
-      loadedClass: 'swiper-lazy-loaded',
6969
-      preloaderClass: 'swiper-lazy-preloader',
6970
-    },
6971
-  },
6972
-  create() {
6973
-    const swiper = this;
6974
-    Utils.extend(swiper, {
6975
-      lazy: {
6976
-        initialImageLoaded: false,
6977
-        load: Lazy.load.bind(swiper),
6978
-        loadInSlide: Lazy.loadInSlide.bind(swiper),
6979
-      },
6980
-    });
6981
-  },
6982
-  on: {
6983
-    beforeInit() {
6984
-      const swiper = this;
6985
-      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
6986
-        swiper.params.preloadImages = false;
6987
-      }
6988
-    },
6989
-    init() {
6990
-      const swiper = this;
6991
-      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
6992
-        swiper.lazy.load();
6993
-      }
6994
-    },
6995
-    scroll() {
6996
-      const swiper = this;
6997
-      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
6998
-        swiper.lazy.load();
6999
-      }
7000
-    },
7001
-    resize() {
7002
-      const swiper = this;
7003
-      if (swiper.params.lazy.enabled) {
7004
-        swiper.lazy.load();
7005
-      }
7006
-    },
7007
-    scrollbarDragMove() {
7008
-      const swiper = this;
7009
-      if (swiper.params.lazy.enabled) {
7010
-        swiper.lazy.load();
7011
-      }
7012
-    },
7013
-    transitionStart() {
7014
-      const swiper = this;
7015
-      if (swiper.params.lazy.enabled) {
7016
-        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
7017
-          swiper.lazy.load();
7018
-        }
7019
-      }
7020
-    },
7021
-    transitionEnd() {
7022
-      const swiper = this;
7023
-      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7024
-        swiper.lazy.load();
7025
-      }
7026
-    },
7027
-    slideChange() {
7028
-      const swiper = this;
7029
-      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7030
-        swiper.lazy.load();
7031
-      }
7032
-    },
7033
-  },
7034
-};
7035
-
7036
-/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
7037
-
7038
-const Controller = {
7039
-  LinearSpline: function LinearSpline(x, y) {
7040
-    const binarySearch = (function search() {
7041
-      let maxIndex;
7042
-      let minIndex;
7043
-      let guess;
7044
-      return (array, val) => {
7045
-        minIndex = -1;
7046
-        maxIndex = array.length;
7047
-        while (maxIndex - minIndex > 1) {
7048
-          guess = maxIndex + minIndex >> 1;
7049
-          if (array[guess] <= val) {
7050
-            minIndex = guess;
7051
-          } else {
7052
-            maxIndex = guess;
7053
-          }
7054
-        }
7055
-        return maxIndex;
7056
-      };
7057
-    }());
7058
-    this.x = x;
7059
-    this.y = y;
7060
-    this.lastIndex = x.length - 1;
7061
-    // Given an x value (x2), return the expected y2 value:
7062
-    // (x1,y1) is the known point before given value,
7063
-    // (x3,y3) is the known point after given value.
7064
-    let i1;
7065
-    let i3;
7066
-
7067
-    this.interpolate = function interpolate(x2) {
7068
-      if (!x2) return 0;
7069
-
7070
-      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7071
-      i3 = binarySearch(this.x, x2);
7072
-      i1 = i3 - 1;
7073
-
7074
-      // We have our indexes i1 & i3, so we can calculate already:
7075
-      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7076
-      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
7077
-    };
7078
-    return this;
7079
-  },
7080
-  // xxx: for now i will just save one spline function to to
7081
-  getInterpolateFunction(c) {
7082
-    const swiper = this;
7083
-    if (!swiper.controller.spline) {
7084
-      swiper.controller.spline = swiper.params.loop
7085
-        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
7086
-        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7087
-    }
7088
-  },
7089
-  setTranslate(setTranslate, byController) {
7090
-    const swiper = this;
7091
-    const controlled = swiper.controller.control;
7092
-    let multiplier;
7093
-    let controlledTranslate;
7094
-    function setControlledTranslate(c) {
7095
-      // this will create an Interpolate function based on the snapGrids
7096
-      // x is the Grid of the scrolled scroller and y will be the controlled scroller
7097
-      // it makes sense to create this only once and recall it for the interpolation
7098
-      // the function does a lot of value caching for performance
7099
-      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7100
-      if (swiper.params.controller.by === 'slide') {
7101
-        swiper.controller.getInterpolateFunction(c);
7102
-        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7103
-        // but it did not work out
7104
-        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7105
-      }
7106
-
7107
-      if (!controlledTranslate || swiper.params.controller.by === 'container') {
7108
-        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7109
-        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
7110
-      }
7111
-
7112
-      if (swiper.params.controller.inverse) {
7113
-        controlledTranslate = c.maxTranslate() - controlledTranslate;
7114
-      }
7115
-      c.updateProgress(controlledTranslate);
7116
-      c.setTranslate(controlledTranslate, swiper);
7117
-      c.updateActiveIndex();
7118
-      c.updateSlidesClasses();
7119
-    }
7120
-    if (Array.isArray(controlled)) {
7121
-      for (let i = 0; i < controlled.length; i += 1) {
7122
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7123
-          setControlledTranslate(controlled[i]);
7124
-        }
7125
-      }
7126
-    } else if (controlled instanceof Swiper && byController !== controlled) {
7127
-      setControlledTranslate(controlled);
7128
-    }
7129
-  },
7130
-  setTransition(duration, byController) {
7131
-    const swiper = this;
7132
-    const controlled = swiper.controller.control;
7133
-    let i;
7134
-    function setControlledTransition(c) {
7135
-      c.setTransition(duration, swiper);
7136
-      if (duration !== 0) {
7137
-        c.transitionStart();
7138
-        if (c.params.autoHeight) {
7139
-          Utils.nextTick(() => {
7140
-            c.updateAutoHeight();
7141
-          });
7142
-        }
7143
-        c.$wrapperEl.transitionEnd(() => {
7144
-          if (!controlled) return;
7145
-          if (c.params.loop && swiper.params.controller.by === 'slide') {
7146
-            c.loopFix();
7147
-          }
7148
-          c.transitionEnd();
7149
-        });
7150
-      }
7151
-    }
7152
-    if (Array.isArray(controlled)) {
7153
-      for (i = 0; i < controlled.length; i += 1) {
7154
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7155
-          setControlledTransition(controlled[i]);
7156
-        }
7157
-      }
7158
-    } else if (controlled instanceof Swiper && byController !== controlled) {
7159
-      setControlledTransition(controlled);
7160
-    }
7161
-  },
7162
-};
7163
-var Controller$1 = {
7164
-  name: 'controller',
7165
-  params: {
7166
-    controller: {
7167
-      control: undefined,
7168
-      inverse: false,
7169
-      by: 'slide', // or 'container'
7170
-    },
7171
-  },
7172
-  create() {
7173
-    const swiper = this;
7174
-    Utils.extend(swiper, {
7175
-      controller: {
7176
-        control: swiper.params.controller.control,
7177
-        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
7178
-        setTranslate: Controller.setTranslate.bind(swiper),
7179
-        setTransition: Controller.setTransition.bind(swiper),
7180
-      },
7181
-    });
7182
-  },
7183
-  on: {
7184
-    update() {
7185
-      const swiper = this;
7186
-      if (!swiper.controller.control) return;
7187
-      if (swiper.controller.spline) {
7188
-        swiper.controller.spline = undefined;
7189
-        delete swiper.controller.spline;
7190
-      }
7191
-    },
7192
-    resize() {
7193
-      const swiper = this;
7194
-      if (!swiper.controller.control) return;
7195
-      if (swiper.controller.spline) {
7196
-        swiper.controller.spline = undefined;
7197
-        delete swiper.controller.spline;
7198
-      }
7199
-    },
7200
-    observerUpdate() {
7201
-      const swiper = this;
7202
-      if (!swiper.controller.control) return;
7203
-      if (swiper.controller.spline) {
7204
-        swiper.controller.spline = undefined;
7205
-        delete swiper.controller.spline;
7206
-      }
7207
-    },
7208
-    setTranslate(translate, byController) {
7209
-      const swiper = this;
7210
-      if (!swiper.controller.control) return;
7211
-      swiper.controller.setTranslate(translate, byController);
7212
-    },
7213
-    setTransition(duration, byController) {
7214
-      const swiper = this;
7215
-      if (!swiper.controller.control) return;
7216
-      swiper.controller.setTransition(duration, byController);
7217
-    },
7218
-  },
7219
-};
7220
-
7221
-const a11y = {
7222
-  makeElFocusable($el) {
7223
-    $el.attr('tabIndex', '0');
7224
-    return $el;
7225
-  },
7226
-  makeElNotFocusable($el) {
7227
-    $el.attr('tabIndex', '-1');
7228
-    return $el;
7229
-  },
7230
-  addElRole($el, role) {
7231
-    $el.attr('role', role);
7232
-    return $el;
7233
-  },
7234
-  addElLabel($el, label) {
7235
-    $el.attr('aria-label', label);
7236
-    return $el;
7237
-  },
7238
-  disableEl($el) {
7239
-    $el.attr('aria-disabled', true);
7240
-    return $el;
7241
-  },
7242
-  enableEl($el) {
7243
-    $el.attr('aria-disabled', false);
7244
-    return $el;
7245
-  },
7246
-  onEnterKey(e) {
7247
-    const swiper = this;
7248
-    const params = swiper.params.a11y;
7249
-    if (e.keyCode !== 13) return;
7250
-    const $targetEl = $(e.target);
7251
-    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
7252
-      if (!(swiper.isEnd && !swiper.params.loop)) {
7253
-        swiper.slideNext();
7254
-      }
7255
-      if (swiper.isEnd) {
7256
-        swiper.a11y.notify(params.lastSlideMessage);
7257
-      } else {
7258
-        swiper.a11y.notify(params.nextSlideMessage);
7259
-      }
7260
-    }
7261
-    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
7262
-      if (!(swiper.isBeginning && !swiper.params.loop)) {
7263
-        swiper.slidePrev();
7264
-      }
7265
-      if (swiper.isBeginning) {
7266
-        swiper.a11y.notify(params.firstSlideMessage);
7267
-      } else {
7268
-        swiper.a11y.notify(params.prevSlideMessage);
7269
-      }
7270
-    }
7271
-    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {
7272
-      $targetEl[0].click();
7273
-    }
7274
-  },
7275
-  notify(message) {
7276
-    const swiper = this;
7277
-    const notification = swiper.a11y.liveRegion;
7278
-    if (notification.length === 0) return;
7279
-    notification.html('');
7280
-    notification.html(message);
7281
-  },
7282
-  updateNavigation() {
7283
-    const swiper = this;
7284
-
7285
-    if (swiper.params.loop || !swiper.navigation) return;
7286
-    const { $nextEl, $prevEl } = swiper.navigation;
7287
-
7288
-    if ($prevEl && $prevEl.length > 0) {
7289
-      if (swiper.isBeginning) {
7290
-        swiper.a11y.disableEl($prevEl);
7291
-        swiper.a11y.makeElNotFocusable($prevEl);
7292
-      } else {
7293
-        swiper.a11y.enableEl($prevEl);
7294
-        swiper.a11y.makeElFocusable($prevEl);
7295
-      }
7296
-    }
7297
-    if ($nextEl && $nextEl.length > 0) {
7298
-      if (swiper.isEnd) {
7299
-        swiper.a11y.disableEl($nextEl);
7300
-        swiper.a11y.makeElNotFocusable($nextEl);
7301
-      } else {
7302
-        swiper.a11y.enableEl($nextEl);
7303
-        swiper.a11y.makeElFocusable($nextEl);
7304
-      }
7305
-    }
7306
-  },
7307
-  updatePagination() {
7308
-    const swiper = this;
7309
-    const params = swiper.params.a11y;
7310
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7311
-      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {
7312
-        const $bulletEl = $(bulletEl);
7313
-        swiper.a11y.makeElFocusable($bulletEl);
7314
-        swiper.a11y.addElRole($bulletEl, 'button');
7315
-        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
7316
-      });
7317
-    }
7318
-  },
7319
-  init() {
7320
-    const swiper = this;
7321
-
7322
-    swiper.$el.append(swiper.a11y.liveRegion);
7323
-
7324
-    // Navigation
7325
-    const params = swiper.params.a11y;
7326
-    let $nextEl;
7327
-    let $prevEl;
7328
-    if (swiper.navigation && swiper.navigation.$nextEl) {
7329
-      $nextEl = swiper.navigation.$nextEl;
7330
-    }
7331
-    if (swiper.navigation && swiper.navigation.$prevEl) {
7332
-      $prevEl = swiper.navigation.$prevEl;
7333
-    }
7334
-    if ($nextEl) {
7335
-      swiper.a11y.makeElFocusable($nextEl);
7336
-      swiper.a11y.addElRole($nextEl, 'button');
7337
-      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
7338
-      $nextEl.on('keydown', swiper.a11y.onEnterKey);
7339
-    }
7340
-    if ($prevEl) {
7341
-      swiper.a11y.makeElFocusable($prevEl);
7342
-      swiper.a11y.addElRole($prevEl, 'button');
7343
-      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
7344
-      $prevEl.on('keydown', swiper.a11y.onEnterKey);
7345
-    }
7346
-
7347
-    // Pagination
7348
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7349
-      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
7350
-    }
7351
-  },
7352
-  destroy() {
7353
-    const swiper = this;
7354
-    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
7355
-
7356
-    let $nextEl;
7357
-    let $prevEl;
7358
-    if (swiper.navigation && swiper.navigation.$nextEl) {
7359
-      $nextEl = swiper.navigation.$nextEl;
7360
-    }
7361
-    if (swiper.navigation && swiper.navigation.$prevEl) {
7362
-      $prevEl = swiper.navigation.$prevEl;
7363
-    }
7364
-    if ($nextEl) {
7365
-      $nextEl.off('keydown', swiper.a11y.onEnterKey);
7366
-    }
7367
-    if ($prevEl) {
7368
-      $prevEl.off('keydown', swiper.a11y.onEnterKey);
7369
-    }
7370
-
7371
-    // Pagination
7372
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7373
-      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
7374
-    }
7375
-  },
7376
-};
7377
-var A11y = {
7378
-  name: 'a11y',
7379
-  params: {
7380
-    a11y: {
7381
-      enabled: true,
7382
-      notificationClass: 'swiper-notification',
7383
-      prevSlideMessage: 'Previous slide',
7384
-      nextSlideMessage: 'Next slide',
7385
-      firstSlideMessage: 'This is the first slide',
7386
-      lastSlideMessage: 'This is the last slide',
7387
-      paginationBulletMessage: 'Go to slide {{index}}',
7388
-    },
7389
-  },
7390
-  create() {
7391
-    const swiper = this;
7392
-    Utils.extend(swiper, {
7393
-      a11y: {
7394
-        liveRegion: $(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`),
7395
-      },
7396
-    });
7397
-    Object.keys(a11y).forEach((methodName) => {
7398
-      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
7399
-    });
7400
-  },
7401
-  on: {
7402
-    init() {
7403
-      const swiper = this;
7404
-      if (!swiper.params.a11y.enabled) return;
7405
-      swiper.a11y.init();
7406
-      swiper.a11y.updateNavigation();
7407
-    },
7408
-    toEdge() {
7409
-      const swiper = this;
7410
-      if (!swiper.params.a11y.enabled) return;
7411
-      swiper.a11y.updateNavigation();
7412
-    },
7413
-    fromEdge() {
7414
-      const swiper = this;
7415
-      if (!swiper.params.a11y.enabled) return;
7416
-      swiper.a11y.updateNavigation();
7417
-    },
7418
-    paginationUpdate() {
7419
-      const swiper = this;
7420
-      if (!swiper.params.a11y.enabled) return;
7421
-      swiper.a11y.updatePagination();
7422
-    },
7423
-    destroy() {
7424
-      const swiper = this;
7425
-      if (!swiper.params.a11y.enabled) return;
7426
-      swiper.a11y.destroy();
7427
-    },
7428
-  },
7429
-};
7430
-
7431
-const History = {
7432
-  init() {
7433
-    const swiper = this;
7434
-    if (!swiper.params.history) return;
7435
-    if (!win.history || !win.history.pushState) {
7436
-      swiper.params.history.enabled = false;
7437
-      swiper.params.hashNavigation.enabled = true;
7438
-      return;
7439
-    }
7440
-    const history = swiper.history;
7441
-    history.initialized = true;
7442
-    history.paths = History.getPathValues();
7443
-    if (!history.paths.key && !history.paths.value) return;
7444
-    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
7445
-    if (!swiper.params.history.replaceState) {
7446
-      win.addEventListener('popstate', swiper.history.setHistoryPopState);
7447
-    }
7448
-  },
7449
-  destroy() {
7450
-    const swiper = this;
7451
-    if (!swiper.params.history.replaceState) {
7452
-      win.removeEventListener('popstate', swiper.history.setHistoryPopState);
7453
-    }
7454
-  },
7455
-  setHistoryPopState() {
7456
-    const swiper = this;
7457
-    swiper.history.paths = History.getPathValues();
7458
-    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
7459
-  },
7460
-  getPathValues() {
7461
-    const pathArray = win.location.pathname.slice(1).split('/').filter((part) => part !== '');
7462
-    const total = pathArray.length;
7463
-    const key = pathArray[total - 2];
7464
-    const value = pathArray[total - 1];
7465
-    return { key, value };
7466
-  },
7467
-  setHistory(key, index) {
7468
-    const swiper = this;
7469
-    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
7470
-    const slide = swiper.slides.eq(index);
7471
-    let value = History.slugify(slide.attr('data-history'));
7472
-    if (!win.location.pathname.includes(key)) {
7473
-      value = `${key}/${value}`;
7474
-    }
7475
-    const currentState = win.history.state;
7476
-    if (currentState && currentState.value === value) {
7477
-      return;
7478
-    }
7479
-    if (swiper.params.history.replaceState) {
7480
-      win.history.replaceState({ value }, null, value);
7481
-    } else {
7482
-      win.history.pushState({ value }, null, value);
7483
-    }
7484
-  },
7485
-  slugify(text) {
7486
-    return text.toString()
7487
-      .replace(/\s+/g, '-')
7488
-      .replace(/[^\w-]+/g, '')
7489
-      .replace(/--+/g, '-')
7490
-      .replace(/^-+/, '')
7491
-      .replace(/-+$/, '');
7492
-  },
7493
-  scrollToSlide(speed, value, runCallbacks) {
7494
-    const swiper = this;
7495
-    if (value) {
7496
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
7497
-        const slide = swiper.slides.eq(i);
7498
-        const slideHistory = History.slugify(slide.attr('data-history'));
7499
-        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7500
-          const index = slide.index();
7501
-          swiper.slideTo(index, speed, runCallbacks);
7502
-        }
7503
-      }
7504
-    } else {
7505
-      swiper.slideTo(0, speed, runCallbacks);
7506
-    }
7507
-  },
7508
-};
7509
-
7510
-var History$1 = {
7511
-  name: 'history',
7512
-  params: {
7513
-    history: {
7514
-      enabled: false,
7515
-      replaceState: false,
7516
-      key: 'slides',
7517
-    },
7518
-  },
7519
-  create() {
7520
-    const swiper = this;
7521
-    Utils.extend(swiper, {
7522
-      history: {
7523
-        init: History.init.bind(swiper),
7524
-        setHistory: History.setHistory.bind(swiper),
7525
-        setHistoryPopState: History.setHistoryPopState.bind(swiper),
7526
-        scrollToSlide: History.scrollToSlide.bind(swiper),
7527
-        destroy: History.destroy.bind(swiper),
7528
-      },
7529
-    });
7530
-  },
7531
-  on: {
7532
-    init() {
7533
-      const swiper = this;
7534
-      if (swiper.params.history.enabled) {
7535
-        swiper.history.init();
7536
-      }
7537
-    },
7538
-    destroy() {
7539
-      const swiper = this;
7540
-      if (swiper.params.history.enabled) {
7541
-        swiper.history.destroy();
7542
-      }
7543
-    },
7544
-    transitionEnd() {
7545
-      const swiper = this;
7546
-      if (swiper.history.initialized) {
7547
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
7548
-      }
7549
-    },
7550
-    slideChange() {
7551
-      const swiper = this;
7552
-      if (swiper.history.initialized && swiper.params.cssMode) {
7553
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
7554
-      }
7555
-    },
7556
-  },
7557
-};
7558
-
7559
-const HashNavigation = {
7560
-  onHashCange() {
7561
-    const swiper = this;
7562
-    swiper.emit('hashChange');
7563
-    const newHash = doc.location.hash.replace('#', '');
7564
-    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
7565
-    if (newHash !== activeSlideHash) {
7566
-      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
7567
-      if (typeof newIndex === 'undefined') return;
7568
-      swiper.slideTo(newIndex);
7569
-    }
7570
-  },
7571
-  setHash() {
7572
-    const swiper = this;
7573
-    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
7574
-    if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
7575
-      win.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));
7576
-      swiper.emit('hashSet');
7577
-    } else {
7578
-      const slide = swiper.slides.eq(swiper.activeIndex);
7579
-      const hash = slide.attr('data-hash') || slide.attr('data-history');
7580
-      doc.location.hash = hash || '';
7581
-      swiper.emit('hashSet');
7582
-    }
7583
-  },
7584
-  init() {
7585
-    const swiper = this;
7586
-    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;
7587
-    swiper.hashNavigation.initialized = true;
7588
-    const hash = doc.location.hash.replace('#', '');
7589
-    if (hash) {
7590
-      const speed = 0;
7591
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
7592
-        const slide = swiper.slides.eq(i);
7593
-        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
7594
-        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7595
-          const index = slide.index();
7596
-          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
7597
-        }
7598
-      }
7599
-    }
7600
-    if (swiper.params.hashNavigation.watchState) {
7601
-      $(win).on('hashchange', swiper.hashNavigation.onHashCange);
7602
-    }
7603
-  },
7604
-  destroy() {
7605
-    const swiper = this;
7606
-    if (swiper.params.hashNavigation.watchState) {
7607
-      $(win).off('hashchange', swiper.hashNavigation.onHashCange);
7608
-    }
7609
-  },
7610
-};
7611
-var HashNavigation$1 = {
7612
-  name: 'hash-navigation',
7613
-  params: {
7614
-    hashNavigation: {
7615
-      enabled: false,
7616
-      replaceState: false,
7617
-      watchState: false,
7618
-    },
7619
-  },
7620
-  create() {
7621
-    const swiper = this;
7622
-    Utils.extend(swiper, {
7623
-      hashNavigation: {
7624
-        initialized: false,
7625
-        init: HashNavigation.init.bind(swiper),
7626
-        destroy: HashNavigation.destroy.bind(swiper),
7627
-        setHash: HashNavigation.setHash.bind(swiper),
7628
-        onHashCange: HashNavigation.onHashCange.bind(swiper),
7629
-      },
7630
-    });
7631
-  },
7632
-  on: {
7633
-    init() {
7634
-      const swiper = this;
7635
-      if (swiper.params.hashNavigation.enabled) {
7636
-        swiper.hashNavigation.init();
7637
-      }
7638
-    },
7639
-    destroy() {
7640
-      const swiper = this;
7641
-      if (swiper.params.hashNavigation.enabled) {
7642
-        swiper.hashNavigation.destroy();
7643
-      }
7644
-    },
7645
-    transitionEnd() {
7646
-      const swiper = this;
7647
-      if (swiper.hashNavigation.initialized) {
7648
-        swiper.hashNavigation.setHash();
7649
-      }
7650
-    },
7651
-    slideChange() {
7652
-      const swiper = this;
7653
-      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
7654
-        swiper.hashNavigation.setHash();
7655
-      }
7656
-    },
7657
-  },
7658
-};
7659
-
7660
-/* eslint no-underscore-dangle: "off" */
7661
-
7662
-const Autoplay = {
7663
-  run() {
7664
-    const swiper = this;
7665
-    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
7666
-    let delay = swiper.params.autoplay.delay;
7667
-    if ($activeSlideEl.attr('data-swiper-autoplay')) {
7668
-      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
7669
-    }
7670
-    clearTimeout(swiper.autoplay.timeout);
7671
-    swiper.autoplay.timeout = Utils.nextTick(() => {
7672
-      if (swiper.params.autoplay.reverseDirection) {
7673
-        if (swiper.params.loop) {
7674
-          swiper.loopFix();
7675
-          swiper.slidePrev(swiper.params.speed, true, true);
7676
-          swiper.emit('autoplay');
7677
-        } else if (!swiper.isBeginning) {
7678
-          swiper.slidePrev(swiper.params.speed, true, true);
7679
-          swiper.emit('autoplay');
7680
-        } else if (!swiper.params.autoplay.stopOnLastSlide) {
7681
-          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
7682
-          swiper.emit('autoplay');
7683
-        } else {
7684
-          swiper.autoplay.stop();
7685
-        }
7686
-      } else if (swiper.params.loop) {
7687
-        swiper.loopFix();
7688
-        swiper.slideNext(swiper.params.speed, true, true);
7689
-        swiper.emit('autoplay');
7690
-      } else if (!swiper.isEnd) {
7691
-        swiper.slideNext(swiper.params.speed, true, true);
7692
-        swiper.emit('autoplay');
7693
-      } else if (!swiper.params.autoplay.stopOnLastSlide) {
7694
-        swiper.slideTo(0, swiper.params.speed, true, true);
7695
-        swiper.emit('autoplay');
7696
-      } else {
7697
-        swiper.autoplay.stop();
7698
-      }
7699
-      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
7700
-    }, delay);
7701
-  },
7702
-  start() {
7703
-    const swiper = this;
7704
-    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
7705
-    if (swiper.autoplay.running) return false;
7706
-    swiper.autoplay.running = true;
7707
-    swiper.emit('autoplayStart');
7708
-    swiper.autoplay.run();
7709
-    return true;
7710
-  },
7711
-  stop() {
7712
-    const swiper = this;
7713
-    if (!swiper.autoplay.running) return false;
7714
-    if (typeof swiper.autoplay.timeout === 'undefined') return false;
7715
-
7716
-    if (swiper.autoplay.timeout) {
7717
-      clearTimeout(swiper.autoplay.timeout);
7718
-      swiper.autoplay.timeout = undefined;
7719
-    }
7720
-    swiper.autoplay.running = false;
7721
-    swiper.emit('autoplayStop');
7722
-    return true;
7723
-  },
7724
-  pause(speed) {
7725
-    const swiper = this;
7726
-    if (!swiper.autoplay.running) return;
7727
-    if (swiper.autoplay.paused) return;
7728
-    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
7729
-    swiper.autoplay.paused = true;
7730
-    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
7731
-      swiper.autoplay.paused = false;
7732
-      swiper.autoplay.run();
7733
-    } else {
7734
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7735
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7736
-    }
7737
-  },
7738
-};
7739
-
7740
-var Autoplay$1 = {
7741
-  name: 'autoplay',
7742
-  params: {
7743
-    autoplay: {
7744
-      enabled: false,
7745
-      delay: 3000,
7746
-      waitForTransition: true,
7747
-      disableOnInteraction: true,
7748
-      stopOnLastSlide: false,
7749
-      reverseDirection: false,
7750
-    },
7751
-  },
7752
-  create() {
7753
-    const swiper = this;
7754
-    Utils.extend(swiper, {
7755
-      autoplay: {
7756
-        running: false,
7757
-        paused: false,
7758
-        run: Autoplay.run.bind(swiper),
7759
-        start: Autoplay.start.bind(swiper),
7760
-        stop: Autoplay.stop.bind(swiper),
7761
-        pause: Autoplay.pause.bind(swiper),
7762
-        onVisibilityChange() {
7763
-          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
7764
-            swiper.autoplay.pause();
7765
-          }
7766
-          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
7767
-            swiper.autoplay.run();
7768
-            swiper.autoplay.paused = false;
7769
-          }
7770
-        },
7771
-        onTransitionEnd(e) {
7772
-          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
7773
-          if (e.target !== this) return;
7774
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7775
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7776
-          swiper.autoplay.paused = false;
7777
-          if (!swiper.autoplay.running) {
7778
-            swiper.autoplay.stop();
7779
-          } else {
7780
-            swiper.autoplay.run();
7781
-          }
7782
-        },
7783
-      },
7784
-    });
7785
-  },
7786
-  on: {
7787
-    init() {
7788
-      const swiper = this;
7789
-      if (swiper.params.autoplay.enabled) {
7790
-        swiper.autoplay.start();
7791
-        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
7792
-      }
7793
-    },
7794
-    beforeTransitionStart(speed, internal) {
7795
-      const swiper = this;
7796
-      if (swiper.autoplay.running) {
7797
-        if (internal || !swiper.params.autoplay.disableOnInteraction) {
7798
-          swiper.autoplay.pause(speed);
7799
-        } else {
7800
-          swiper.autoplay.stop();
7801
-        }
7802
-      }
7803
-    },
7804
-    sliderFirstMove() {
7805
-      const swiper = this;
7806
-      if (swiper.autoplay.running) {
7807
-        if (swiper.params.autoplay.disableOnInteraction) {
7808
-          swiper.autoplay.stop();
7809
-        } else {
7810
-          swiper.autoplay.pause();
7811
-        }
7812
-      }
7813
-    },
7814
-    touchEnd() {
7815
-      const swiper = this;
7816
-      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
7817
-        swiper.autoplay.run();
7818
-      }
7819
-    },
7820
-    destroy() {
7821
-      const swiper = this;
7822
-      if (swiper.autoplay.running) {
7823
-        swiper.autoplay.stop();
7824
-      }
7825
-      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
7826
-    },
7827
-  },
7828
-};
7829
-
7830
-const Fade = {
7831
-  setTranslate() {
7832
-    const swiper = this;
7833
-    const { slides } = swiper;
7834
-    for (let i = 0; i < slides.length; i += 1) {
7835
-      const $slideEl = swiper.slides.eq(i);
7836
-      const offset = $slideEl[0].swiperSlideOffset;
7837
-      let tx = -offset;
7838
-      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
7839
-      let ty = 0;
7840
-      if (!swiper.isHorizontal()) {
7841
-        ty = tx;
7842
-        tx = 0;
7843
-      }
7844
-      const slideOpacity = swiper.params.fadeEffect.crossFade
7845
-        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
7846
-        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
7847
-      $slideEl
7848
-        .css({
7849
-          opacity: slideOpacity,
7850
-        })
7851
-        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);
7852
-    }
7853
-  },
7854
-  setTransition(duration) {
7855
-    const swiper = this;
7856
-    const { slides, $wrapperEl } = swiper;
7857
-    slides.transition(duration);
7858
-    if (swiper.params.virtualTranslate && duration !== 0) {
7859
-      let eventTriggered = false;
7860
-      slides.transitionEnd(() => {
7861
-        if (eventTriggered) return;
7862
-        if (!swiper || swiper.destroyed) return;
7863
-        eventTriggered = true;
7864
-        swiper.animating = false;
7865
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7866
-        for (let i = 0; i < triggerEvents.length; i += 1) {
7867
-          $wrapperEl.trigger(triggerEvents[i]);
7868
-        }
7869
-      });
7870
-    }
7871
-  },
7872
-};
7873
-
7874
-var EffectFade = {
7875
-  name: 'effect-fade',
7876
-  params: {
7877
-    fadeEffect: {
7878
-      crossFade: false,
7879
-    },
7880
-  },
7881
-  create() {
7882
-    const swiper = this;
7883
-    Utils.extend(swiper, {
7884
-      fadeEffect: {
7885
-        setTranslate: Fade.setTranslate.bind(swiper),
7886
-        setTransition: Fade.setTransition.bind(swiper),
7887
-      },
7888
-    });
7889
-  },
7890
-  on: {
7891
-    beforeInit() {
7892
-      const swiper = this;
7893
-      if (swiper.params.effect !== 'fade') return;
7894
-      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);
7895
-      const overwriteParams = {
7896
-        slidesPerView: 1,
7897
-        slidesPerColumn: 1,
7898
-        slidesPerGroup: 1,
7899
-        watchSlidesProgress: true,
7900
-        spaceBetween: 0,
7901
-        virtualTranslate: true,
7902
-      };
7903
-      Utils.extend(swiper.params, overwriteParams);
7904
-      Utils.extend(swiper.originalParams, overwriteParams);
7905
-    },
7906
-    setTranslate() {
7907
-      const swiper = this;
7908
-      if (swiper.params.effect !== 'fade') return;
7909
-      swiper.fadeEffect.setTranslate();
7910
-    },
7911
-    setTransition(duration) {
7912
-      const swiper = this;
7913
-      if (swiper.params.effect !== 'fade') return;
7914
-      swiper.fadeEffect.setTransition(duration);
7915
-    },
7916
-  },
7917
-};
7918
-
7919
-const Cube = {
7920
-  setTranslate() {
7921
-    const swiper = this;
7922
-    const {
7923
-      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,
7924
-    } = swiper;
7925
-    const params = swiper.params.cubeEffect;
7926
-    const isHorizontal = swiper.isHorizontal();
7927
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7928
-    let wrapperRotate = 0;
7929
-    let $cubeShadowEl;
7930
-    if (params.shadow) {
7931
-      if (isHorizontal) {
7932
-        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
7933
-        if ($cubeShadowEl.length === 0) {
7934
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7935
-          $wrapperEl.append($cubeShadowEl);
7936
-        }
7937
-        $cubeShadowEl.css({ height: `${swiperWidth}px` });
7938
-      } else {
7939
-        $cubeShadowEl = $el.find('.swiper-cube-shadow');
7940
-        if ($cubeShadowEl.length === 0) {
7941
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7942
-          $el.append($cubeShadowEl);
7943
-        }
7944
-      }
7945
-    }
7946
-    for (let i = 0; i < slides.length; i += 1) {
7947
-      const $slideEl = slides.eq(i);
7948
-      let slideIndex = i;
7949
-      if (isVirtual) {
7950
-        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
7951
-      }
7952
-      let slideAngle = slideIndex * 90;
7953
-      let round = Math.floor(slideAngle / 360);
7954
-      if (rtl) {
7955
-        slideAngle = -slideAngle;
7956
-        round = Math.floor(-slideAngle / 360);
7957
-      }
7958
-      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7959
-      let tx = 0;
7960
-      let ty = 0;
7961
-      let tz = 0;
7962
-      if (slideIndex % 4 === 0) {
7963
-        tx = -round * 4 * swiperSize;
7964
-        tz = 0;
7965
-      } else if ((slideIndex - 1) % 4 === 0) {
7966
-        tx = 0;
7967
-        tz = -round * 4 * swiperSize;
7968
-      } else if ((slideIndex - 2) % 4 === 0) {
7969
-        tx = swiperSize + (round * 4 * swiperSize);
7970
-        tz = swiperSize;
7971
-      } else if ((slideIndex - 3) % 4 === 0) {
7972
-        tx = -swiperSize;
7973
-        tz = (3 * swiperSize) + (swiperSize * 4 * round);
7974
-      }
7975
-      if (rtl) {
7976
-        tx = -tx;
7977
-      }
7978
-
7979
-      if (!isHorizontal) {
7980
-        ty = tx;
7981
-        tx = 0;
7982
-      }
7983
-
7984
-      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
7985
-      if (progress <= 1 && progress > -1) {
7986
-        wrapperRotate = (slideIndex * 90) + (progress * 90);
7987
-        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);
7988
-      }
7989
-      $slideEl.transform(transform);
7990
-      if (params.slideShadows) {
7991
-        // Set shadows
7992
-        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7993
-        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7994
-        if (shadowBefore.length === 0) {
7995
-          shadowBefore = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
7996
-          $slideEl.append(shadowBefore);
7997
-        }
7998
-        if (shadowAfter.length === 0) {
7999
-          shadowAfter = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
8000
-          $slideEl.append(shadowAfter);
8001
-        }
8002
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8003
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8004
-      }
8005
-    }
8006
-    $wrapperEl.css({
8007
-      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
8008
-      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,
8009
-      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,
8010
-      'transform-origin': `50% 50% -${swiperSize / 2}px`,
8011
-    });
8012
-
8013
-    if (params.shadow) {
8014
-      if (isHorizontal) {
8015
-        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
8016
-      } else {
8017
-        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
8018
-        const multiplier = 1.5 - (
8019
-          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
8020
-          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
8021
-        );
8022
-        const scale1 = params.shadowScale;
8023
-        const scale2 = params.shadowScale / multiplier;
8024
-        const offset = params.shadowOffset;
8025
-        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
8026
-      }
8027
-    }
8028
-    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
8029
-    $wrapperEl
8030
-      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
8031
-  },
8032
-  setTransition(duration) {
8033
-    const swiper = this;
8034
-    const { $el, slides } = swiper;
8035
-    slides
8036
-      .transition(duration)
8037
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8038
-      .transition(duration);
8039
-    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
8040
-      $el.find('.swiper-cube-shadow').transition(duration);
8041
-    }
8042
-  },
8043
-};
8044
-
8045
-var EffectCube = {
8046
-  name: 'effect-cube',
8047
-  params: {
8048
-    cubeEffect: {
8049
-      slideShadows: true,
8050
-      shadow: true,
8051
-      shadowOffset: 20,
8052
-      shadowScale: 0.94,
8053
-    },
8054
-  },
8055
-  create() {
8056
-    const swiper = this;
8057
-    Utils.extend(swiper, {
8058
-      cubeEffect: {
8059
-        setTranslate: Cube.setTranslate.bind(swiper),
8060
-        setTransition: Cube.setTransition.bind(swiper),
8061
-      },
8062
-    });
8063
-  },
8064
-  on: {
8065
-    beforeInit() {
8066
-      const swiper = this;
8067
-      if (swiper.params.effect !== 'cube') return;
8068
-      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);
8069
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
8070
-      const overwriteParams = {
8071
-        slidesPerView: 1,
8072
-        slidesPerColumn: 1,
8073
-        slidesPerGroup: 1,
8074
-        watchSlidesProgress: true,
8075
-        resistanceRatio: 0,
8076
-        spaceBetween: 0,
8077
-        centeredSlides: false,
8078
-        virtualTranslate: true,
8079
-      };
8080
-      Utils.extend(swiper.params, overwriteParams);
8081
-      Utils.extend(swiper.originalParams, overwriteParams);
8082
-    },
8083
-    setTranslate() {
8084
-      const swiper = this;
8085
-      if (swiper.params.effect !== 'cube') return;
8086
-      swiper.cubeEffect.setTranslate();
8087
-    },
8088
-    setTransition(duration) {
8089
-      const swiper = this;
8090
-      if (swiper.params.effect !== 'cube') return;
8091
-      swiper.cubeEffect.setTransition(duration);
8092
-    },
8093
-  },
8094
-};
8095
-
8096
-const Flip = {
8097
-  setTranslate() {
8098
-    const swiper = this;
8099
-    const { slides, rtlTranslate: rtl } = swiper;
8100
-    for (let i = 0; i < slides.length; i += 1) {
8101
-      const $slideEl = slides.eq(i);
8102
-      let progress = $slideEl[0].progress;
8103
-      if (swiper.params.flipEffect.limitRotation) {
8104
-        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8105
-      }
8106
-      const offset = $slideEl[0].swiperSlideOffset;
8107
-      const rotate = -180 * progress;
8108
-      let rotateY = rotate;
8109
-      let rotateX = 0;
8110
-      let tx = -offset;
8111
-      let ty = 0;
8112
-      if (!swiper.isHorizontal()) {
8113
-        ty = tx;
8114
-        tx = 0;
8115
-        rotateX = -rotateY;
8116
-        rotateY = 0;
8117
-      } else if (rtl) {
8118
-        rotateY = -rotateY;
8119
-      }
8120
-
8121
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
8122
-
8123
-      if (swiper.params.flipEffect.slideShadows) {
8124
-        // Set shadows
8125
-        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8126
-        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8127
-        if (shadowBefore.length === 0) {
8128
-          shadowBefore = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}"></div>`);
8129
-          $slideEl.append(shadowBefore);
8130
-        }
8131
-        if (shadowAfter.length === 0) {
8132
-          shadowAfter = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}"></div>`);
8133
-          $slideEl.append(shadowAfter);
8134
-        }
8135
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8136
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8137
-      }
8138
-      $slideEl
8139
-        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
8140
-    }
8141
-  },
8142
-  setTransition(duration) {
8143
-    const swiper = this;
8144
-    const { slides, activeIndex, $wrapperEl } = swiper;
8145
-    slides
8146
-      .transition(duration)
8147
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8148
-      .transition(duration);
8149
-    if (swiper.params.virtualTranslate && duration !== 0) {
8150
-      let eventTriggered = false;
8151
-      // eslint-disable-next-line
8152
-      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
8153
-        if (eventTriggered) return;
8154
-        if (!swiper || swiper.destroyed) return;
8155
-        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
8156
-        eventTriggered = true;
8157
-        swiper.animating = false;
8158
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8159
-        for (let i = 0; i < triggerEvents.length; i += 1) {
8160
-          $wrapperEl.trigger(triggerEvents[i]);
8161
-        }
8162
-      });
8163
-    }
8164
-  },
8165
-};
8166
-
8167
-var EffectFlip = {
8168
-  name: 'effect-flip',
8169
-  params: {
8170
-    flipEffect: {
8171
-      slideShadows: true,
8172
-      limitRotation: true,
8173
-    },
8174
-  },
8175
-  create() {
8176
-    const swiper = this;
8177
-    Utils.extend(swiper, {
8178
-      flipEffect: {
8179
-        setTranslate: Flip.setTranslate.bind(swiper),
8180
-        setTransition: Flip.setTransition.bind(swiper),
8181
-      },
8182
-    });
8183
-  },
8184
-  on: {
8185
-    beforeInit() {
8186
-      const swiper = this;
8187
-      if (swiper.params.effect !== 'flip') return;
8188
-      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);
8189
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
8190
-      const overwriteParams = {
8191
-        slidesPerView: 1,
8192
-        slidesPerColumn: 1,
8193
-        slidesPerGroup: 1,
8194
-        watchSlidesProgress: true,
8195
-        spaceBetween: 0,
8196
-        virtualTranslate: true,
8197
-      };
8198
-      Utils.extend(swiper.params, overwriteParams);
8199
-      Utils.extend(swiper.originalParams, overwriteParams);
8200
-    },
8201
-    setTranslate() {
8202
-      const swiper = this;
8203
-      if (swiper.params.effect !== 'flip') return;
8204
-      swiper.flipEffect.setTranslate();
8205
-    },
8206
-    setTransition(duration) {
8207
-      const swiper = this;
8208
-      if (swiper.params.effect !== 'flip') return;
8209
-      swiper.flipEffect.setTransition(duration);
8210
-    },
8211
-  },
8212
-};
8213
-
8214
-const Coverflow = {
8215
-  setTranslate() {
8216
-    const swiper = this;
8217
-    const {
8218
-      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,
8219
-    } = swiper;
8220
-    const params = swiper.params.coverflowEffect;
8221
-    const isHorizontal = swiper.isHorizontal();
8222
-    const transform = swiper.translate;
8223
-    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
8224
-    const rotate = isHorizontal ? params.rotate : -params.rotate;
8225
-    const translate = params.depth;
8226
-    // Each slide offset from center
8227
-    for (let i = 0, length = slides.length; i < length; i += 1) {
8228
-      const $slideEl = slides.eq(i);
8229
-      const slideSize = slidesSizesGrid[i];
8230
-      const slideOffset = $slideEl[0].swiperSlideOffset;
8231
-      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
8232
-
8233
-      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
8234
-      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
8235
-      // var rotateZ = 0
8236
-      let translateZ = -translate * Math.abs(offsetMultiplier);
8237
-
8238
-      let stretch = params.stretch;
8239
-      // Allow percentage to make a relative stretch for responsive sliders
8240
-      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
8241
-        stretch = ((parseFloat(params.stretch) / 100) * slideSize);
8242
-      }
8243
-      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
8244
-      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
8245
-
8246
-      // Fix for ultra small values
8247
-      if (Math.abs(translateX) < 0.001) translateX = 0;
8248
-      if (Math.abs(translateY) < 0.001) translateY = 0;
8249
-      if (Math.abs(translateZ) < 0.001) translateZ = 0;
8250
-      if (Math.abs(rotateY) < 0.001) rotateY = 0;
8251
-      if (Math.abs(rotateX) < 0.001) rotateX = 0;
8252
-
8253
-      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
8254
-
8255
-      $slideEl.transform(slideTransform);
8256
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
8257
-      if (params.slideShadows) {
8258
-        // Set shadows
8259
-        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8260
-        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8261
-        if ($shadowBeforeEl.length === 0) {
8262
-          $shadowBeforeEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
8263
-          $slideEl.append($shadowBeforeEl);
8264
-        }
8265
-        if ($shadowAfterEl.length === 0) {
8266
-          $shadowAfterEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
8267
-          $slideEl.append($shadowAfterEl);
8268
-        }
8269
-        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
8270
-        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;
8271
-      }
8272
-    }
8273
-
8274
-    // Set correct perspective for IE10
8275
-    if (Support.pointerEvents || Support.prefixedPointerEvents) {
8276
-      const ws = $wrapperEl[0].style;
8277
-      ws.perspectiveOrigin = `${center}px 50%`;
8278
-    }
8279
-  },
8280
-  setTransition(duration) {
8281
-    const swiper = this;
8282
-    swiper.slides
8283
-      .transition(duration)
8284
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8285
-      .transition(duration);
8286
-  },
8287
-};
8288
-
8289
-var EffectCoverflow = {
8290
-  name: 'effect-coverflow',
8291
-  params: {
8292
-    coverflowEffect: {
8293
-      rotate: 50,
8294
-      stretch: 0,
8295
-      depth: 100,
8296
-      modifier: 1,
8297
-      slideShadows: true,
8298
-    },
8299
-  },
8300
-  create() {
8301
-    const swiper = this;
8302
-    Utils.extend(swiper, {
8303
-      coverflowEffect: {
8304
-        setTranslate: Coverflow.setTranslate.bind(swiper),
8305
-        setTransition: Coverflow.setTransition.bind(swiper),
8306
-      },
8307
-    });
8308
-  },
8309
-  on: {
8310
-    beforeInit() {
8311
-      const swiper = this;
8312
-      if (swiper.params.effect !== 'coverflow') return;
8313
-
8314
-      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);
8315
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
8316
-
8317
-      swiper.params.watchSlidesProgress = true;
8318
-      swiper.originalParams.watchSlidesProgress = true;
8319
-    },
8320
-    setTranslate() {
8321
-      const swiper = this;
8322
-      if (swiper.params.effect !== 'coverflow') return;
8323
-      swiper.coverflowEffect.setTranslate();
8324
-    },
8325
-    setTransition(duration) {
8326
-      const swiper = this;
8327
-      if (swiper.params.effect !== 'coverflow') return;
8328
-      swiper.coverflowEffect.setTransition(duration);
8329
-    },
8330
-  },
8331
-};
8332
-
8333
-const Thumbs = {
8334
-  init() {
8335
-    const swiper = this;
8336
-    const { thumbs: thumbsParams } = swiper.params;
8337
-    const SwiperClass = swiper.constructor;
8338
-    if (thumbsParams.swiper instanceof SwiperClass) {
8339
-      swiper.thumbs.swiper = thumbsParams.swiper;
8340
-      Utils.extend(swiper.thumbs.swiper.originalParams, {
8341
-        watchSlidesProgress: true,
8342
-        slideToClickedSlide: false,
8343
-      });
8344
-      Utils.extend(swiper.thumbs.swiper.params, {
8345
-        watchSlidesProgress: true,
8346
-        slideToClickedSlide: false,
8347
-      });
8348
-    } else if (Utils.isObject(thumbsParams.swiper)) {
8349
-      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
8350
-        watchSlidesVisibility: true,
8351
-        watchSlidesProgress: true,
8352
-        slideToClickedSlide: false,
8353
-      }));
8354
-      swiper.thumbs.swiperCreated = true;
8355
-    }
8356
-    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
8357
-    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
8358
-  },
8359
-  onThumbClick() {
8360
-    const swiper = this;
8361
-    const thumbsSwiper = swiper.thumbs.swiper;
8362
-    if (!thumbsSwiper) return;
8363
-    const clickedIndex = thumbsSwiper.clickedIndex;
8364
-    const clickedSlide = thumbsSwiper.clickedSlide;
8365
-    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
8366
-    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
8367
-    let slideToIndex;
8368
-    if (thumbsSwiper.params.loop) {
8369
-      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
8370
-    } else {
8371
-      slideToIndex = clickedIndex;
8372
-    }
8373
-    if (swiper.params.loop) {
8374
-      let currentIndex = swiper.activeIndex;
8375
-      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
8376
-        swiper.loopFix();
8377
-        // eslint-disable-next-line
8378
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
8379
-        currentIndex = swiper.activeIndex;
8380
-      }
8381
-      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
8382
-      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
8383
-      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;
8384
-      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;
8385
-      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;
8386
-      else slideToIndex = prevIndex;
8387
-    }
8388
-    swiper.slideTo(slideToIndex);
8389
-  },
8390
-  update(initial) {
8391
-    const swiper = this;
8392
-    const thumbsSwiper = swiper.thumbs.swiper;
8393
-    if (!thumbsSwiper) return;
8394
-
8395
-    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
8396
-      ? thumbsSwiper.slidesPerViewDynamic()
8397
-      : thumbsSwiper.params.slidesPerView;
8398
-
8399
-    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
8400
-    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
8401
-    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
8402
-      let currentThumbsIndex = thumbsSwiper.activeIndex;
8403
-      let newThumbsIndex;
8404
-      let direction;
8405
-      if (thumbsSwiper.params.loop) {
8406
-        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
8407
-          thumbsSwiper.loopFix();
8408
-          // eslint-disable-next-line
8409
-          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
8410
-          currentThumbsIndex = thumbsSwiper.activeIndex;
8411
-        }
8412
-        // Find actual thumbs index to slide to
8413
-        const prevThumbsIndex = thumbsSwiper.slides
8414
-          .eq(currentThumbsIndex)
8415
-          .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
8416
-          .index();
8417
-        const nextThumbsIndex = thumbsSwiper.slides
8418
-          .eq(currentThumbsIndex)
8419
-          .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
8420
-          .index();
8421
-        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;
8422
-        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;
8423
-        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;
8424
-        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;
8425
-        else newThumbsIndex = prevThumbsIndex;
8426
-        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
8427
-      } else {
8428
-        newThumbsIndex = swiper.realIndex;
8429
-        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
8430
-      }
8431
-      if (useOffset) {
8432
-        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
8433
-      }
8434
-
8435
-      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
8436
-        if (thumbsSwiper.params.centeredSlides) {
8437
-          if (newThumbsIndex > currentThumbsIndex) {
8438
-            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
8439
-          } else {
8440
-            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
8441
-          }
8442
-        } else if (newThumbsIndex > currentThumbsIndex) {
8443
-          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
8444
-        }
8445
-        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
8446
-      }
8447
-    }
8448
-
8449
-    // Activate thumbs
8450
-    let thumbsToActivate = 1;
8451
-    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
8452
-
8453
-    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
8454
-      thumbsToActivate = swiper.params.slidesPerView;
8455
-    }
8456
-
8457
-    if (!swiper.params.thumbs.multipleActiveThumbs) {
8458
-      thumbsToActivate = 1;
8459
-    }
8460
-
8461
-    thumbsToActivate = Math.floor(thumbsToActivate);
8462
-
8463
-    thumbsSwiper.slides.removeClass(thumbActiveClass);
8464
-    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
8465
-      for (let i = 0; i < thumbsToActivate; i += 1) {
8466
-        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
8467
-      }
8468
-    } else {
8469
-      for (let i = 0; i < thumbsToActivate; i += 1) {
8470
-        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
8471
-      }
8472
-    }
8473
-  },
8474
-};
8475
-var Thumbs$1 = {
8476
-  name: 'thumbs',
8477
-  params: {
8478
-    thumbs: {
8479
-      swiper: null,
8480
-      multipleActiveThumbs: true,
8481
-      autoScrollOffset: 0,
8482
-      slideThumbActiveClass: 'swiper-slide-thumb-active',
8483
-      thumbsContainerClass: 'swiper-container-thumbs',
8484
-    },
8485
-  },
8486
-  create() {
8487
-    const swiper = this;
8488
-    Utils.extend(swiper, {
8489
-      thumbs: {
8490
-        swiper: null,
8491
-        init: Thumbs.init.bind(swiper),
8492
-        update: Thumbs.update.bind(swiper),
8493
-        onThumbClick: Thumbs.onThumbClick.bind(swiper),
8494
-      },
8495
-    });
8496
-  },
8497
-  on: {
8498
-    beforeInit() {
8499
-      const swiper = this;
8500
-      const { thumbs } = swiper.params;
8501
-      if (!thumbs || !thumbs.swiper) return;
8502
-      swiper.thumbs.init();
8503
-      swiper.thumbs.update(true);
8504
-    },
8505
-    slideChange() {
8506
-      const swiper = this;
8507
-      if (!swiper.thumbs.swiper) return;
8508
-      swiper.thumbs.update();
8509
-    },
8510
-    update() {
8511
-      const swiper = this;
8512
-      if (!swiper.thumbs.swiper) return;
8513
-      swiper.thumbs.update();
8514
-    },
8515
-    resize() {
8516
-      const swiper = this;
8517
-      if (!swiper.thumbs.swiper) return;
8518
-      swiper.thumbs.update();
8519
-    },
8520
-    observerUpdate() {
8521
-      const swiper = this;
8522
-      if (!swiper.thumbs.swiper) return;
8523
-      swiper.thumbs.update();
8524
-    },
8525
-    setTransition(duration) {
8526
-      const swiper = this;
8527
-      const thumbsSwiper = swiper.thumbs.swiper;
8528
-      if (!thumbsSwiper) return;
8529
-      thumbsSwiper.setTransition(duration);
8530
-    },
8531
-    beforeDestroy() {
8532
-      const swiper = this;
8533
-      const thumbsSwiper = swiper.thumbs.swiper;
8534
-      if (!thumbsSwiper) return;
8535
-      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
8536
-        thumbsSwiper.destroy();
8537
-      }
8538
-    },
8539
-  },
8540
-};
8541
-
8542
-// Swiper Class
8543
-
8544
-const components = [
8545
-  Device$1,
8546
-  Support$1,
8547
-  Browser$1,
8548
-  Resize,
8549
-  Observer$1,
8550
-  Virtual$1,
8551
-  Keyboard$1,
8552
-  Mousewheel$1,
8553
-  Navigation$1,
8554
-  Pagination$1,
8555
-  Scrollbar$1,
8556
-  Parallax$1,
8557
-  Zoom$1,
8558
-  Lazy$1,
8559
-  Controller$1,
8560
-  A11y,
8561
-  History$1,
8562
-  HashNavigation$1,
8563
-  Autoplay$1,
8564
-  EffectFade,
8565
-  EffectCube,
8566
-  EffectFlip,
8567
-  EffectCoverflow,
8568
-  Thumbs$1
8569
-];
8570
-
8571
-if (typeof Swiper.use === 'undefined') {
8572
-  Swiper.use = Swiper.Class.use;
8573
-  Swiper.installModule = Swiper.Class.installModule;
8574
-}
8575
-
8576
-Swiper.use(components);
8577
-
8578
-export default Swiper;
8579
-//# sourceMappingURL=swiper.esm.browser.bundle.js.map
8580 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"file":"swiper.esm.browser.bundle.js.map","sources":["../../node_modules/ssr-window/dist/ssr-window.esm.js","../../node_modules/dom7/dist/dom7.modular.js","../../src/utils/dom.js","../../src/utils/utils.js","../../src/utils/support.js","../../src/utils/class.js","../../src/components/core/update/updateSize.js","../../src/components/core/update/updateSlides.js","../../src/components/core/update/updateAutoHeight.js","../../src/components/core/update/updateSlidesOffset.js","../../src/components/core/update/updateSlidesProgress.js","../../src/components/core/update/updateProgress.js","../../src/components/core/update/updateSlidesClasses.js","../../src/components/core/update/updateActiveIndex.js","../../src/components/core/update/updateClickedSlide.js","../../src/components/core/update/index.js","../../src/components/core/translate/getTranslate.js","../../src/components/core/translate/setTranslate.js","../../src/components/core/translate/minTranslate.js","../../src/components/core/translate/maxTranslate.js","../../src/components/core/translate/translateTo.js","../../src/components/core/translate/index.js","../../src/components/core/transition/setTransition.js","../../src/components/core/transition/transitionStart.js","../../src/components/core/transition/transitionEnd.js","../../src/components/core/transition/index.js","../../src/components/core/slide/slideTo.js","../../src/components/core/slide/slideToLoop.js","../../src/components/core/slide/slideNext.js","../../src/components/core/slide/slidePrev.js","../../src/components/core/slide/slideReset.js","../../src/components/core/slide/slideToClosest.js","../../src/components/core/slide/slideToClickedSlide.js","../../src/components/core/slide/index.js","../../src/components/core/loop/loopCreate.js","../../src/components/core/loop/loopFix.js","../../src/components/core/loop/loopDestroy.js","../../src/components/core/loop/index.js","../../src/components/core/grab-cursor/setGrabCursor.js","../../src/components/core/grab-cursor/unsetGrabCursor.js","../../src/components/core/grab-cursor/index.js","../../src/components/core/manipulation/appendSlide.js","../../src/components/core/manipulation/prependSlide.js","../../src/components/core/manipulation/addSlide.js","../../src/components/core/manipulation/removeSlide.js","../../src/components/core/manipulation/removeAllSlides.js","../../src/components/core/manipulation/index.js","../../src/utils/device.js","../../src/components/core/events/onTouchStart.js","../../src/components/core/events/onTouchMove.js","../../src/components/core/events/onTouchEnd.js","../../src/components/core/events/onResize.js","../../src/components/core/events/onClick.js","../../src/components/core/events/onScroll.js","../../src/components/core/events/index.js","../../src/components/core/breakpoints/setBreakpoint.js","../../src/components/core/breakpoints/getBreakpoint.js","../../src/components/core/breakpoints/index.js","../../src/components/core/classes/addClasses.js","../../src/components/core/classes/removeClasses.js","../../src/components/core/classes/index.js","../../src/components/core/images/loadImage.js","../../src/components/core/images/preloadImages.js","../../src/components/core/images/index.js","../../src/components/core/check-overflow/index.js","../../src/components/core/defaults.js","../../src/components/core/core-class.js","../../src/modules/device/device.js","../../src/modules/support/support.js","../../src/utils/browser.js","../../src/modules/browser/browser.js","../../src/modules/resize/resize.js","../../src/modules/observer/observer.js","../../src/components/virtual/virtual.js","../../src/components/keyboard/keyboard.js","../../src/components/mousewheel/mousewheel.js","../../src/components/navigation/navigation.js","../../src/components/pagination/pagination.js","../../src/components/scrollbar/scrollbar.js","../../src/components/parallax/parallax.js","../../src/components/zoom/zoom.js","../../src/components/lazy/lazy.js","../../src/components/controller/controller.js","../../src/components/a11y/a11y.js","../../src/components/history/history.js","../../src/components/hash-navigation/hash-navigation.js","../../src/components/autoplay/autoplay.js","../../src/components/effect-fade/effect-fade.js","../../src/components/effect-cube/effect-cube.js","../../src/components/effect-flip/effect-flip.js","../../src/components/effect-coverflow/effect-coverflow.js","../../src/components/thumbs/thumbs.js","../../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target, src) {\n    if (target === void 0) { target = {}; }\n    if (src === void 0) { src = {}; }\n    Object.keys(src).forEach(function (key) {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n    body: {},\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    activeElement: {\n        blur: function () { },\n        nodeName: '',\n    },\n    querySelector: function () {\n        return null;\n    },\n    querySelectorAll: function () {\n        return [];\n    },\n    getElementById: function () {\n        return null;\n    },\n    createEvent: function () {\n        return {\n            initEvent: function () { },\n        };\n    },\n    createElement: function () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute: function () { },\n            getElementsByTagName: function () {\n                return [];\n            },\n        };\n    },\n    createElementNS: function () {\n        return {};\n    },\n    importNode: function () {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState: function () { },\n        pushState: function () { },\n        go: function () { },\n        back: function () { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    getComputedStyle: function () {\n        return {\n            getPropertyValue: function () {\n                return '';\n            },\n        };\n    },\n    Image: function () { },\n    Date: function () { },\n    screen: {},\n    setTimeout: function () { },\n    clearTimeout: function () { },\n    matchMedia: function () {\n        return {};\n    },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n  constructor(arr) {\n    const self = this;\n    // Create array-like object\n    for (let i = 0; i < arr.length; i += 1) {\n      self[i] = arr[i];\n    }\n    self.length = arr.length;\n    // Return collection with methods\n    return this;\n  }\n}\n\nfunction $(selector, context) {\n  const arr = [];\n  let i = 0;\n  if (selector && !context) {\n    if (selector instanceof Dom7) {\n      return selector;\n    }\n  }\n  if (selector) {\n      // String\n    if (typeof selector === 'string') {\n      let els;\n      let tempParent;\n      const html = selector.trim();\n      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n        let toCreate = 'div';\n        if (html.indexOf('<li') === 0) toCreate = 'ul';\n        if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n        if (html.indexOf('<tbody') === 0) toCreate = 'table';\n        if (html.indexOf('<option') === 0) toCreate = 'select';\n        tempParent = document.createElement(toCreate);\n        tempParent.innerHTML = html;\n        for (i = 0; i < tempParent.childNodes.length; i += 1) {\n          arr.push(tempParent.childNodes[i]);\n        }\n      } else {\n        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n          // Pure ID selector\n          els = [document.getElementById(selector.trim().split('#')[1])];\n        } else {\n          // Other selectors\n          els = (context || document).querySelectorAll(selector.trim());\n        }\n        for (i = 0; i < els.length; i += 1) {\n          if (els[i]) arr.push(els[i]);\n        }\n      }\n    } else if (selector.nodeType || selector === window || selector === document) {\n      // Node/element\n      arr.push(selector);\n    } else if (selector.length > 0 && selector[0].nodeType) {\n      // Array of elements or instance of Dom\n      for (i = 0; i < selector.length; i += 1) {\n        arr.push(selector[i]);\n      }\n    }\n  }\n  return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n  const uniqueArray = [];\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n  if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n  else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n  return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n  if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n  else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n  return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n  if (typeof className === 'undefined') {\n    return this;\n  }\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n    }\n  }\n  return this;\n}\nfunction removeClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n    }\n  }\n  return this;\n}\nfunction hasClass(className) {\n  if (!this[0]) return false;\n  return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n    }\n  }\n  return this;\n}\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  }\n\n  // Set attrs\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      // eslint-disable-next-line\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        // eslint-disable-next-line\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n    return this;\n  }\n}\nfunction data(key, value) {\n  let el;\n  if (typeof value === 'undefined') {\n    el = this[0];\n    // Get value\n    if (el) {\n      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n        return el.dom7ElementDataStorage[key];\n      }\n\n      const dataKey = el.getAttribute(`data-${key}`);\n      if (dataKey) {\n        return dataKey;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  // Set value\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n  return this;\n}\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n  if (el.dataset) {\n    // eslint-disable-next-line\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      // eslint-disable-next-line\n      const attr = el.attributes[i];\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n  // eslint-disable-next-line\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;\n    else if (dataset[key] === 'true') dataset[key] = true;\n    else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n  return dataset;\n}\nfunction val(value) {\n  const dom = this;\n  if (typeof value === 'undefined') {\n    if (dom[0]) {\n      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n        const values = [];\n        for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n          values.push(dom[0].selectedOptions[i].value);\n        }\n        return values;\n      }\n      return dom[0].value;\n    }\n    return undefined;\n  }\n\n  for (let i = 0; i < dom.length; i += 1) {\n    const el = dom[i];\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n  return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransform = transform;\n    elStyle.transform = transform;\n  }\n  return this;\n}\nfunction transition(duration) {\n  if (typeof duration !== 'string') {\n    duration = `${duration}ms`; // eslint-disable-line\n  }\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransitionDuration = duration;\n    elStyle.transitionDuration = duration;\n  }\n  return this;\n}\n// Events\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);\n    else {\n      const parents = $(target).parents(); // eslint-disable-line\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    listener.apply(this, eventData);\n  }\n  const events = eventType.split(' ');\n  let j;\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent,\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent,\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n  return this;\n}\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  const events = eventType.split(' ');\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n  return this;\n}\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n  const events = args[0].split(' ');\n  const eventData = args[1];\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let evt;\n      try {\n        evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true,\n        });\n      } catch (e) {\n        evt = document.createEvent('Event');\n        evt.initEvent(event, true, true);\n        evt.detail = eventData;\n      }\n      // eslint-disable-next-line\n      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n      el.dispatchEvent(evt);\n      el.dom7EventData = [];\n      delete el.dom7EventData;\n    }\n  }\n  return this;\n}\nfunction transitionEnd(callback) {\n  const events = ['webkitTransitionEnd', 'transitionend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    /* jshint validthis:true */\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\nfunction animationEnd(callback) {\n  const events = ['webkitAnimationEnd', 'animationend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\n// Sizing/Styles\nfunction width() {\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n    return this[0].offsetWidth;\n  }\n  return null;\n}\nfunction height() {\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n    return this[0].offsetHeight;\n  }\n  return null;\n}\nfunction offset() {\n  if (this.length > 0) {\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: (box.top + scrollTop) - clientTop,\n      left: (box.left + scrollLeft) - clientLeft,\n    };\n  }\n\n  return null;\n}\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n  return this;\n}\nfunction show() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n  return this;\n}\nfunction styles() {\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\nfunction css(props, value) {\n  let i;\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      for (i = 0; i < this.length; i += 1) {\n        // eslint-disable-next-line\n        for (let prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n      return this;\n    }\n  }\n  if (arguments.length === 2 && typeof props === 'string') {\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n    return this;\n  }\n  return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n  const arr = [];\n  for (let i = 0; i < this.length; i += 1) {\n    arr.push(this[i]);\n  }\n  return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], i, this[i]) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction forEach(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], this[i], i) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction filter(callback) {\n  const matchedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n  }\n  return new Dom7(matchedItems);\n}\nfunction map(callback) {\n  const modifiedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    modifiedItems.push(callback.call(dom[i], i, dom[i]));\n  }\n  return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : undefined;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    if (this[0]) {\n      return this[0].textContent.trim();\n    }\n    return null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n  return this;\n}\nfunction is(selector) {\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n    compareWith = $(selector);\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  } else if (selector === document) return el === document;\n  else if (selector === window) return el === window;\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  }\n  return false;\n}\nfunction indexOf(el) {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i] === el) return i;\n  }\n  return -1;\n}\nfunction index() {\n  let child = this[0];\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n  let returnIndex;\n  if (index > length - 1) {\n    return new Dom7([]);\n  }\n  if (index < 0) {\n    returnIndex = length + index;\n    if (returnIndex < 0) return new Dom7([]);\n    return new Dom7([this[returnIndex]]);\n  }\n  return new Dom7([this[index]]);\n}\nfunction append(...args) {\n  let newChild;\n\n  for (let k = 0; k < args.length; k += 1) {\n    newChild = args[k];\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\nfunction prepend(newChild) {\n  let i;\n  let j;\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\nfunction insertBefore(selector) {\n  const before = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\nfunction insertAfter(selector) {\n  const after = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return new Dom7([this[0].nextElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return new Dom7(nextEls);\n}\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return new Dom7([el.previousElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n  return $(unique(parents));\n}\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n      parent = parent.parentNode;\n    }\n  }\n  return $(unique(parents));\n}\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n  if (typeof selector === 'undefined') {\n    return new Dom7([]);\n  }\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n  return closest;\n}\nfunction find(selector) {\n  const foundElements = [];\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n  return new Dom7(foundElements);\n}\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].childNodes;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector) {\n        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n  return new Dom7(unique(children));\n}\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n  return this;\n}\nfunction detach() {\n  return this.remove();\n}\nfunction add(...args) {\n  const dom = this;\n  let i;\n  let j;\n  for (i = 0; i < args.length; i += 1) {\n    const toAdd = $(args[i]);\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom[dom.length] = toAdd[j];\n      dom.length += 1;\n    }\n  }\n  return dom;\n}\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n      el.textContent = '';\n    }\n  }\n  return this;\n}\n\nfunction scrollTo(...args) {\n  let [left, top, duration, easing, callback] = args;\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n  if (typeof easing === 'undefined') easing = 'swing';\n\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n    let scrollLeft; // eslint-disable-line\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n    if (animateTop) {\n      currentTop = el.scrollTop;\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n    if (!duration) return;\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n      let done;\n      if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n      if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      requestAnimationFrame(render);\n    }\n    requestAnimationFrame(render);\n  });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing', // or 'linear'\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n    }, initialParams),\n\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - (Math.cos(progress * Math.PI) / 2);\n      }\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n      return progress;\n    },\n    stop() {\n      if (a.frameId) {\n        cancelAnimationFrame(a.frameId);\n      }\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done(complete) {\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n      const elements = [];\n\n      // Define & Cache Initials & Units\n      a.elements.each((index, el) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n        elements[index] = {\n          container: el,\n        };\n        Object.keys(props).forEach((prop) => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue,\n          };\n        });\n      });\n\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress;\n        // let el;\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n        if (startTime === null) {\n          startTime = time;\n        }\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n        }\n\n        elements.forEach((element) => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach((prop) => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const { initialValue, finalValue, unit } = el[prop];\n            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n            const currentValue = el[prop].currentValue;\n\n            if (\n              (finalValue > initialValue && currentValue >= finalValue) ||\n              (finalValue < initialValue && currentValue <= finalValue)) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return;\n        // Then call\n        a.frameId = requestAnimationFrame(render);\n      }\n      a.frameId = requestAnimationFrame(render);\n      return a;\n    },\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n  if (typeof args[0] === 'undefined') {\n    for (let i = 0; i < this.length; i += 1) {\n      if (noTrigger.indexOf(name) < 0) {\n        if (name in this[i]) this[i][name]();\n        else {\n          $(this[i]).trigger(name);\n        }\n      }\n    }\n    return this;\n  }\n  return this.on(name, ...args);\n}\n\nfunction click(...args) {\n  return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n  return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n  return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n  return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n  return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n  return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n  return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n  return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n  return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n  return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n  return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n  return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n  return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n  return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n  return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n  return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n  return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n  return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n  return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n  return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n  return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n  return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n  return {\n    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup = groupIndex === 0\n          ? params.slidesPerGroup\n          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n","export default function (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((index, slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                || (slideAfter > 1 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n","export default function () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n  return (-this.snapGrid[0]);\n}\n","export default function () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n\n  const {\n    params,\n    wrapperEl,\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n","export default function (duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n","export default function () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n  const platform = window.navigator.platform;\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!(window.cordova || window.phonegap),\n    phonegap: !!(window.cordova || window.phonegap),\n    electron: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  if (!ipad\n    && macos\n    && Support.touch\n    && (\n      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n      || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n      || (screenWidth === 768 && screenHeight === 1024) // other\n    )\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron;\n  if (device.desktop) {\n    device.electron = electron;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement\n      && $(document.activeElement).is(data.formElements)\n      && document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n","export default function (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n  attachEvents,\n  detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params, $el,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n    }\n\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n","export default function () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","export default function () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages,\n};\n","\nfunction checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    swiper.navigation.update();\n  }\n}\n\nexport default { checkOverflow };\n","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n","import Support from '../../utils/support';\n\nexport default {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nexport default {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nexport default {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n    } else {\n      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (kc === 34 || kc === 40) swiper.slideNext();\n      if (kc === 33 || kc === 38) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nexport default {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document.implementation\n    && document.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: Utils.now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents = lastEventBeforeSnap\n        && newEvent.time < lastEventBeforeSnap.time + 500\n        && newEvent.delta <= lastEventBeforeSnap.delta\n        && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + (delta * params.sensitivity);\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15\n              && newEvent.time - firstEvent.time < 500\n              && firstEvent.delta - newEvent.delta >= 1\n              && newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nexport default {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        animateSlider: Mousewheel.animateSlider.bind(swiper),\n        releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n        lastScrollTime: Utils.now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nexport default {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n      && swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n    }\n    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const {\n      $el,\n      dragSize,\n      trackSize,\n      dragStartPos,\n    } = scrollbar;\n\n    let positionRatio;\n    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nexport default {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nexport default {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n};\n\nexport default {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nexport default {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nexport default {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nexport default {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nexport default {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    swiper.emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nexport default {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nexport default {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onVisibilityChange() {\n          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n            swiper.autoplay.pause();\n          }\n          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n            swiper.autoplay.run();\n            swiper.autoplay.paused = false;\n          }\n        },\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd() {\n      const swiper = this;\n      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nexport default {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n      }\n      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nexport default {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nexport default {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n  Device,\n  Support,\n  Browser,\n  Resize,\n  Observer,\n  //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["document","window","transitionEnd","transition","checkOverflow","Device","Support","Browser","Observer","Virtual"],"mappings":"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"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,14 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((function(s){void 0===e[s]?e[s]=t[s]:isObject(t[s])&&isObject(e[s])&&Object.keys(t[s]).length>0&&extend(e[s],t[s])}))}var doc="undefined"!=typeof document?document:{},ssrDocument={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};extend(doc,ssrDocument);var win="undefined"!=typeof window?window:{},ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}}};extend(win,ssrWindow);class Dom7{constructor(e){const t=this;for(let s=0;s<e.length;s+=1)t[s]=e[s];return t.length=e.length,this}}function $(e,t){const s=[];let i=0;if(e&&!t&&e instanceof Dom7)return e;if(e)if("string"==typeof e){let a,n;const r=e.trim();if(r.indexOf("<")>=0&&r.indexOf(">")>=0){let e="div";for(0===r.indexOf("<li")&&(e="ul"),0===r.indexOf("<tr")&&(e="tbody"),0!==r.indexOf("<td")&&0!==r.indexOf("<th")||(e="tr"),0===r.indexOf("<tbody")&&(e="table"),0===r.indexOf("<option")&&(e="select"),n=doc.createElement(e),n.innerHTML=r,i=0;i<n.childNodes.length;i+=1)s.push(n.childNodes[i])}else for(a=t||"#"!==e[0]||e.match(/[ .<>:~]/)?(t||doc).querySelectorAll(e.trim()):[doc.getElementById(e.trim().split("#")[1])],i=0;i<a.length;i+=1)a[i]&&s.push(a[i])}else if(e.nodeType||e===win||e===doc)s.push(e);else if(e.length>0&&e[0].nodeType)for(i=0;i<e.length;i+=1)s.push(e[i]);return new Dom7(s)}function unique(e){const t=[];for(let s=0;s<e.length;s+=1)-1===t.indexOf(e[s])&&t.push(e[s]);return t}function addClass(e){if(void 0===e)return this;const t=e.split(" ");for(let e=0;e<t.length;e+=1)for(let s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.add(t[e]);return this}function removeClass(e){const t=e.split(" ");for(let e=0;e<t.length;e+=1)for(let s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.remove(t[e]);return this}function hasClass(e){return!!this[0]&&this[0].classList.contains(e)}function toggleClass(e){const t=e.split(" ");for(let e=0;e<t.length;e+=1)for(let s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.toggle(t[e]);return this}function attr(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s<this.length;s+=1)if(2===arguments.length)this[s].setAttribute(e,t);else for(const t in e)this[s][t]=e[t],this[s].setAttribute(t,e[t]);return this}function removeAttr(e){for(let t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this}function data(e,t){let s;if(void 0!==t){for(let i=0;i<this.length;i+=1)s=this[i],s.dom7ElementDataStorage||(s.dom7ElementDataStorage={}),s.dom7ElementDataStorage[e]=t;return this}if(s=this[0],s){if(s.dom7ElementDataStorage&&e in s.dom7ElementDataStorage)return s.dom7ElementDataStorage[e];const t=s.getAttribute("data-"+e);return t||void 0}}function transform(e){for(let t=0;t<this.length;t+=1){const s=this[t].style;s.webkitTransform=e,s.transform=e}return this}function transition(e){"string"!=typeof e&&(e+="ms");for(let t=0;t<this.length;t+=1){const s=this[t].style;s.webkitTransitionDuration=e,s.transitionDuration=e}return this}function on(...e){let[t,s,i,a]=e;function n(e){const t=e.target;if(!t)return;const a=e.target.dom7EventData||[];if(a.indexOf(e)<0&&a.unshift(e),$(t).is(s))i.apply(t,a);else{const e=$(t).parents();for(let t=0;t<e.length;t+=1)$(e[t]).is(s)&&i.apply(e[t],a)}}function r(e){const t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),i.apply(this,t)}"function"==typeof e[1]&&([t,i,a]=e,s=void 0),a||(a=!1);const l=t.split(" ");let o;for(let e=0;e<this.length;e+=1){const t=this[e];if(s)for(o=0;o<l.length;o+=1){const e=l[o];t.dom7LiveListeners||(t.dom7LiveListeners={}),t.dom7LiveListeners[e]||(t.dom7LiveListeners[e]=[]),t.dom7LiveListeners[e].push({listener:i,proxyListener:n}),t.addEventListener(e,n,a)}else for(o=0;o<l.length;o+=1){const e=l[o];t.dom7Listeners||(t.dom7Listeners={}),t.dom7Listeners[e]||(t.dom7Listeners[e]=[]),t.dom7Listeners[e].push({listener:i,proxyListener:r}),t.addEventListener(e,r,a)}}return this}function off(...e){let[t,s,i,a]=e;"function"==typeof e[1]&&([t,i,a]=e,s=void 0),a||(a=!1);const n=t.split(" ");for(let e=0;e<n.length;e+=1){const t=n[e];for(let e=0;e<this.length;e+=1){const n=this[e];let r;if(!s&&n.dom7Listeners?r=n.dom7Listeners[t]:s&&n.dom7LiveListeners&&(r=n.dom7LiveListeners[t]),r&&r.length)for(let e=r.length-1;e>=0;e-=1){const s=r[e];i&&s.listener===i||i&&s.listener&&s.listener.dom7proxy&&s.listener.dom7proxy===i?(n.removeEventListener(t,s.proxyListener,a),r.splice(e,1)):i||(n.removeEventListener(t,s.proxyListener,a),r.splice(e,1))}}}return this}function trigger(...e){const t=e[0].split(" "),s=e[1];for(let i=0;i<t.length;i+=1){const a=t[i];for(let t=0;t<this.length;t+=1){const i=this[t];let n;try{n=new win.CustomEvent(a,{detail:s,bubbles:!0,cancelable:!0})}catch(e){n=doc.createEvent("Event"),n.initEvent(a,!0,!0),n.detail=s}i.dom7EventData=e.filter((e,t)=>t>0),i.dispatchEvent(n),i.dom7EventData=[],delete i.dom7EventData}}return this}function transitionEnd(e){const t=["webkitTransitionEnd","transitionend"],s=this;let i;function a(n){if(n.target===this)for(e.call(this,n),i=0;i<t.length;i+=1)s.off(t[i],a)}if(e)for(i=0;i<t.length;i+=1)s.on(t[i],a);return this}function outerWidth(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){const e=this[0],t=e.getBoundingClientRect(),s=doc.body,i=e.clientTop||s.clientTop||0,a=e.clientLeft||s.clientLeft||0,n=e===win?win.scrollY:e.scrollTop,r=e===win?win.scrollX:e.scrollLeft;return{top:t.top+n-i,left:t.left+r-a}}return null}function styles(){return this[0]?win.getComputedStyle(this[0],null):{}}function css(e,t){let s;if(1===arguments.length){if("string"!=typeof e){for(s=0;s<this.length;s+=1)for(let t in e)this[s].style[t]=e[t];return this}if(this[0])return win.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(s=0;s<this.length;s+=1)this[s].style[e]=t;return this}return this}function each(e){if(!e)return this;for(let t=0;t<this.length;t+=1)if(!1===e.call(this[t],t,this[t]))return this;return this}function filter(e){const t=[],s=this;for(let i=0;i<s.length;i+=1)e.call(s[i],i,s[i])&&t.push(s[i]);return new Dom7(t)}function html(e){if(void 0===e)return this[0]?this[0].innerHTML:void 0;for(let t=0;t<this.length;t+=1)this[t].innerHTML=e;return this}function text(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(let t=0;t<this.length;t+=1)this[t].textContent=e;return this}function is(e){const t=this[0];let s,i;if(!t||void 0===e)return!1;if("string"==typeof e){if(t.matches)return t.matches(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);for(s=$(e),i=0;i<s.length;i+=1)if(s[i]===t)return!0;return!1}if(e===doc)return t===doc;if(e===win)return t===win;if(e.nodeType||e instanceof Dom7){for(s=e.nodeType?[e]:e,i=0;i<s.length;i+=1)if(s[i]===t)return!0;return!1}return!1}function index(){let e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}}function eq(e){if(void 0===e)return this;const t=this.length;let s;return e>t-1?new Dom7([]):e<0?(s=t+e,new Dom7(s<0?[]:[this[s]])):new Dom7([this[e]])}function append(...e){let t;for(let s=0;s<e.length;s+=1){t=e[s];for(let e=0;e<this.length;e+=1)if("string"==typeof t){const s=doc.createElement("div");for(s.innerHTML=t;s.firstChild;)this[e].appendChild(s.firstChild)}else if(t instanceof Dom7)for(let s=0;s<t.length;s+=1)this[e].appendChild(t[s]);else this[e].appendChild(t)}return this}function prepend(e){let t,s;for(t=0;t<this.length;t+=1)if("string"==typeof e){const i=doc.createElement("div");for(i.innerHTML=e,s=i.childNodes.length-1;s>=0;s-=1)this[t].insertBefore(i.childNodes[s],this[t].childNodes[0])}else if(e instanceof Dom7)for(s=0;s<e.length;s+=1)this[t].insertBefore(e[s],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this}function next(e){return this.length>0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?new Dom7([this[0].nextElementSibling]):new Dom7([]):this[0].nextElementSibling?new Dom7([this[0].nextElementSibling]):new Dom7([]):new Dom7([])}function nextAll(e){const t=[];let s=this[0];if(!s)return new Dom7([]);for(;s.nextElementSibling;){const i=s.nextElementSibling;e?$(i).is(e)&&t.push(i):t.push(i),s=i}return new Dom7(t)}function prev(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?new Dom7([t.previousElementSibling]):new Dom7([]):t.previousElementSibling?new Dom7([t.previousElementSibling]):new Dom7([])}return new Dom7([])}function prevAll(e){const t=[];let s=this[0];if(!s)return new Dom7([]);for(;s.previousElementSibling;){const i=s.previousElementSibling;e?$(i).is(e)&&t.push(i):t.push(i),s=i}return new Dom7(t)}function parent(e){const t=[];for(let s=0;s<this.length;s+=1)null!==this[s].parentNode&&(e?$(this[s].parentNode).is(e)&&t.push(this[s].parentNode):t.push(this[s].parentNode));return $(unique(t))}function parents(e){const t=[];for(let s=0;s<this.length;s+=1){let i=this[s].parentNode;for(;i;)e?$(i).is(e)&&t.push(i):t.push(i),i=i.parentNode}return $(unique(t))}function closest(e){let t=this;return void 0===e?new Dom7([]):(t.is(e)||(t=t.parents(e).eq(0)),t)}function find(e){const t=[];for(let s=0;s<this.length;s+=1){const i=this[s].querySelectorAll(e);for(let e=0;e<i.length;e+=1)t.push(i[e])}return new Dom7(t)}function children(e){const t=[];for(let s=0;s<this.length;s+=1){const i=this[s].childNodes;for(let s=0;s<i.length;s+=1)e?1===i[s].nodeType&&$(i[s]).is(e)&&t.push(i[s]):1===i[s].nodeType&&t.push(i[s])}return new Dom7(unique(t))}function remove(){for(let e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}function add(...e){const t=this;let s,i;for(s=0;s<e.length;s+=1){const a=$(e[s]);for(i=0;i<a.length;i+=1)t[t.length]=a[i],t.length+=1}return t}$.fn=Dom7.prototype,$.Class=Dom7,$.Dom7=Dom7;const Methods={addClass:addClass,removeClass:removeClass,hasClass:hasClass,toggleClass:toggleClass,attr:attr,removeAttr:removeAttr,data:data,transform:transform,transition:transition,on:on,off:off,trigger:trigger,transitionEnd:transitionEnd,outerWidth:outerWidth,outerHeight:outerHeight,offset:offset,css:css,each:each,html:html,text:text,is:is,index:index,eq:eq,append:append,prepend:prepend,next:next,nextAll:nextAll,prev:prev,prevAll:prevAll,parent:parent,parents:parents,closest:closest,find:find,children:children,filter:filter,remove:remove,add:add,styles:styles};Object.keys(Methods).forEach(e=>{$.fn[e]=$.fn[e]||Methods[e]});const Utils={deleteProps(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})},nextTick:(e,t=0)=>setTimeout(e,t),now:()=>Date.now(),getTranslate(e,t="x"){let s,i,a;const n=win.getComputedStyle(e,null);return win.WebKitCSSMatrix?(i=n.transform||n.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map(e=>e.replace(",",".")).join(", ")),a=new win.WebKitCSSMatrix("none"===i?"":i)):(a=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),s=a.toString().split(",")),"x"===t&&(i=win.WebKitCSSMatrix?a.m41:16===s.length?parseFloat(s[12]):parseFloat(s[4])),"y"===t&&(i=win.WebKitCSSMatrix?a.m42:16===s.length?parseFloat(s[13]):parseFloat(s[5])),i||0},parseUrlQuery(e){const t={};let s,i,a,n,r=e||win.location.href;if("string"==typeof r&&r.length)for(r=r.indexOf("?")>-1?r.replace(/\S*\?/,""):"",i=r.split("&").filter(e=>""!==e),n=i.length,s=0;s<n;s+=1)a=i[s].replace(/#\S+/g,"").split("="),t[decodeURIComponent(a[0])]=void 0===a[1]?void 0:decodeURIComponent(a[1])||"";return t},isObject:e=>"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object,extend(...e){const t=Object(e[0]);for(let s=1;s<e.length;s+=1){const i=e[s];if(null!=i){const e=Object.keys(Object(i));for(let s=0,a=e.length;s<a;s+=1){const a=e[s],n=Object.getOwnPropertyDescriptor(i,a);void 0!==n&&n.enumerable&&(Utils.isObject(t[a])&&Utils.isObject(i[a])?Utils.extend(t[a],i[a]):!Utils.isObject(t[a])&&Utils.isObject(i[a])?(t[a]={},Utils.extend(t[a],i[a])):t[a]=i[a])}}}return t}},Support={touch:!!("ontouchstart"in win||win.DocumentTouch&&doc instanceof win.DocumentTouch),pointerEvents:!!win.PointerEvent&&"maxTouchPoints"in win.navigator&&win.navigator.maxTouchPoints>=0,observer:"MutationObserver"in win||"WebkitMutationObserver"in win,passiveListener:function(){let e=!1;try{const t=Object.defineProperty({},"passive",{get(){e=!0}});win.addEventListener("testPassiveListener",null,t)}catch(e){}return e}(),gestures:"ongesturestart"in win};class SwiperClass{constructor(e={}){const t=this;t.params=e,t.eventsListeners={},t.params&&t.params.on&&Object.keys(t.params.on).forEach(e=>{t.on(e,t.params.on[e])})}on(e,t,s){const i=this;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)}),i}once(e,t,s){const i=this;if("function"!=typeof t)return i;function a(...s){i.off(e,a),a.f7proxy&&delete a.f7proxy,t.apply(i,s)}return a.f7proxy=t,i.on(e,a,s)}off(e,t){const s=this;return s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].length&&s.eventsListeners[e].forEach((i,a)=>{(i===t||i.f7proxy&&i.f7proxy===t)&&s.eventsListeners[e].splice(a,1)})}),s):s}emit(...e){const t=this;if(!t.eventsListeners)return t;let s,i,a;return"string"==typeof e[0]||Array.isArray(e[0])?(s=e[0],i=e.slice(1,e.length),a=t):(s=e[0].events,i=e[0].data,a=e[0].context||t),(Array.isArray(s)?s:s.split(" ")).forEach(e=>{if(t.eventsListeners&&t.eventsListeners[e]){const s=[];t.eventsListeners[e].forEach(e=>{s.push(e)}),s.forEach(e=>{e.apply(a,i)})}}),t}useModulesParams(e){const t=this;t.modules&&Object.keys(t.modules).forEach(s=>{const i=t.modules[s];i.params&&Utils.extend(e,i.params)})}useModules(e={}){const t=this;t.modules&&Object.keys(t.modules).forEach(s=>{const i=t.modules[s],a=e[s]||{};i.instance&&Object.keys(i.instance).forEach(e=>{const s=i.instance[e];t[e]="function"==typeof s?s.bind(t):s}),i.on&&t.on&&Object.keys(i.on).forEach(e=>{t.on(e,i.on[e])}),i.create&&i.create.bind(t)(a)})}static set components(e){this.use&&this.use(e)}static installModule(e,...t){const s=this;s.prototype.modules||(s.prototype.modules={});const i=e.name||`${Object.keys(s.prototype.modules).length}_${Utils.now()}`;return s.prototype.modules[i]=e,e.proto&&Object.keys(e.proto).forEach(t=>{s.prototype[t]=e.proto[t]}),e.static&&Object.keys(e.static).forEach(t=>{s[t]=e.static[t]}),e.install&&e.install.apply(s,t),s}static use(e,...t){const s=this;return Array.isArray(e)?(e.forEach(e=>s.installModule(e)),s):s.installModule(e,...t)}}function updateSize(){const e=this;let t,s;const i=e.$el;t=void 0!==e.params.width?e.params.width:i[0].clientWidth,s=void 0!==e.params.height?e.params.height:i[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(i.css("padding-left"),10)-parseInt(i.css("padding-right"),10),s=s-parseInt(i.css("padding-top"),10)-parseInt(i.css("padding-bottom"),10),Utils.extend(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this,t=e.params,{$wrapperEl:s,size:i,rtlTranslate:a,wrongRTL:n}=e,r=e.virtual&&t.virtual.enabled,l=r?e.virtual.slides.length:e.slides.length,o=s.children("."+e.params.slideClass),d=r?e.virtual.slides.length:o.length;let p=[];const c=[],h=[];function u(e){return!t.cssMode||e!==o.length-1}let m=t.slidesOffsetBefore;"function"==typeof m&&(m=t.slidesOffsetBefore.call(e));let f=t.slidesOffsetAfter;"function"==typeof f&&(f=t.slidesOffsetAfter.call(e));const g=e.snapGrid.length,v=e.snapGrid.length;let w,b,y=t.spaceBetween,x=-m,S=0,T=0;if(void 0===i)return;"string"==typeof y&&y.indexOf("%")>=0&&(y=parseFloat(y.replace("%",""))/100*i),e.virtualSize=-y,a?o.css({marginLeft:"",marginTop:""}):o.css({marginRight:"",marginBottom:""}),t.slidesPerColumn>1&&(w=Math.floor(d/t.slidesPerColumn)===d/e.params.slidesPerColumn?d:Math.ceil(d/t.slidesPerColumn)*t.slidesPerColumn,"auto"!==t.slidesPerView&&"row"===t.slidesPerColumnFill&&(w=Math.max(w,t.slidesPerView*t.slidesPerColumn)));const E=t.slidesPerColumn,C=w/E,$=Math.floor(d/t.slidesPerColumn);for(let s=0;s<d;s+=1){b=0;const a=o.eq(s);if(t.slidesPerColumn>1){let i,n,r;if("row"===t.slidesPerColumnFill&&t.slidesPerGroup>1){const e=Math.floor(s/(t.slidesPerGroup*t.slidesPerColumn)),l=s-t.slidesPerColumn*t.slidesPerGroup*e,o=0===e?t.slidesPerGroup:Math.min(Math.ceil((d-e*E*t.slidesPerGroup)/E),t.slidesPerGroup);r=Math.floor(l/o),n=l-r*o+e*t.slidesPerGroup,i=n+r*w/E,a.css({"-webkit-box-ordinal-group":i,"-moz-box-ordinal-group":i,"-ms-flex-order":i,"-webkit-order":i,order:i})}else"column"===t.slidesPerColumnFill?(n=Math.floor(s/E),r=s-n*E,(n>$||n===$&&r===E-1)&&(r+=1,r>=E&&(r=0,n+=1))):(r=Math.floor(s/C),n=s-r*C);a.css("margin-"+(e.isHorizontal()?"top":"left"),0!==r&&t.spaceBetween&&t.spaceBetween+"px")}if("none"!==a.css("display")){if("auto"===t.slidesPerView){const s=win.getComputedStyle(a[0],null),i=a[0].style.transform,n=a[0].style.webkitTransform;if(i&&(a[0].style.transform="none"),n&&(a[0].style.webkitTransform="none"),t.roundLengths)b=e.isHorizontal()?a.outerWidth(!0):a.outerHeight(!0);else if(e.isHorizontal()){const e=parseFloat(s.getPropertyValue("width")),t=parseFloat(s.getPropertyValue("padding-left")),i=parseFloat(s.getPropertyValue("padding-right")),a=parseFloat(s.getPropertyValue("margin-left")),n=parseFloat(s.getPropertyValue("margin-right")),r=s.getPropertyValue("box-sizing");b=r&&"border-box"===r?e+a+n:e+t+i+a+n}else{const e=parseFloat(s.getPropertyValue("height")),t=parseFloat(s.getPropertyValue("padding-top")),i=parseFloat(s.getPropertyValue("padding-bottom")),a=parseFloat(s.getPropertyValue("margin-top")),n=parseFloat(s.getPropertyValue("margin-bottom")),r=s.getPropertyValue("box-sizing");b=r&&"border-box"===r?e+a+n:e+t+i+a+n}i&&(a[0].style.transform=i),n&&(a[0].style.webkitTransform=n),t.roundLengths&&(b=Math.floor(b))}else b=(i-(t.slidesPerView-1)*y)/t.slidesPerView,t.roundLengths&&(b=Math.floor(b)),o[s]&&(e.isHorizontal()?o[s].style.width=b+"px":o[s].style.height=b+"px");o[s]&&(o[s].swiperSlideSize=b),h.push(b),t.centeredSlides?(x=x+b/2+S/2+y,0===S&&0!==s&&(x=x-i/2-y),0===s&&(x=x-i/2-y),Math.abs(x)<.001&&(x=0),t.roundLengths&&(x=Math.floor(x)),T%t.slidesPerGroup==0&&p.push(x),c.push(x)):(t.roundLengths&&(x=Math.floor(x)),(T-Math.min(e.params.slidesPerGroupSkip,T))%e.params.slidesPerGroup==0&&p.push(x),c.push(x),x=x+b+y),e.virtualSize+=b+y,S=b,T+=1}}let M;if(e.virtualSize=Math.max(e.virtualSize,i)+f,a&&n&&("slide"===t.effect||"coverflow"===t.effect)&&s.css({width:e.virtualSize+t.spaceBetween+"px"}),t.setWrapperSize&&(e.isHorizontal()?s.css({width:e.virtualSize+t.spaceBetween+"px"}):s.css({height:e.virtualSize+t.spaceBetween+"px"})),t.slidesPerColumn>1&&(e.virtualSize=(b+t.spaceBetween)*w,e.virtualSize=Math.ceil(e.virtualSize/t.slidesPerColumn)-t.spaceBetween,e.isHorizontal()?s.css({width:e.virtualSize+t.spaceBetween+"px"}):s.css({height:e.virtualSize+t.spaceBetween+"px"}),t.centeredSlides)){M=[];for(let s=0;s<p.length;s+=1){let i=p[s];t.roundLengths&&(i=Math.floor(i)),p[s]<e.virtualSize+p[0]&&M.push(i)}p=M}if(!t.centeredSlides){M=[];for(let s=0;s<p.length;s+=1){let a=p[s];t.roundLengths&&(a=Math.floor(a)),p[s]<=e.virtualSize-i&&M.push(a)}p=M,Math.floor(e.virtualSize-i)-Math.floor(p[p.length-1])>1&&p.push(e.virtualSize-i)}if(0===p.length&&(p=[0]),0!==t.spaceBetween&&(e.isHorizontal()?a?o.filter(u).css({marginLeft:y+"px"}):o.filter(u).css({marginRight:y+"px"}):o.filter(u).css({marginBottom:y+"px"})),t.centeredSlides&&t.centeredSlidesBounds){let e=0;h.forEach(s=>{e+=s+(t.spaceBetween?t.spaceBetween:0)}),e-=t.spaceBetween;const s=e-i;p=p.map(e=>e<0?-m:e>s?s+f:e)}if(t.centerInsufficientSlides){let e=0;if(h.forEach(s=>{e+=s+(t.spaceBetween?t.spaceBetween:0)}),e-=t.spaceBetween,e<i){const t=(i-e)/2;p.forEach((e,s)=>{p[s]=e-t}),c.forEach((e,s)=>{c[s]=e+t})}}Utils.extend(e,{slides:o,snapGrid:p,slidesGrid:c,slidesSizesGrid:h}),d!==l&&e.emit("slidesLengthChange"),p.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),c.length!==v&&e.emit("slidesGridLengthChange"),(t.watchSlidesProgress||t.watchSlidesVisibility)&&e.updateSlidesOffset()}function updateAutoHeight(e){const t=this,s=[];let i,a=0;if("number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed),"auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)t.visibleSlides.each((e,t)=>{s.push(t)});else for(i=0;i<Math.ceil(t.params.slidesPerView);i+=1){const e=t.activeIndex+i;if(e>t.slides.length)break;s.push(t.slides.eq(e)[0])}else s.push(t.slides.eq(t.activeIndex)[0]);for(i=0;i<s.length;i+=1)if(void 0!==s[i]){const e=s[i].offsetHeight;a=e>a?e:a}a&&t.$wrapperEl.css("height",a+"px")}function updateSlidesOffset(){const e=this,t=e.slides;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop}function updateSlidesProgress(e=this&&this.translate||0){const t=this,s=t.params,{slides:i,rtlTranslate:a}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;a&&(n=e),i.removeClass(s.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(let e=0;e<i.length;e+=1){const r=i[e],l=(n+(s.centeredSlides?t.minTranslate():0)-r.swiperSlideOffset)/(r.swiperSlideSize+s.spaceBetween);if(s.watchSlidesVisibility||s.centeredSlides&&s.autoHeight){const a=-(n-r.swiperSlideOffset),l=a+t.slidesSizesGrid[e];(a>=0&&a<t.size-1||l>1&&l<=t.size||a<=0&&l>=t.size)&&(t.visibleSlides.push(r),t.visibleSlidesIndexes.push(e),i.eq(e).addClass(s.slideVisibleClass))}r.progress=a?-l:l}t.visibleSlides=$(t.visibleSlides)}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:n,isEnd:r}=t;const l=n,o=r;0===i?(a=0,n=!0,r=!0):(a=(e-t.minTranslate())/i,n=a<=0,r=a>=1),Utils.extend(t,{progress:a,isBeginning:n,isEnd:r}),(s.watchSlidesProgress||s.watchSlidesVisibility||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),r&&!o&&t.emit("reachEnd toEdge"),(l&&!n||o&&!r)&&t.emit("fromEdge"),t.emit("progress",a)}function updateSlidesClasses(){const e=this,{slides:t,params:s,$wrapperEl:i,activeIndex:a,realIndex:n}=e,r=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=r?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${a}"]`):t.eq(a),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${n}"]`).addClass(s.slideDuplicateActiveClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${n}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll("."+s.slideClass).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll("."+s.slideClass).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?i.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):i.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass))}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:i,snapGrid:a,params:n,activeIndex:r,realIndex:l,snapIndex:o}=t;let d,p=e;if(void 0===p){for(let e=0;e<i.length;e+=1)void 0!==i[e+1]?s>=i[e]&&s<i[e+1]-(i[e+1]-i[e])/2?p=e:s>=i[e]&&s<i[e+1]&&(p=e+1):s>=i[e]&&(p=e);n.normalizeSlideIndex&&(p<0||void 0===p)&&(p=0)}if(a.indexOf(s)>=0)d=a.indexOf(s);else{const e=Math.min(n.slidesPerGroupSkip,p);d=e+Math.floor((p-e)/n.slidesPerGroup)}if(d>=a.length&&(d=a.length-1),p===r)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const c=parseInt(t.slides.eq(p).attr("data-swiper-slide-index")||p,10);Utils.extend(t,{snapIndex:d,realIndex:c,previousIndex:r,activeIndex:p}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==c&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")}function updateClickedSlide(e){const t=this,s=t.params,i=$(e.target).closest("."+s.slideClass)[0];let a=!1;if(i)for(let e=0;e<t.slides.length;e+=1)t.slides[e]===i&&(a=!0);if(!i||!a)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=i,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt($(i).attr("data-swiper-slide-index"),10):t.clickedIndex=$(i).index(),s.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}var update={updateSize:updateSize,updateSlides:updateSlides,updateAutoHeight:updateAutoHeight,updateSlidesOffset:updateSlidesOffset,updateSlidesProgress:updateSlidesProgress,updateProgress:updateProgress,updateSlidesClasses:updateSlidesClasses,updateActiveIndex:updateActiveIndex,updateClickedSlide:updateClickedSlide};function getTranslate(e=(this.isHorizontal()?"x":"y")){const{params:t,rtlTranslate:s,translate:i,$wrapperEl:a}=this;if(t.virtualTranslate)return s?-i:i;if(t.cssMode)return i;let n=Utils.getTranslate(a[0],e);return s&&(n=-n),n||0}function setTranslate(e,t){const s=this,{rtlTranslate:i,params:a,$wrapperEl:n,wrapperEl:r,progress:l}=s;let o=0,d=0;let p;s.isHorizontal()?o=i?-e:e:d=e,a.roundLengths&&(o=Math.floor(o),d=Math.floor(d)),a.cssMode?r[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-o:-d:a.virtualTranslate||n.transform(`translate3d(${o}px, ${d}px, 0px)`),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?o:d;const c=s.maxTranslate()-s.minTranslate();p=0===c?0:(e-s.minTranslate())/c,p!==l&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)}function minTranslate(){return-this.snapGrid[0]}function maxTranslate(){return-this.snapGrid[this.snapGrid.length-1]}function translateTo(e=0,t=this.params.speed,s=!0,i=!0,a){const n=this,{params:r,wrapperEl:l}=n;if(n.animating&&r.preventInteractionOnTransition)return!1;const o=n.minTranslate(),d=n.maxTranslate();let p;if(p=i&&e>o?o:i&&e<d?d:e,n.updateProgress(p),r.cssMode){const e=n.isHorizontal();return 0===t?l[e?"scrollLeft":"scrollTop"]=-p:l.scrollTo?l.scrollTo({[e?"left":"top"]:-p,behavior:"smooth"}):l[e?"scrollLeft":"scrollTop"]=-p,!0}return 0===t?(n.setTransition(0),n.setTranslate(p),s&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionEnd"))):(n.setTransition(t),n.setTranslate(p),s&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionStart")),n.animating||(n.animating=!0,n.onTranslateToWrapperTransitionEnd||(n.onTranslateToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.$wrapperEl[0].removeEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].removeEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd),n.onTranslateToWrapperTransitionEnd=null,delete n.onTranslateToWrapperTransitionEnd,s&&n.emit("transitionEnd"))}),n.$wrapperEl[0].addEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].addEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd))),!0}var translate={getTranslate:getTranslate,setTranslate:setTranslate,minTranslate:minTranslate,maxTranslate:maxTranslate,translateTo:translateTo};function setTransition(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)}function transitionStart(e=!0,t){const s=this,{activeIndex:i,params:a,previousIndex:n}=s;if(a.cssMode)return;a.autoHeight&&s.updateAutoHeight();let r=t;if(r||(r=i>n?"next":i<n?"prev":"reset"),s.emit("transitionStart"),e&&i!==n){if("reset"===r)return void s.emit("slideResetTransitionStart");s.emit("slideChangeTransitionStart"),"next"===r?s.emit("slideNextTransitionStart"):s.emit("slidePrevTransitionStart")}}function transitionEnd$1(e=!0,t){const s=this,{activeIndex:i,previousIndex:a,params:n}=s;if(s.animating=!1,n.cssMode)return;s.setTransition(0);let r=t;if(r||(r=i>a?"next":i<a?"prev":"reset"),s.emit("transitionEnd"),e&&i!==a){if("reset"===r)return void s.emit("slideResetTransitionEnd");s.emit("slideChangeTransitionEnd"),"next"===r?s.emit("slideNextTransitionEnd"):s.emit("slidePrevTransitionEnd")}}var transition$1={setTransition:setTransition,transitionStart:transitionStart,transitionEnd:transitionEnd$1};function slideTo(e=0,t=this.params.speed,s=!0,i){const a=this;let n=e;n<0&&(n=0);const{params:r,snapGrid:l,slidesGrid:o,previousIndex:d,activeIndex:p,rtlTranslate:c,wrapperEl:h}=a;if(a.animating&&r.preventInteractionOnTransition)return!1;const u=Math.min(a.params.slidesPerGroupSkip,n);let m=u+Math.floor((n-u)/a.params.slidesPerGroup);m>=l.length&&(m=l.length-1),(p||r.initialSlide||0)===(d||0)&&s&&a.emit("beforeSlideChangeStart");const f=-l[m];if(a.updateProgress(f),r.normalizeSlideIndex)for(let e=0;e<o.length;e+=1)-Math.floor(100*f)>=Math.floor(100*o[e])&&(n=e);if(a.initialized&&n!==p){if(!a.allowSlideNext&&f<a.translate&&f<a.minTranslate())return!1;if(!a.allowSlidePrev&&f>a.translate&&f>a.maxTranslate()&&(p||0)!==n)return!1}let g;if(g=n>p?"next":n<p?"prev":"reset",c&&-f===a.translate||!c&&f===a.translate)return a.updateActiveIndex(n),r.autoHeight&&a.updateAutoHeight(),a.updateSlidesClasses(),"slide"!==r.effect&&a.setTranslate(f),"reset"!==g&&(a.transitionStart(s,g),a.transitionEnd(s,g)),!1;if(r.cssMode){const e=a.isHorizontal();let s=-f;return c&&(s=h.scrollWidth-h.offsetWidth-s),0===t?h[e?"scrollLeft":"scrollTop"]=s:h.scrollTo?h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"}):h[e?"scrollLeft":"scrollTop"]=s,!0}return 0===t?(a.setTransition(0),a.setTranslate(f),a.updateActiveIndex(n),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,i),a.transitionStart(s,g),a.transitionEnd(s,g)):(a.setTransition(t),a.setTranslate(f),a.updateActiveIndex(n),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,i),a.transitionStart(s,g),a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.$wrapperEl[0].removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].removeEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(s,g))}),a.$wrapperEl[0].addEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.$wrapperEl[0].addEventListener("webkitTransitionEnd",a.onSlideToWrapperTransitionEnd))),!0}function slideToLoop(e=0,t=this.params.speed,s=!0,i){const a=this;let n=e;return a.params.loop&&(n+=a.loopedSlides),a.slideTo(n,t,s,i)}function slideNext(e=this.params.speed,t=!0,s){const i=this,{params:a,animating:n}=i,r=i.activeIndex<a.slidesPerGroupSkip?1:a.slidesPerGroup;if(a.loop){if(n)return!1;i.loopFix(),i._clientLeft=i.$wrapperEl[0].clientLeft}return i.slideTo(i.activeIndex+r,e,t,s)}function slidePrev(e=this.params.speed,t=!0,s){const i=this,{params:a,animating:n,snapGrid:r,slidesGrid:l,rtlTranslate:o}=i;if(a.loop){if(n)return!1;i.loopFix(),i._clientLeft=i.$wrapperEl[0].clientLeft}function d(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const p=d(o?i.translate:-i.translate),c=r.map(e=>d(e));l.map(e=>d(e)),r[c.indexOf(p)];let h,u=r[c.indexOf(p)-1];return void 0===u&&a.cssMode&&r.forEach(e=>{!u&&p>=e&&(u=e)}),void 0!==u&&(h=l.indexOf(u),h<0&&(h=i.activeIndex-1)),i.slideTo(h,e,t,s)}function slideReset(e=this.params.speed,t=!0,s){return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e=this.params.speed,t=!0,s,i=.5){const a=this;let n=a.activeIndex;const r=Math.min(a.params.slidesPerGroupSkip,n),l=r+Math.floor((n-r)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(n+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(n-=a.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,a.slidesGrid.length-1),a.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this,{params:t,$wrapperEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,n=e.clickedIndex;if(t.loop){if(e.animating)return;a=parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?n<e.loopedSlides-i/2||n>e.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=s.children(`.${t.slideClass}[data-swiper-slide-index="${a}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),Utils.nextTick(()=>{e.slideTo(n)})):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=s.children(`.${t.slideClass}[data-swiper-slide-index="${a}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),Utils.nextTick(()=>{e.slideTo(n)})):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){const e=this,{params:t,$wrapperEl:s}=e;s.children(`.${t.slideClass}.${t.slideDuplicateClass}`).remove();let i=s.children("."+t.slideClass);if(t.loopFillGroupWithBlank){const e=t.slidesPerGroup-i.length%t.slidesPerGroup;if(e!==t.slidesPerGroup){for(let i=0;i<e;i+=1){const e=$(doc.createElement("div")).addClass(`${t.slideClass} ${t.slideBlankClass}`);s.append(e)}i=s.children("."+t.slideClass)}}"auto"!==t.slidesPerView||t.loopedSlides||(t.loopedSlides=i.length),e.loopedSlides=Math.ceil(parseFloat(t.loopedSlides||t.slidesPerView,10)),e.loopedSlides+=t.loopAdditionalSlides,e.loopedSlides>i.length&&(e.loopedSlides=i.length);const a=[],n=[];i.each((t,s)=>{const r=$(s);t<e.loopedSlides&&n.push(s),t<i.length&&t>=i.length-e.loopedSlides&&a.push(s),r.attr("data-swiper-slide-index",t)});for(let e=0;e<n.length;e+=1)s.append($(n[e].cloneNode(!0)).addClass(t.slideDuplicateClass));for(let e=a.length-1;e>=0;e-=1)s.prepend($(a[e].cloneNode(!0)).addClass(t.slideDuplicateClass))}function loopFix(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:i,allowSlidePrev:a,allowSlideNext:n,snapGrid:r,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-r[t]-e.getTranslate();if(t<i){o=s.length-3*i+t,o+=i,e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}else if(t>=s.length-i){o=-s.length+t+i,o+=i,e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=a,e.allowSlideNext=n,e.emit("loopFix")}function loopDestroy(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){if(Support.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)return;const t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}function unsetGrabCursor(){Support.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function appendSlide(e){const t=this,{$wrapperEl:s,params:i}=t;if(i.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.append(e[t]);else s.append(e);i.loop&&t.loopCreate(),i.observer&&Support.observer||t.update()}function prependSlide(e){const t=this,{params:s,$wrapperEl:i,activeIndex:a}=t;s.loop&&t.loopDestroy();let n=a+1;if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&i.prepend(e[t]);n=a+e.length}else i.prepend(e);s.loop&&t.loopCreate(),s.observer&&Support.observer||t.update(),t.slideTo(n,0,!1)}function addSlide(e,t){const s=this,{$wrapperEl:i,params:a,activeIndex:n}=s;let r=n;a.loop&&(r-=s.loopedSlides,s.loopDestroy(),s.slides=i.children("."+a.slideClass));const l=s.slides.length;if(e<=0)return void s.prependSlide(t);if(e>=l)return void s.appendSlide(t);let o=r>e?r+1:r;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&i.append(t[e]);o=r>e?r+t.length:r}else i.append(t);for(let e=0;e<d.length;e+=1)i.append(d[e]);a.loop&&s.loopCreate(),a.observer&&Support.observer||s.update(),a.loop?s.slideTo(o+s.loopedSlides,0,!1):s.slideTo(o,0,!1)}function removeSlide(e){const t=this,{params:s,$wrapperEl:i,activeIndex:a}=t;let n=a;s.loop&&(n-=t.loopedSlides,t.loopDestroy(),t.slides=i.children("."+s.slideClass));let r,l=n;if("object"==typeof e&&"length"in e){for(let s=0;s<e.length;s+=1)r=e[s],t.slides[r]&&t.slides.eq(r).remove(),r<l&&(l-=1);l=Math.max(l,0)}else r=e,t.slides[r]&&t.slides.eq(r).remove(),r<l&&(l-=1),l=Math.max(l,0);s.loop&&t.loopCreate(),s.observer&&Support.observer||t.update(),s.loop?t.slideTo(l+t.loopedSlides,0,!1):t.slideTo(l,0,!1)}function removeAllSlides(){const e=this,t=[];for(let s=0;s<e.slides.length;s+=1)t.push(s);e.removeSlide(t)}var manipulation={appendSlide:appendSlide,prependSlide:prependSlide,addSlide:addSlide,removeSlide:removeSlide,removeAllSlides:removeAllSlides};const Device=function(){const e=win.navigator.platform,t=win.navigator.userAgent,s={ios:!1,android:!1,androidChrome:!1,desktop:!1,iphone:!1,ipod:!1,ipad:!1,edge:!1,ie:!1,firefox:!1,macos:!1,windows:!1,cordova:!(!win.cordova&&!win.phonegap),phonegap:!(!win.cordova&&!win.phonegap),electron:!1},i=win.screen.width,a=win.screen.height,n=t.match(/(Android);?[\s\/]+([\d.]+)?/);let r=t.match(/(iPad).*OS\s([\d_]+)/);const l=t.match(/(iPod)(.*OS\s([\d_]+))?/),o=!r&&t.match(/(iPhone\sOS|iOS)\s([\d_]+)/),d=t.indexOf("MSIE ")>=0||t.indexOf("Trident/")>=0,p=t.indexOf("Edge/")>=0,c=t.indexOf("Gecko/")>=0&&t.indexOf("Firefox/")>=0,h="Win32"===e,u=t.toLowerCase().indexOf("electron")>=0;let m="MacIntel"===e;return!r&&m&&Support.touch&&(1024===i&&1366===a||834===i&&1194===a||834===i&&1112===a||768===i&&1024===a)&&(r=t.match(/(Version)\/([\d.]+)/),m=!1),s.ie=d,s.edge=p,s.firefox=c,n&&!h&&(s.os="android",s.osVersion=n[2],s.android=!0,s.androidChrome=t.toLowerCase().indexOf("chrome")>=0),(r||o||l)&&(s.os="ios",s.ios=!0),o&&!l&&(s.osVersion=o[2].replace(/_/g,"."),s.iphone=!0),r&&(s.osVersion=r[2].replace(/_/g,"."),s.ipad=!0),l&&(s.osVersion=l[3]?l[3].replace(/_/g,"."):null,s.ipod=!0),s.ios&&s.osVersion&&t.indexOf("Version/")>=0&&"10"===s.osVersion.split(".")[0]&&(s.osVersion=t.toLowerCase().split("version/")[1].split(" ")[0]),s.webView=!(!(o||r||l)||!t.match(/.*AppleWebKit(?!.*Safari)/i)&&!win.navigator.standalone)||win.matchMedia&&win.matchMedia("(display-mode: standalone)").matches,s.webview=s.webView,s.standalone=s.webView,s.desktop=!(s.ios||s.android)||u,s.desktop&&(s.electron=u,s.macos=m,s.windows=h,s.macos&&(s.os="macos"),s.windows&&(s.os="windows")),s.pixelRatio=win.devicePixelRatio||1,s}();function onTouchStart(e){const t=this,s=t.touchEventsData,{params:i,touches:a}=t;if(t.animating&&i.preventInteractionOnTransition)return;let n=e;n.originalEvent&&(n=n.originalEvent);const r=$(n.target);if("wrapper"===i.touchEventsTarget&&!r.closest(t.wrapperEl).length)return;if(s.isTouchEvent="touchstart"===n.type,!s.isTouchEvent&&"which"in n&&3===n.which)return;if(!s.isTouchEvent&&"button"in n&&n.button>0)return;if(s.isTouched&&s.isMoved)return;if(i.noSwiping&&r.closest(i.noSwipingSelector?i.noSwipingSelector:"."+i.noSwipingClass)[0])return void(t.allowClick=!0);if(i.swipeHandler&&!r.closest(i.swipeHandler)[0])return;a.currentX="touchstart"===n.type?n.targetTouches[0].pageX:n.pageX,a.currentY="touchstart"===n.type?n.targetTouches[0].pageY:n.pageY;const l=a.currentX,o=a.currentY,d=i.edgeSwipeDetection||i.iOSEdgeSwipeDetection,p=i.edgeSwipeThreshold||i.iOSEdgeSwipeThreshold;if(!d||!(l<=p||l>=win.screen.width-p)){if(Utils.extend(s,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=l,a.startY=o,s.touchStartTime=Utils.now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,i.threshold>0&&(s.allowThresholdMove=!1),"touchstart"!==n.type){let e=!0;r.is(s.formElements)&&(e=!1),doc.activeElement&&$(doc.activeElement).is(s.formElements)&&doc.activeElement!==r[0]&&doc.activeElement.blur();const a=e&&t.allowTouchMove&&i.touchStartPreventDefault;(i.touchStartForcePreventDefault||a)&&n.preventDefault()}t.emit("touchStart",n)}}function onTouchMove(e){const t=this,s=t.touchEventsData,{params:i,touches:a,rtlTranslate:n}=t;let r=e;if(r.originalEvent&&(r=r.originalEvent),!s.isTouched)return void(s.startMoving&&s.isScrolling&&t.emit("touchMoveOpposite",r));if(s.isTouchEvent&&"touchmove"!==r.type)return;const l="touchmove"===r.type&&r.targetTouches&&(r.targetTouches[0]||r.changedTouches[0]),o="touchmove"===r.type?l.pageX:r.pageX,d="touchmove"===r.type?l.pageY:r.pageY;if(r.preventedByNestedSwiper)return a.startX=o,void(a.startY=d);if(!t.allowTouchMove)return t.allowClick=!1,void(s.isTouched&&(Utils.extend(a,{startX:o,startY:d,currentX:o,currentY:d}),s.touchStartTime=Utils.now()));if(s.isTouchEvent&&i.touchReleaseOnEdges&&!i.loop)if(t.isVertical()){if(d<a.startY&&t.translate<=t.maxTranslate()||d>a.startY&&t.translate>=t.minTranslate())return s.isTouched=!1,void(s.isMoved=!1)}else if(o<a.startX&&t.translate<=t.maxTranslate()||o>a.startX&&t.translate>=t.minTranslate())return;if(s.isTouchEvent&&doc.activeElement&&r.target===doc.activeElement&&$(r.target).is(s.formElements))return s.isMoved=!0,void(t.allowClick=!1);if(s.allowTouchCallbacks&&t.emit("touchMove",r),r.targetTouches&&r.targetTouches.length>1)return;a.currentX=o,a.currentY=d;const p=a.currentX-a.startX,c=a.currentY-a.startY;if(t.params.threshold&&Math.sqrt(p**2+c**2)<t.params.threshold)return;if(void 0===s.isScrolling){let e;t.isHorizontal()&&a.currentY===a.startY||t.isVertical()&&a.currentX===a.startX?s.isScrolling=!1:p*p+c*c>=25&&(e=180*Math.atan2(Math.abs(c),Math.abs(p))/Math.PI,s.isScrolling=t.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(s.isScrolling&&t.emit("touchMoveOpposite",r),void 0===s.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(s.startMoving=!0)),s.isScrolling)return void(s.isTouched=!1);if(!s.startMoving)return;t.allowClick=!1,!i.cssMode&&r.cancelable&&r.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&r.stopPropagation(),s.isMoved||(i.loop&&t.loopFix(),s.startTranslate=t.getTranslate(),t.setTransition(0),t.animating&&t.$wrapperEl.trigger("webkitTransitionEnd transitionend"),s.allowMomentumBounce=!1,!i.grabCursor||!0!==t.allowSlideNext&&!0!==t.allowSlidePrev||t.setGrabCursor(!0),t.emit("sliderFirstMove",r)),t.emit("sliderMove",r),s.isMoved=!0;let h=t.isHorizontal()?p:c;a.diff=h,h*=i.touchRatio,n&&(h=-h),t.swipeDirection=h>0?"prev":"next",s.currentTranslate=h+s.startTranslate;let u=!0,m=i.resistanceRatio;if(i.touchReleaseOnEdges&&(m=0),h>0&&s.currentTranslate>t.minTranslate()?(u=!1,i.resistance&&(s.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+s.startTranslate+h)**m)):h<0&&s.currentTranslate<t.maxTranslate()&&(u=!1,i.resistance&&(s.currentTranslate=t.maxTranslate()+1-(t.maxTranslate()-s.startTranslate-h)**m)),u&&(r.preventedByNestedSwiper=!0),!t.allowSlideNext&&"next"===t.swipeDirection&&s.currentTranslate<s.startTranslate&&(s.currentTranslate=s.startTranslate),!t.allowSlidePrev&&"prev"===t.swipeDirection&&s.currentTranslate>s.startTranslate&&(s.currentTranslate=s.startTranslate),i.threshold>0){if(!(Math.abs(h)>i.threshold||s.allowThresholdMove))return void(s.currentTranslate=s.startTranslate);if(!s.allowThresholdMove)return s.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,s.currentTranslate=s.startTranslate,void(a.diff=t.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}i.followFinger&&!i.cssMode&&((i.freeMode||i.watchSlidesProgress||i.watchSlidesVisibility)&&(t.updateActiveIndex(),t.updateSlidesClasses()),i.freeMode&&(0===s.velocities.length&&s.velocities.push({position:a[t.isHorizontal()?"startX":"startY"],time:s.touchStartTime}),s.velocities.push({position:a[t.isHorizontal()?"currentX":"currentY"],time:Utils.now()})),t.updateProgress(s.currentTranslate),t.setTranslate(s.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData,{params:i,touches:a,rtlTranslate:n,$wrapperEl:r,slidesGrid:l,snapGrid:o}=t;let d=e;if(d.originalEvent&&(d=d.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",d),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&i.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);i.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const p=Utils.now(),c=p-s.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(d),t.emit("tap click",d),c<300&&p-s.lastClickTime<300&&t.emit("doubleTap doubleClick",d)),s.lastClickTime=Utils.now(),Utils.nextTick(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=i.followFinger?n?t.translate:-t.translate:-s.currentTranslate,i.cssMode)return;if(i.freeMode){if(h<-t.minTranslate())return void t.slideTo(t.activeIndex);if(h>-t.maxTranslate())return void(t.slides.length<o.length?t.slideTo(o.length-1):t.slideTo(t.slides.length-1));if(i.freeModeMomentum){if(s.velocities.length>1){const e=s.velocities.pop(),a=s.velocities.pop(),n=e.position-a.position,r=e.time-a.time;t.velocity=n/r,t.velocity/=2,Math.abs(t.velocity)<i.freeModeMinimumVelocity&&(t.velocity=0),(r>150||Utils.now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeModeMomentumVelocityRatio,s.velocities.length=0;let e=1e3*i.freeModeMomentumRatio;const a=t.velocity*e;let l=t.translate+a;n&&(l=-l);let d,p=!1;const c=20*Math.abs(t.velocity)*i.freeModeMomentumBounceRatio;let h;if(l<t.maxTranslate())i.freeModeMomentumBounce?(l+t.maxTranslate()<-c&&(l=t.maxTranslate()-c),d=t.maxTranslate(),p=!0,s.allowMomentumBounce=!0):l=t.maxTranslate(),i.loop&&i.centeredSlides&&(h=!0);else if(l>t.minTranslate())i.freeModeMomentumBounce?(l-t.minTranslate()>c&&(l=t.minTranslate()+c),d=t.minTranslate(),p=!0,s.allowMomentumBounce=!0):l=t.minTranslate(),i.loop&&i.centeredSlides&&(h=!0);else if(i.freeModeSticky){let e;for(let t=0;t<o.length;t+=1)if(o[t]>-l){e=t;break}l=Math.abs(o[e]-l)<Math.abs(o[e-1]-l)||"next"===t.swipeDirection?o[e]:o[e-1],l=-l}if(h&&t.once("transitionEnd",()=>{t.loopFix()}),0!==t.velocity){if(e=n?Math.abs((-l-t.translate)/t.velocity):Math.abs((l-t.translate)/t.velocity),i.freeModeSticky){const s=Math.abs((n?-l:l)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s<a?i.speed:s<2*a?1.5*i.speed:2.5*i.speed}}else if(i.freeModeSticky)return void t.slideToClosest();i.freeModeMomentumBounce&&p?(t.updateProgress(d),t.setTransition(e),t.setTranslate(l),t.transitionStart(!0,t.swipeDirection),t.animating=!0,r.transitionEnd(()=>{t&&!t.destroyed&&s.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(i.speed),setTimeout(()=>{t.setTranslate(d),r.transitionEnd(()=>{t&&!t.destroyed&&t.transitionEnd()})},0))})):t.velocity?(t.updateProgress(l),t.setTransition(e),t.setTranslate(l),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,r.transitionEnd(()=>{t&&!t.destroyed&&t.transitionEnd()}))):t.updateProgress(l),t.updateActiveIndex(),t.updateSlidesClasses()}else if(i.freeModeSticky)return void t.slideToClosest();return void((!i.freeModeMomentum||c>=i.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses()))}let u=0,m=t.slidesSizesGrid[0];for(let e=0;e<l.length;e+=e<i.slidesPerGroupSkip?1:i.slidesPerGroup){const t=e<i.slidesPerGroupSkip-1?1:i.slidesPerGroup;void 0!==l[e+t]?h>=l[e]&&h<l[e+t]&&(u=e,m=l[e+t]-l[e]):h>=l[e]&&(u=e,m=l[l.length-1]-l[l.length-2])}const f=(h-l[u])/m,g=u<i.slidesPerGroupSkip-1?1:i.slidesPerGroup;if(c>i.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(f>=i.longSwipesRatio?t.slideTo(u+g):t.slideTo(u)),"prev"===t.swipeDirection&&(f>1-i.longSwipesRatio?t.slideTo(u+g):t.slideTo(u))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(d.target===t.navigation.nextEl||d.target===t.navigation.prevEl)?d.target===t.navigation.nextEl?t.slideTo(u+g):t.slideTo(u):("next"===t.swipeDirection&&t.slideTo(u+g),"prev"===t.swipeDirection&&t.slideTo(u))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:n}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s}=e;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=s?t.scrollWidth-t.offsetWidth-t.scrollLeft:-t.scrollLeft:e.translate=-t.scrollTop,-0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const a=e.maxTranslate()-e.minTranslate();i=0===a?0:(e.translate-e.minTranslate())/a,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let dummyEventAttached=!1;function dummyEventListener(){}function attachEvents(){const e=this,{params:t,touchEvents:s,el:i,wrapperEl:a}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e);const n=!!t.nested;if(!Support.touch&&Support.pointerEvents)i.addEventListener(s.start,e.onTouchStart,!1),doc.addEventListener(s.move,e.onTouchMove,n),doc.addEventListener(s.end,e.onTouchEnd,!1);else{if(Support.touch){const a=!("touchstart"!==s.start||!Support.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};i.addEventListener(s.start,e.onTouchStart,a),i.addEventListener(s.move,e.onTouchMove,Support.passiveListener?{passive:!1,capture:n}:n),i.addEventListener(s.end,e.onTouchEnd,a),s.cancel&&i.addEventListener(s.cancel,e.onTouchEnd,a),dummyEventAttached||(doc.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0)}(t.simulateTouch&&!Device.ios&&!Device.android||t.simulateTouch&&!Support.touch&&Device.ios)&&(i.addEventListener("mousedown",e.onTouchStart,!1),doc.addEventListener("mousemove",e.onTouchMove,n),doc.addEventListener("mouseup",e.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&i.addEventListener("click",e.onClick,!0),t.cssMode&&a.addEventListener("scroll",e.onScroll),t.updateOnWindowResize?e.on(Device.ios||Device.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e.on("observerUpdate",onResize,!0)}function detachEvents(){const e=this,{params:t,touchEvents:s,el:i,wrapperEl:a}=e,n=!!t.nested;if(!Support.touch&&Support.pointerEvents)i.removeEventListener(s.start,e.onTouchStart,!1),doc.removeEventListener(s.move,e.onTouchMove,n),doc.removeEventListener(s.end,e.onTouchEnd,!1);else{if(Support.touch){const a=!("onTouchStart"!==s.start||!Support.passiveListener||!t.passiveListeners)&&{passive:!0,capture:!1};i.removeEventListener(s.start,e.onTouchStart,a),i.removeEventListener(s.move,e.onTouchMove,n),i.removeEventListener(s.end,e.onTouchEnd,a),s.cancel&&i.removeEventListener(s.cancel,e.onTouchEnd,a)}(t.simulateTouch&&!Device.ios&&!Device.android||t.simulateTouch&&!Support.touch&&Device.ios)&&(i.removeEventListener("mousedown",e.onTouchStart,!1),doc.removeEventListener("mousemove",e.onTouchMove,n),doc.removeEventListener("mouseup",e.onTouchEnd,!1))}(t.preventClicks||t.preventClicksPropagation)&&i.removeEventListener("click",e.onClick,!0),t.cssMode&&a.removeEventListener("scroll",e.onScroll),e.off(Device.ios||Device.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize)}var events={attachEvents:attachEvents,detachEvents:detachEvents};function setBreakpoint(){const e=this,{activeIndex:t,initialized:s,loopedSlides:i=0,params:a,$el:n}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const l=e.getBreakpoint(r);if(l&&e.currentBreakpoint!==l){const o=l in r?r[l]:void 0;o&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach(e=>{const t=o[e];void 0!==t&&(o[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")});const d=o||e.originalParams,p=a.slidesPerColumn>1,c=d.slidesPerColumn>1;p&&!c?n.removeClass(`${a.containerModifierClass}multirow ${a.containerModifierClass}multirow-column`):!p&&c&&(n.addClass(a.containerModifierClass+"multirow"),"column"===d.slidesPerColumnFill&&n.addClass(a.containerModifierClass+"multirow-column"));const h=d.direction&&d.direction!==a.direction,u=a.loop&&(d.slidesPerView!==a.slidesPerView||h);h&&s&&e.changeDirection(),Utils.extend(e.params,d),Utils.extend(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),e.currentBreakpoint=l,u&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-i+e.loopedSlides,0,!1)),e.emit("breakpoint",d)}}function getBreakpoint(e){if(!e)return;let t=!1;const s=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:win.innerHeight*t,point:e}}return{value:e,point:e}});s.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e<s.length;e+=1){const{point:i,value:a}=s[e];a<=win.innerWidth&&(t=i)}return t||"max"}var breakpoints={setBreakpoint:setBreakpoint,getBreakpoint:getBreakpoint};function addClasses(){const{classNames:e,params:t,rtl:s,$el:i}=this,a=[];a.push("initialized"),a.push(t.direction),t.freeMode&&a.push("free-mode"),t.autoHeight&&a.push("autoheight"),s&&a.push("rtl"),t.slidesPerColumn>1&&(a.push("multirow"),"column"===t.slidesPerColumnFill&&a.push("multirow-column")),Device.android&&a.push("android"),Device.ios&&a.push("ios"),t.cssMode&&a.push("css-mode"),a.forEach(s=>{e.push(t.containerModifierClass+s)}),i.addClass(e.join(" "))}function removeClasses(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" "))}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,s,i,a,n){let r;function l(){n&&n()}$(e).parent("picture")[0]||e.complete&&a?l():t?(r=new win.Image,r.onload=l,r.onerror=l,i&&(r.sizes=i),s&&(r.srcset=s),t&&(r.src=t)):l()}function preloadImages(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s<e.imagesToLoad.length;s+=1){const i=e.imagesToLoad[s];e.loadImage(i,i.currentSrc||i.getAttribute("src"),i.srcset||i.getAttribute("srcset"),i.sizes||i.getAttribute("sizes"),!0,t)}}var images={loadImage:loadImage,preloadImages:preloadImages};function checkOverflow(){const e=this,t=e.params,s=e.isLocked,i=e.slides.length>0&&t.slidesOffsetBefore+t.spaceBetween*(e.slides.length-1)+e.slides[0].offsetWidth*e.slides.length;t.slidesOffsetBefore&&t.slidesOffsetAfter&&i?e.isLocked=i<=e.size:e.isLocked=1===e.snapGrid.length,e.allowSlideNext=!e.isLocked,e.allowSlidePrev=!e.isLocked,s!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock"),s&&s!==e.isLocked&&(e.isEnd=!1,e.navigation.update())}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,preventInteractionOnTransition:!1,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0};const prototypes={update:update,translate:translate,transition:transition$1,slide:slide,loop:loop,grabCursor:grabCursor,manipulation:manipulation,events:events,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes,images:images},extendedDefaults={};class Swiper extends SwiperClass{constructor(...e){let t,s;1===e.length&&e[0].constructor&&e[0].constructor===Object?s=e[0]:[t,s]=e,s||(s={}),s=Utils.extend({},s),t&&!s.el&&(s.el=t),super(s),Object.keys(prototypes).forEach(e=>{Object.keys(prototypes[e]).forEach(t=>{Swiper.prototype[t]||(Swiper.prototype[t]=prototypes[e][t])})});const i=this;void 0===i.modules&&(i.modules={}),Object.keys(i.modules).forEach(e=>{const t=i.modules[e];if(t.params){const e=Object.keys(t.params)[0],i=t.params[e];if("object"!=typeof i||null===i)return;if(!(e in s)||!("enabled"in i))return;!0===s[e]&&(s[e]={enabled:!0}),"object"!=typeof s[e]||"enabled"in s[e]||(s[e].enabled=!0),s[e]||(s[e]={enabled:!1})}});const a=Utils.extend({},defaults);i.useModulesParams(a),i.params=Utils.extend({},a,extendedDefaults,s),i.originalParams=Utils.extend({},i.params),i.passedParams=Utils.extend({},s),i.$=$;const n=$(i.params.el);if(t=n[0],!t)return;if(n.length>1){const e=[];return n.each((t,i)=>{const a=Utils.extend({},s,{el:i});e.push(new Swiper(a))}),e}let r;return t.swiper=i,n.data("swiper",i),t&&t.shadowRoot&&t.shadowRoot.querySelector?(r=$(t.shadowRoot.querySelector("."+i.params.wrapperClass)),r.children=e=>n.children(e)):r=n.children("."+i.params.wrapperClass),Utils.extend(i,{$el:n,el:t,$wrapperEl:r,wrapperEl:r[0],classNames:[],slides:$(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===i.params.direction,isVertical:()=>"vertical"===i.params.direction,rtl:"rtl"===t.dir.toLowerCase()||"rtl"===n.css("direction"),rtlTranslate:"horizontal"===i.params.direction&&("rtl"===t.dir.toLowerCase()||"rtl"===n.css("direction")),wrongRTL:"-webkit-box"===r.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:i.params.allowSlideNext,allowSlidePrev:i.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"];let t=["mousedown","mousemove","mouseup"];return Support.pointerEvents&&(t=["pointerdown","pointermove","pointerup"]),i.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},i.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},Support.touch||!i.params.simulateTouch?i.touchEventsTouch:i.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, label",lastClickTime:Utils.now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:i.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),i.useModules(),i.params.init&&i.init(),i}slidesPerViewDynamic(){const{params:e,slides:t,slidesGrid:s,size:i,activeIndex:a}=this;let n=1;if(e.centeredSlides){let e,s=t[a].swiperSlideSize;for(let r=a+1;r<t.length;r+=1)t[r]&&!e&&(s+=t[r].swiperSlideSize,n+=1,s>i&&(e=!0));for(let r=a-1;r>=0;r-=1)t[r]&&!e&&(s+=t[r].swiperSlideSize,n+=1,s>i&&(e=!0))}else for(let e=a+1;e<t.length;e+=1)s[e]-s[a]<i&&(n+=1);return n}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function i(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let a;s.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(i(),e.params.autoHeight&&e.updateAutoHeight()):(a=("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),a||i()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${i}`).addClass(`${s.params.containerModifierClass}${e}`),s.params.direction=e,s.slides.each((t,s)=>{"vertical"===e?s.style.width="":s.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}init(){const e=this;e.initialized||(e.emit("beforeInit"),e.params.breakpoints&&e.setBreakpoint(),e.addClasses(),e.params.loop&&e.loopCreate(),e.updateSize(),e.updateSlides(),e.params.watchOverflow&&e.checkOverflow(),e.params.grabCursor&&e.setGrabCursor(),e.params.preloadImages&&e.preloadImages(),e.params.loop?e.slideTo(e.params.initialSlide+e.loopedSlides,0,e.params.runCallbacksOnInit):e.slideTo(e.params.initialSlide,0,e.params.runCallbacksOnInit),e.attachEvents(),e.initialized=!0,e.emit("init"))}destroy(e=!0,t=!0){const s=this,{params:i,$el:a,$wrapperEl:n,slides:r}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a.removeAttr("style"),n.removeAttr("style"),r&&r.length&&r.removeClass([i.slideVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.$el[0].swiper=null,s.$el.data("swiper",null),Utils.deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){Utils.extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static get Class(){return SwiperClass}static get $(){return $}}var Device$1={name:"device",proto:{device:Device},static:{device:Device}},Support$1={name:"support",proto:{support:Support},static:{support:Support}};const Browser={isEdge:!!win.navigator.userAgent.match(/Edge/g),isSafari:function(){const e=win.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent)};var Browser$1={name:"browser",proto:{browser:Browser},static:{browser:Browser}},Resize={name:"resize",create(){const e=this;Utils.extend(e,{resize:{resizeHandler(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init(){win.addEventListener("resize",this.resize.resizeHandler),win.addEventListener("orientationchange",this.resize.orientationChangeHandler)},destroy(){win.removeEventListener("resize",this.resize.resizeHandler),win.removeEventListener("orientationchange",this.resize.orientationChangeHandler)}}};const Observer={func:win.MutationObserver||win.WebkitMutationObserver,attach(e,t={}){const s=this,i=new(0,Observer.func)(e=>{if(1===e.length)return void s.emit("observerUpdate",e[0]);const t=function(){s.emit("observerUpdate",e[0])};win.requestAnimationFrame?win.requestAnimationFrame(t):win.setTimeout(t,0)});i.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),s.observer.observers.push(i)},init(){const e=this;if(Support.observer&&e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let s=0;s<t.length;s+=1)e.observer.attach(t[s])}e.observer.attach(e.$el[0],{childList:e.params.observeSlideChildren}),e.observer.attach(e.$wrapperEl[0],{attributes:!1})}},destroy(){this.observer.observers.forEach(e=>{e.disconnect()}),this.observer.observers=[]}};var Observer$1={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create(){Utils.extend(this,{observer:{init:Observer.init.bind(this),attach:Observer.attach.bind(this),destroy:Observer.destroy.bind(this),observers:[]}})},on:{init(){this.observer.init()},destroy(){this.observer.destroy()}}};const Virtual={update(e){const t=this,{slidesPerView:s,slidesPerGroup:i,centeredSlides:a}=t.params,{addSlidesBefore:n,addSlidesAfter:r}=t.params.virtual,{from:l,to:o,slides:d,slidesGrid:p,renderSlide:c,offset:h}=t.virtual;t.updateActiveIndex();const u=t.activeIndex||0;let m,f,g;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",a?(f=Math.floor(s/2)+i+n,g=Math.floor(s/2)+i+r):(f=s+(i-1)+n,g=i+r);const v=Math.max((u||0)-g,0),w=Math.min((u||0)+f,d.length-1),b=(t.slidesGrid[v]||0)-(t.slidesGrid[0]||0);function y(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(Utils.extend(t.virtual,{from:v,to:w,offset:b,slidesGrid:t.slidesGrid}),l===v&&o===w&&!e)return t.slidesGrid!==p&&b!==h&&t.slides.css(m,b+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:b,from:v,to:w,slides:function(){const e=[];for(let t=v;t<=w;t+=1)e.push(d[t]);return e}()}),void y();const x=[],S=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(let e=l;e<=o;e+=1)(e<v||e>w)&&t.$wrapperEl.find(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t<d.length;t+=1)t>=v&&t<=w&&(void 0===o||e?S.push(t):(t>o&&S.push(t),t<l&&x.push(t)));S.forEach(e=>{t.$wrapperEl.append(c(d[e],e))}),x.sort((e,t)=>t-e).forEach(e=>{t.$wrapperEl.prepend(c(d[e],e))}),t.$wrapperEl.children(".swiper-slide").css(m,b+"px"),y()},renderSlide(e,t){const s=this,i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];const a=i.renderSlide?$(i.renderSlide.call(s,e,t)):$(`<div class="${s.params.slideClass}" data-swiper-slide-index="${t}">${e}</div>`);return a.attr("data-swiper-slide-index")||a.attr("data-swiper-slide-index",t),i.cache&&(s.virtual.cache[t]=a),a},appendSlide(e){const t=this;if("object"==typeof e&&"length"in e)for(let s=0;s<e.length;s+=1)e[s]&&t.virtual.slides.push(e[s]);else t.virtual.slides.push(e);t.virtual.update(!0)},prependSlide(e){const t=this,s=t.activeIndex;let i=s+1,a=1;if(Array.isArray(e)){for(let s=0;s<e.length;s+=1)e[s]&&t.virtual.slides.unshift(e[s]);i=s+e.length,a=e.length}else t.virtual.slides.unshift(e);if(t.params.virtual.cache){const e=t.virtual.cache,s={};Object.keys(e).forEach(t=>{const i=e[t],n=i.attr("data-swiper-slide-index");n&&i.attr("data-swiper-slide-index",parseInt(n,10)+1),s[parseInt(t,10)+a]=i}),t.virtual.cache=s}t.virtual.update(!0),t.slideTo(i,0)},removeSlide(e){const t=this;if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)t.virtual.slides.splice(e[i],1),t.params.virtual.cache&&delete t.virtual.cache[e[i]],e[i]<s&&(s-=1),s=Math.max(s,0);else t.virtual.slides.splice(e,1),t.params.virtual.cache&&delete t.virtual.cache[e],e<s&&(s-=1),s=Math.max(s,0);t.virtual.update(!0),t.slideTo(s,0)},removeAllSlides(){const e=this;e.virtual.slides=[],e.params.virtual.cache&&(e.virtual.cache={}),e.virtual.update(!0),e.slideTo(0,0)}};var Virtual$1={name:"virtual",params:{virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,addSlidesBefore:0,addSlidesAfter:0}},create(){Utils.extend(this,{virtual:{update:Virtual.update.bind(this),appendSlide:Virtual.appendSlide.bind(this),prependSlide:Virtual.prependSlide.bind(this),removeSlide:Virtual.removeSlide.bind(this),removeAllSlides:Virtual.removeAllSlides.bind(this),renderSlide:Virtual.renderSlide.bind(this),slides:this.params.virtual.slides,cache:{}}})},on:{beforeInit(){const e=this;if(!e.params.virtual.enabled)return;e.classNames.push(e.params.containerModifierClass+"virtual");const t={watchSlidesProgress:!0};Utils.extend(e.params,t),Utils.extend(e.originalParams,t),e.params.initialSlide||e.virtual.update()},setTranslate(){this.params.virtual.enabled&&this.virtual.update()}}};const Keyboard={handle(e){const t=this,{rtlTranslate:s}=t;let i=e;i.originalEvent&&(i=i.originalEvent);const a=i.keyCode||i.charCode;if(!t.allowSlideNext&&(t.isHorizontal()&&39===a||t.isVertical()&&40===a||34===a))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&37===a||t.isVertical()&&38===a||33===a))return!1;if(!(i.shiftKey||i.altKey||i.ctrlKey||i.metaKey||doc.activeElement&&doc.activeElement.nodeName&&("input"===doc.activeElement.nodeName.toLowerCase()||"textarea"===doc.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(33===a||34===a||37===a||39===a||38===a||40===a)){let e=!1;if(t.$el.parents("."+t.params.slideClass).length>0&&0===t.$el.parents("."+t.params.slideActiveClass).length)return;const i=win.innerWidth,a=win.innerHeight,n=t.$el.offset();s&&(n.left-=t.$el[0].scrollLeft);const r=[[n.left,n.top],[n.left+t.width,n.top],[n.left,n.top+t.height],[n.left+t.width,n.top+t.height]];for(let t=0;t<r.length;t+=1){const s=r[t];s[0]>=0&&s[0]<=i&&s[1]>=0&&s[1]<=a&&(e=!0)}if(!e)return}t.isHorizontal()?(33!==a&&34!==a&&37!==a&&39!==a||(i.preventDefault?i.preventDefault():i.returnValue=!1),(34!==a&&39!==a||s)&&(33!==a&&37!==a||!s)||t.slideNext(),(33!==a&&37!==a||s)&&(34!==a&&39!==a||!s)||t.slidePrev()):(33!==a&&34!==a&&38!==a&&40!==a||(i.preventDefault?i.preventDefault():i.returnValue=!1),34!==a&&40!==a||t.slideNext(),33!==a&&38!==a||t.slidePrev()),t.emit("keyPress",a)}},enable(){this.keyboard.enabled||($(doc).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable(){this.keyboard.enabled&&($(doc).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}};var Keyboard$1={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0}},create(){Utils.extend(this,{keyboard:{enabled:!1,enable:Keyboard.enable.bind(this),disable:Keyboard.disable.bind(this),handle:Keyboard.handle.bind(this)}})},on:{init(){const e=this;e.params.keyboard.enabled&&e.keyboard.enable()},destroy(){const e=this;e.keyboard.enabled&&e.keyboard.disable()}}};function isEventSupported(){let e="onwheel"in doc;if(!e){const t=doc.createElement("div");t.setAttribute("onwheel","return;"),e="function"==typeof t.onwheel}return!e&&doc.implementation&&doc.implementation.hasFeature&&!0!==doc.implementation.hasFeature("","")&&(e=doc.implementation.hasFeature("Events.wheel","3.0")),e}const Mousewheel={lastScrollTime:Utils.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:()=>win.navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":isEventSupported()?"wheel":"mousewheel",normalize(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}},handleMouseEnter(){this.mouseEntered=!0},handleMouseLeave(){this.mouseEntered=!1},handle(e){let t=e;const s=this,i=s.params.mousewheel;s.params.cssMode&&t.preventDefault();let a=s.$el;if("container"!==s.params.mousewheel.eventsTarged&&(a=$(s.params.mousewheel.eventsTarged)),!s.mouseEntered&&!a[0].contains(t.target)&&!i.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);let n=0;const r=s.rtlTranslate?-1:1,l=Mousewheel.normalize(t);if(i.forceToAxis)if(s.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;n=l.pixelX*r}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;n=l.pixelY}else n=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*r:-l.pixelY;if(0===n)return!0;if(i.invert&&(n=-n),s.params.freeMode){const e={time:Utils.now(),delta:Math.abs(n),direction:Math.sign(n)},{lastEventBeforeSnap:a}=s.mousewheel,r=a&&e.time<a.time+500&&e.delta<=a.delta&&e.direction===a.direction;if(!r){s.mousewheel.lastEventBeforeSnap=void 0,s.params.loop&&s.loopFix();let a=s.getTranslate()+n*i.sensitivity;const l=s.isBeginning,o=s.isEnd;if(a>=s.minTranslate()&&(a=s.minTranslate()),a<=s.maxTranslate()&&(a=s.maxTranslate()),s.setTransition(0),s.setTranslate(a),s.updateProgress(),s.updateActiveIndex(),s.updateSlidesClasses(),(!l&&s.isBeginning||!o&&s.isEnd)&&s.updateSlidesClasses(),s.params.freeModeSticky){clearTimeout(s.mousewheel.timeout),s.mousewheel.timeout=void 0;const t=s.mousewheel.recentWheelEvents;t.length>=15&&t.shift();const i=t.length?t[t.length-1]:void 0,a=t[0];if(t.push(e),i&&(e.delta>i.delta||e.direction!==i.direction))t.splice(0);else if(t.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const i=n>0?.8:.2;s.mousewheel.lastEventBeforeSnap=e,t.splice(0),s.mousewheel.timeout=Utils.nextTick(()=>{s.slideToClosest(s.params.speed,!0,void 0,i)},0)}s.mousewheel.timeout||(s.mousewheel.timeout=Utils.nextTick(()=>{s.mousewheel.lastEventBeforeSnap=e,t.splice(0),s.slideToClosest(s.params.speed,!0,void 0,.5)},500))}if(r||s.emit("scroll",t),s.params.autoplay&&s.params.autoplayDisableOnInteraction&&s.autoplay.stop(),a===s.minTranslate()||a===s.maxTranslate())return!0}}else{const t={time:Utils.now(),delta:Math.abs(n),direction:Math.sign(n),raw:e},i=s.mousewheel.recentWheelEvents;i.length>=2&&i.shift();const a=i.length?i[i.length-1]:void 0;if(i.push(t),a?(t.direction!==a.direction||t.delta>a.delta||t.time>a.time+150)&&s.mousewheel.animateSlider(t):s.mousewheel.animateSlider(t),s.mousewheel.releaseScroll(t))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider(e){const t=this;return e.delta>=6&&Utils.now()-t.mousewheel.lastScrollTime<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),t.emit("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),t.emit("scroll",e.raw)),t.mousewheel.lastScrollTime=(new win.Date).getTime(),!1)},releaseScroll(e){const t=this,s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1},enable(){const e=this,t=Mousewheel.event();if(e.params.cssMode)return e.wrapperEl.removeEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(e.mousewheel.enabled)return!1;let s=e.$el;return"container"!==e.params.mousewheel.eventsTarged&&(s=$(e.params.mousewheel.eventsTarged)),s.on("mouseenter",e.mousewheel.handleMouseEnter),s.on("mouseleave",e.mousewheel.handleMouseLeave),s.on(t,e.mousewheel.handle),e.mousewheel.enabled=!0,!0},disable(){const e=this,t=Mousewheel.event();if(e.params.cssMode)return e.wrapperEl.addEventListener(t,e.mousewheel.handle),!0;if(!t)return!1;if(!e.mousewheel.enabled)return!1;let s=e.$el;return"container"!==e.params.mousewheel.eventsTarged&&(s=$(e.params.mousewheel.eventsTarged)),s.off(t,e.mousewheel.handle),e.mousewheel.enabled=!1,!0}};var Mousewheel$1={name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarged:"container"}},create(){Utils.extend(this,{mousewheel:{enabled:!1,enable:Mousewheel.enable.bind(this),disable:Mousewheel.disable.bind(this),handle:Mousewheel.handle.bind(this),handleMouseEnter:Mousewheel.handleMouseEnter.bind(this),handleMouseLeave:Mousewheel.handleMouseLeave.bind(this),animateSlider:Mousewheel.animateSlider.bind(this),releaseScroll:Mousewheel.releaseScroll.bind(this),lastScrollTime:Utils.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[]}})},on:{init(){const e=this;!e.params.mousewheel.enabled&&e.params.cssMode&&e.mousewheel.disable(),e.params.mousewheel.enabled&&e.mousewheel.enable()},destroy(){const e=this;e.params.cssMode&&e.mousewheel.enable(),e.mousewheel.enabled&&e.mousewheel.disable()}}};const Navigation={update(){const e=this,t=e.params.navigation;if(e.params.loop)return;const{$nextEl:s,$prevEl:i}=e.navigation;i&&i.length>0&&(e.isBeginning?i.addClass(t.disabledClass):i.removeClass(t.disabledClass),i[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](t.lockClass)),s&&s.length>0&&(e.isEnd?s.addClass(t.disabledClass):s.removeClass(t.disabledClass),s[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](t.lockClass))},onPrevClick(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init(){const e=this,t=e.params.navigation;if(!t.nextEl&&!t.prevEl)return;let s,i;t.nextEl&&(s=$(t.nextEl),e.params.uniqueNavElements&&"string"==typeof t.nextEl&&s.length>1&&1===e.$el.find(t.nextEl).length&&(s=e.$el.find(t.nextEl))),t.prevEl&&(i=$(t.prevEl),e.params.uniqueNavElements&&"string"==typeof t.prevEl&&i.length>1&&1===e.$el.find(t.prevEl).length&&(i=e.$el.find(t.prevEl))),s&&s.length>0&&s.on("click",e.navigation.onNextClick),i&&i.length>0&&i.on("click",e.navigation.onPrevClick),Utils.extend(e.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:i,prevEl:i&&i[0]})},destroy(){const e=this,{$nextEl:t,$prevEl:s}=e.navigation;t&&t.length&&(t.off("click",e.navigation.onNextClick),t.removeClass(e.params.navigation.disabledClass)),s&&s.length&&(s.off("click",e.navigation.onPrevClick),s.removeClass(e.params.navigation.disabledClass))}};var Navigation$1={name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create(){Utils.extend(this,{navigation:{init:Navigation.init.bind(this),update:Navigation.update.bind(this),destroy:Navigation.destroy.bind(this),onNextClick:Navigation.onNextClick.bind(this),onPrevClick:Navigation.onPrevClick.bind(this)}})},on:{init(){this.navigation.init(),this.navigation.update()},toEdge(){this.navigation.update()},fromEdge(){this.navigation.update()},destroy(){this.navigation.destroy()},click(e){const t=this,{$nextEl:s,$prevEl:i}=t.navigation;if(t.params.navigation.hideOnClick&&!$(e.target).is(i)&&!$(e.target).is(s)){let e;s?e=s.hasClass(t.params.navigation.hiddenClass):i&&(e=i.hasClass(t.params.navigation.hiddenClass)),!0===e?t.emit("navigationShow",t):t.emit("navigationHide",t),s&&s.toggleClass(t.params.navigation.hiddenClass),i&&i.toggleClass(t.params.navigation.hiddenClass)}}}};const Pagination={update(){const e=this,t=e.rtl,s=e.params.pagination;if(!s.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length)return;const i=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,a=e.pagination.$el;let n;const r=e.params.loop?Math.ceil((i-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(n=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),n>i-1-2*e.loopedSlides&&(n-=i-2*e.loopedSlides),n>r-1&&(n-=r),n<0&&"bullets"!==e.params.paginationType&&(n=r+n)):n=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const i=e.pagination.bullets;let r,l,o;if(s.dynamicBullets&&(e.pagination.bulletSize=i.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(e.isHorizontal()?"width":"height",e.pagination.bulletSize*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==e.previousIndex&&(e.pagination.dynamicBulletIndex+=n-e.previousIndex,e.pagination.dynamicBulletIndex>s.dynamicMainBullets-1?e.pagination.dynamicBulletIndex=s.dynamicMainBullets-1:e.pagination.dynamicBulletIndex<0&&(e.pagination.dynamicBulletIndex=0)),r=n-e.pagination.dynamicBulletIndex,l=r+(Math.min(i.length,s.dynamicMainBullets)-1),o=(l+r)/2),i.removeClass(`${s.bulletActiveClass} ${s.bulletActiveClass}-next ${s.bulletActiveClass}-next-next ${s.bulletActiveClass}-prev ${s.bulletActiveClass}-prev-prev ${s.bulletActiveClass}-main`),a.length>1)i.each((e,t)=>{const i=$(t),a=i.index();a===n&&i.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=r&&a<=l&&i.addClass(s.bulletActiveClass+"-main"),a===r&&i.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),a===l&&i.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next"))});else{const t=i.eq(n),a=t.index();if(t.addClass(s.bulletActiveClass),s.dynamicBullets){const t=i.eq(r),n=i.eq(l);for(let e=r;e<=l;e+=1)i.eq(e).addClass(s.bulletActiveClass+"-main");if(e.params.loop)if(a>=i.length-s.dynamicMainBullets){for(let e=s.dynamicMainBullets;e>=0;e-=1)i.eq(i.length-e).addClass(s.bulletActiveClass+"-main");i.eq(i.length-s.dynamicMainBullets-1).addClass(s.bulletActiveClass+"-prev")}else t.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),n.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next");else t.prev().addClass(s.bulletActiveClass+"-prev").prev().addClass(s.bulletActiveClass+"-prev-prev"),n.next().addClass(s.bulletActiveClass+"-next").next().addClass(s.bulletActiveClass+"-next-next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),n=(e.pagination.bulletSize*a-e.pagination.bulletSize)/2-o*e.pagination.bulletSize,r=t?"right":"left";i.css(e.isHorizontal()?r:"top",n+"px")}}if("fraction"===s.type&&(a.find("."+s.currentClass).text(s.formatFractionCurrent(n+1)),a.find("."+s.totalClass).text(s.formatFractionTotal(r))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const i=(n+1)/r;let l=1,o=1;"horizontal"===t?l=i:o=i,a.find("."+s.progressbarFillClass).transform(`translate3d(0,0,0) scaleX(${l}) scaleY(${o})`).transition(e.params.speed)}"custom"===s.type&&s.renderCustom?(a.html(s.renderCustom(e,n+1,r)),e.emit("paginationRender",e,a[0])):e.emit("paginationUpdate",e,a[0]),a[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](s.lockClass)},render(){const e=this,t=e.params.pagination;if(!t.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length)return;const s=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,i=e.pagination.$el;let a="";if("bullets"===t.type){const n=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;for(let s=0;s<n;s+=1)t.renderBullet?a+=t.renderBullet.call(e,s,t.bulletClass):a+=`<${t.bulletElement} class="${t.bulletClass}"></${t.bulletElement}>`;i.html(a),e.pagination.bullets=i.find("."+t.bulletClass)}"fraction"===t.type&&(a=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):`<span class="${t.currentClass}"></span> / <span class="${t.totalClass}"></span>`,i.html(a)),"progressbar"===t.type&&(a=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):`<span class="${t.progressbarFillClass}"></span>`,i.html(a)),"custom"!==t.type&&e.emit("paginationRender",e.pagination.$el[0])},init(){const e=this,t=e.params.pagination;if(!t.el)return;let s=$(t.el);0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&s.length>1&&1===e.$el.find(t.el).length&&(s=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&s.addClass(t.clickableClass),s.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(s.addClass(`${t.modifierClass}${t.type}-dynamic`),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.addClass(t.progressbarOppositeClass),t.clickable&&s.on("click","."+t.bulletClass,(function(t){t.preventDefault();let s=$(this).index()*e.params.slidesPerGroup;e.params.loop&&(s+=e.loopedSlides),e.slideTo(s)})),Utils.extend(e.pagination,{$el:s,el:s[0]}))},destroy(){const e=this.params.pagination;if(!e.el||!this.pagination.el||!this.pagination.$el||0===this.pagination.$el.length)return;const t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}};var Pagination$1={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:e=>e,formatFractionTotal:e=>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(){Utils.extend(this,{pagination:{init:Pagination.init.bind(this),render:Pagination.render.bind(this),update:Pagination.update.bind(this),destroy:Pagination.destroy.bind(this),dynamicBulletIndex:0}})},on:{init(){this.pagination.init(),this.pagination.render(),this.pagination.update()},activeIndexChange(){const e=this;(e.params.loop||void 0===e.snapIndex)&&e.pagination.update()},snapIndexChange(){const e=this;e.params.loop||e.pagination.update()},slidesLengthChange(){const e=this;e.params.loop&&(e.pagination.render(),e.pagination.update())},snapGridLengthChange(){const e=this;e.params.loop||(e.pagination.render(),e.pagination.update())},destroy(){this.pagination.destroy()},click(e){const t=this;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&t.pagination.$el.length>0&&!$(e.target).hasClass(t.params.pagination.bulletClass)){!0===t.pagination.$el.hasClass(t.params.pagination.hiddenClass)?t.emit("paginationShow",t):t.emit("paginationHide",t),t.pagination.$el.toggleClass(t.params.pagination.hiddenClass)}}}};const Scrollbar={setTranslate(){const e=this;if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s,progress:i}=e,{dragSize:a,trackSize:n,$dragEl:r,$el:l}=t,o=e.params.scrollbar;let d=a,p=(n-a)*i;s?(p=-p,p>0?(d=a-p,p=0):-p+a>n&&(d=n+p)):p<0?(d=a+p,p=0):p+a>n&&(d=n-p),e.isHorizontal()?(r.transform(`translate3d(${p}px, 0, 0)`),r[0].style.width=d+"px"):(r.transform(`translate3d(0px, ${p}px, 0)`),r[0].style.height=d+"px"),o.hide&&(clearTimeout(e.scrollbar.timeout),l[0].style.opacity=1,e.scrollbar.timeout=setTimeout(()=>{l[0].style.opacity=0,l.transition(400)},1e3))},setTransition(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize(){const e=this;if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{$dragEl:s,$el:i}=t;s[0].style.width="",s[0].style.height="";const a=e.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,n=e.size/e.virtualSize,r=n*(a/e.size);let l;l="auto"===e.params.scrollbar.dragSize?a*n:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s[0].style.width=l+"px":s[0].style.height=l+"px",i[0].style.display=n>=1?"none":"",e.params.scrollbar.hide&&(i[0].style.opacity=0),Utils.extend(t,{trackSize:a,divider:n,moveDivider:r,dragSize:l}),t.$el[e.params.watchOverflow&&e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)},getPointerPosition(e){return this.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition(e){const{scrollbar:t,rtlTranslate:s}=this,{$el:i,dragSize:a,trackSize:n,dragStartPos:r}=t;let l;l=(t.getPointerPosition(e)-i.offset()[this.isHorizontal()?"left":"top"]-(null!==r?r:a/2))/(n-a),l=Math.max(Math.min(l,1),0),s&&(l=1-l);const o=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*l;this.updateProgress(o),this.setTranslate(o),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart(e){const t=this,s=t.params.scrollbar,{scrollbar:i,$wrapperEl:a}=t,{$el:n,$dragEl:r}=i;t.scrollbar.isTouched=!0,t.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(t.scrollbar.dragTimeout),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),t.emit("scrollbarDragStart",e)},onDragMove(e){const{scrollbar:t,$wrapperEl:s}=this,{$el:i,$dragEl:a}=t;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),s.transition(0),i.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd(e){const t=this,s=t.params.scrollbar,{scrollbar:i,$wrapperEl:a}=t,{$el:n}=i;t.scrollbar.isTouched&&(t.scrollbar.isTouched=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),a.transition("")),s.hide&&(clearTimeout(t.scrollbar.dragTimeout),t.scrollbar.dragTimeout=Utils.nextTick(()=>{n.css("opacity",0),n.transition(400)},1e3)),t.emit("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())},enableDraggable(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,touchEventsTouch:s,touchEventsDesktop:i,params:a}=e,n=t.$el[0],r=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};Support.touch?(n.addEventListener(s.start,e.scrollbar.onDragStart,r),n.addEventListener(s.move,e.scrollbar.onDragMove,r),n.addEventListener(s.end,e.scrollbar.onDragEnd,l)):(n.addEventListener(i.start,e.scrollbar.onDragStart,r),doc.addEventListener(i.move,e.scrollbar.onDragMove,r),doc.addEventListener(i.end,e.scrollbar.onDragEnd,l))},disableDraggable(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,touchEventsTouch:s,touchEventsDesktop:i,params:a}=e,n=t.$el[0],r=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},l=!(!Support.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};Support.touch?(n.removeEventListener(s.start,e.scrollbar.onDragStart,r),n.removeEventListener(s.move,e.scrollbar.onDragMove,r),n.removeEventListener(s.end,e.scrollbar.onDragEnd,l)):(n.removeEventListener(i.start,e.scrollbar.onDragStart,r),doc.removeEventListener(i.move,e.scrollbar.onDragMove,r),doc.removeEventListener(i.end,e.scrollbar.onDragEnd,l))},init(){const e=this;if(!e.params.scrollbar.el)return;const{scrollbar:t,$el:s}=e,i=e.params.scrollbar;let a=$(i.el);e.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.find(i.el).length&&(a=s.find(i.el));let n=a.find("."+e.params.scrollbar.dragClass);0===n.length&&(n=$(`<div class="${e.params.scrollbar.dragClass}"></div>`),a.append(n)),Utils.extend(t,{$el:a,el:a[0],$dragEl:n,dragEl:n[0]}),i.draggable&&t.enableDraggable()},destroy(){this.scrollbar.disableDraggable()}};var Scrollbar$1={name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create(){Utils.extend(this,{scrollbar:{init:Scrollbar.init.bind(this),destroy:Scrollbar.destroy.bind(this),updateSize:Scrollbar.updateSize.bind(this),setTranslate:Scrollbar.setTranslate.bind(this),setTransition:Scrollbar.setTransition.bind(this),enableDraggable:Scrollbar.enableDraggable.bind(this),disableDraggable:Scrollbar.disableDraggable.bind(this),setDragPosition:Scrollbar.setDragPosition.bind(this),getPointerPosition:Scrollbar.getPointerPosition.bind(this),onDragStart:Scrollbar.onDragStart.bind(this),onDragMove:Scrollbar.onDragMove.bind(this),onDragEnd:Scrollbar.onDragEnd.bind(this),isTouched:!1,timeout:null,dragTimeout:null}})},on:{init(){this.scrollbar.init(),this.scrollbar.updateSize(),this.scrollbar.setTranslate()},update(){this.scrollbar.updateSize()},resize(){this.scrollbar.updateSize()},observerUpdate(){this.scrollbar.updateSize()},setTranslate(){this.scrollbar.setTranslate()},setTransition(e){this.scrollbar.setTransition(e)},destroy(){this.scrollbar.destroy()}}};const Parallax={setTransform(e,t){const{rtl:s}=this,i=$(e),a=s?-1:1,n=i.attr("data-swiper-parallax")||"0";let r=i.attr("data-swiper-parallax-x"),l=i.attr("data-swiper-parallax-y");const o=i.attr("data-swiper-parallax-scale"),d=i.attr("data-swiper-parallax-opacity");if(r||l?(r=r||"0",l=l||"0"):this.isHorizontal()?(r=n,l="0"):(l=n,r="0"),r=r.indexOf("%")>=0?parseInt(r,10)*t*a+"%":r*t*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=d){const e=d-(d-1)*(1-Math.abs(t));i[0].style.opacity=e}if(null==o)i.transform(`translate3d(${r}, ${l}, 0px)`);else{const e=o-(o-1)*(1-Math.abs(t));i.transform(`translate3d(${r}, ${l}, 0px) scale(${e})`)}},setTranslate(){const e=this,{$el:t,slides:s,progress:i,snapGrid:a}=e;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{e.parallax.setTransform(s,i)}),s.each((t,s)=>{let n=s.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(t/2)-i*(a.length-1)),n=Math.min(Math.max(n,-1),1),$(s).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{e.parallax.setTransform(s,n)})})},setTransition(e=this.params.speed){const{$el:t}=this;t.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t,s)=>{const i=$(s);let a=parseInt(i.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),i.transition(a)})}};var Parallax$1={name:"parallax",params:{parallax:{enabled:!1}},create(){Utils.extend(this,{parallax:{setTransform:Parallax.setTransform.bind(this),setTranslate:Parallax.setTranslate.bind(this),setTransition:Parallax.setTransition.bind(this)}})},on:{beforeInit(){this.params.parallax.enabled&&(this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},init(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTranslate(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTransition(e){this.params.parallax.enabled&&this.parallax.setTransition(e)}}};const Zoom={getDistanceBetweenTouches(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,i=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt((i-t)**2+(a-s)**2)},onGestureStart(e){const t=this,s=t.params.zoom,i=t.zoom,{gesture:a}=i;if(i.fakeGestureTouched=!1,i.fakeGestureMoved=!1,!Support.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;i.fakeGestureTouched=!0,a.scaleStart=Zoom.getDistanceBetweenTouches(e)}a.$slideEl&&a.$slideEl.length||(a.$slideEl=$(e.target).closest("."+t.params.slideClass),0===a.$slideEl.length&&(a.$slideEl=t.slides.eq(t.activeIndex)),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+s.containerClass),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||s.maxRatio,0!==a.$imageWrapEl.length)?(a.$imageEl&&a.$imageEl.transition(0),t.zoom.isScaling=!0):a.$imageEl=void 0},onGestureChange(e){const t=this.params.zoom,s=this.zoom,{gesture:i}=s;if(!Support.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;s.fakeGestureMoved=!0,i.scaleMove=Zoom.getDistanceBetweenTouches(e)}i.$imageEl&&0!==i.$imageEl.length&&(s.scale=Support.gestures?e.scale*s.currentScale:i.scaleMove/i.scaleStart*s.currentScale,s.scale>i.maxRatio&&(s.scale=i.maxRatio-1+(s.scale-i.maxRatio+1)**.5),s.scale<t.minRatio&&(s.scale=t.minRatio+1-(t.minRatio-s.scale+1)**.5),i.$imageEl.transform(`translate3d(0,0,0) scale(${s.scale})`))},onGestureEnd(e){const t=this.params.zoom,s=this.zoom,{gesture:i}=s;if(!Support.gestures){if(!s.fakeGestureTouched||!s.fakeGestureMoved)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!Device.android)return;s.fakeGestureTouched=!1,s.fakeGestureMoved=!1}i.$imageEl&&0!==i.$imageEl.length&&(s.scale=Math.max(Math.min(s.scale,i.maxRatio),t.minRatio),i.$imageEl.transition(this.params.speed).transform(`translate3d(0,0,0) scale(${s.scale})`),s.currentScale=s.scale,s.isScaling=!1,1===s.scale&&(i.$slideEl=void 0))},onTouchStart(e){const t=this.zoom,{gesture:s,image:i}=t;s.$imageEl&&0!==s.$imageEl.length&&(i.isTouched||(Device.android&&e.cancelable&&e.preventDefault(),i.isTouched=!0,i.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,i.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))},onTouchMove(e){const t=this,s=t.zoom,{gesture:i,image:a,velocity:n}=s;if(!i.$imageEl||0===i.$imageEl.length)return;if(t.allowClick=!1,!a.isTouched||!i.$slideEl)return;a.isMoved||(a.width=i.$imageEl[0].offsetWidth,a.height=i.$imageEl[0].offsetHeight,a.startX=Utils.getTranslate(i.$imageWrapEl[0],"x")||0,a.startY=Utils.getTranslate(i.$imageWrapEl[0],"y")||0,i.slideWidth=i.$slideEl[0].offsetWidth,i.slideHeight=i.$slideEl[0].offsetHeight,i.$imageWrapEl.transition(0),t.rtl&&(a.startX=-a.startX,a.startY=-a.startY));const r=a.width*s.scale,l=a.height*s.scale;if(!(r<i.slideWidth&&l<i.slideHeight)){if(a.minX=Math.min(i.slideWidth/2-r/2,0),a.maxX=-a.minX,a.minY=Math.min(i.slideHeight/2-l/2,0),a.maxY=-a.minY,a.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,a.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!a.isMoved&&!s.isScaling){if(t.isHorizontal()&&(Math.floor(a.minX)===Math.floor(a.startX)&&a.touchesCurrent.x<a.touchesStart.x||Math.floor(a.maxX)===Math.floor(a.startX)&&a.touchesCurrent.x>a.touchesStart.x))return void(a.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(a.minY)===Math.floor(a.startY)&&a.touchesCurrent.y<a.touchesStart.y||Math.floor(a.maxY)===Math.floor(a.startY)&&a.touchesCurrent.y>a.touchesStart.y))return void(a.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),a.isMoved=!0,a.currentX=a.touchesCurrent.x-a.touchesStart.x+a.startX,a.currentY=a.touchesCurrent.y-a.touchesStart.y+a.startY,a.currentX<a.minX&&(a.currentX=a.minX+1-(a.minX-a.currentX+1)**.8),a.currentX>a.maxX&&(a.currentX=a.maxX-1+(a.currentX-a.maxX+1)**.8),a.currentY<a.minY&&(a.currentY=a.minY+1-(a.minY-a.currentY+1)**.8),a.currentY>a.maxY&&(a.currentY=a.maxY-1+(a.currentY-a.maxY+1)**.8),n.prevPositionX||(n.prevPositionX=a.touchesCurrent.x),n.prevPositionY||(n.prevPositionY=a.touchesCurrent.y),n.prevTime||(n.prevTime=Date.now()),n.x=(a.touchesCurrent.x-n.prevPositionX)/(Date.now()-n.prevTime)/2,n.y=(a.touchesCurrent.y-n.prevPositionY)/(Date.now()-n.prevTime)/2,Math.abs(a.touchesCurrent.x-n.prevPositionX)<2&&(n.x=0),Math.abs(a.touchesCurrent.y-n.prevPositionY)<2&&(n.y=0),n.prevPositionX=a.touchesCurrent.x,n.prevPositionY=a.touchesCurrent.y,n.prevTime=Date.now(),i.$imageWrapEl.transform(`translate3d(${a.currentX}px, ${a.currentY}px,0)`)}},onTouchEnd(){const e=this.zoom,{gesture:t,image:s,velocity:i}=e;if(!t.$imageEl||0===t.$imageEl.length)return;if(!s.isTouched||!s.isMoved)return s.isTouched=!1,void(s.isMoved=!1);s.isTouched=!1,s.isMoved=!1;let a=300,n=300;const r=i.x*a,l=s.currentX+r,o=i.y*n,d=s.currentY+o;0!==i.x&&(a=Math.abs((l-s.currentX)/i.x)),0!==i.y&&(n=Math.abs((d-s.currentY)/i.y));const p=Math.max(a,n);s.currentX=l,s.currentY=d;const c=s.width*e.scale,h=s.height*e.scale;s.minX=Math.min(t.slideWidth/2-c/2,0),s.maxX=-s.minX,s.minY=Math.min(t.slideHeight/2-h/2,0),s.maxY=-s.minY,s.currentX=Math.max(Math.min(s.currentX,s.maxX),s.minX),s.currentY=Math.max(Math.min(s.currentY,s.maxY),s.minY),t.$imageWrapEl.transition(p).transform(`translate3d(${s.currentX}px, ${s.currentY}px,0)`)},onTransitionEnd(){const e=this.zoom,{gesture:t}=e;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&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(e){const t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in(e){const t=this,s=t.zoom,i=t.params.zoom,{gesture:a,image:n}=s;if(a.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?a.$slideEl=t.$wrapperEl.children("."+t.params.slideActiveClass):a.$slideEl=t.slides.eq(t.activeIndex),a.$imageEl=a.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),a.$imageWrapEl=a.$imageEl.parent("."+i.containerClass)),!a.$imageEl||0===a.$imageEl.length)return;let r,l,o,d,p,c,h,u,m,f,g,v,w,b,y,x,S,T;a.$slideEl.addClass(""+i.zoomedSlideClass),void 0===n.touchesStart.x&&e?(r="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,l="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(r=n.touchesStart.x,l=n.touchesStart.y),s.scale=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,s.currentScale=a.$imageWrapEl.attr("data-swiper-zoom")||i.maxRatio,e?(S=a.$slideEl[0].offsetWidth,T=a.$slideEl[0].offsetHeight,o=a.$slideEl.offset().left,d=a.$slideEl.offset().top,p=o+S/2-r,c=d+T/2-l,m=a.$imageEl[0].offsetWidth,f=a.$imageEl[0].offsetHeight,g=m*s.scale,v=f*s.scale,w=Math.min(S/2-g/2,0),b=Math.min(T/2-v/2,0),y=-w,x=-b,h=p*s.scale,u=c*s.scale,h<w&&(h=w),h>y&&(h=y),u<b&&(u=b),u>x&&(u=x)):(h=0,u=0),a.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${u}px,0)`),a.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)},out(){const e=this,t=e.zoom,s=e.params.zoom,{gesture:i}=t;i.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?i.$slideEl=e.$wrapperEl.children("."+e.params.slideActiveClass):i.$slideEl=e.slides.eq(e.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+s.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(t.scale=1,t.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(""+s.zoomedSlideClass),i.$slideEl=void 0)},enable(){const e=this,t=e.zoom;if(t.enabled)return;t.enabled=!0;const s=!("touchstart"!==e.touchEvents.start||!Support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},i=!Support.passiveListener||{passive:!1,capture:!0},a="."+e.params.slideClass;Support.gestures?(e.$wrapperEl.on("gesturestart",a,t.onGestureStart,s),e.$wrapperEl.on("gesturechange",a,t.onGestureChange,s),e.$wrapperEl.on("gestureend",a,t.onGestureEnd,s)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,a,t.onGestureStart,s),e.$wrapperEl.on(e.touchEvents.move,a,t.onGestureChange,i),e.$wrapperEl.on(e.touchEvents.end,a,t.onGestureEnd,s),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,a,t.onGestureEnd,s)),e.$wrapperEl.on(e.touchEvents.move,"."+e.params.zoom.containerClass,t.onTouchMove,i)},disable(){const e=this,t=e.zoom;if(!t.enabled)return;e.zoom.enabled=!1;const s=!("touchstart"!==e.touchEvents.start||!Support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},i=!Support.passiveListener||{passive:!1,capture:!0},a="."+e.params.slideClass;Support.gestures?(e.$wrapperEl.off("gesturestart",a,t.onGestureStart,s),e.$wrapperEl.off("gesturechange",a,t.onGestureChange,s),e.$wrapperEl.off("gestureend",a,t.onGestureEnd,s)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,a,t.onGestureStart,s),e.$wrapperEl.off(e.touchEvents.move,a,t.onGestureChange,i),e.$wrapperEl.off(e.touchEvents.end,a,t.onGestureEnd,s),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,a,t.onGestureEnd,s)),e.$wrapperEl.off(e.touchEvents.move,"."+e.params.zoom.containerClass,t.onTouchMove,i)}};var Zoom$1={name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create(){const e=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}};"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(s=>{t[s]=Zoom[s].bind(e)}),Utils.extend(e,{zoom:t});let s=1;Object.defineProperty(e.zoom,"scale",{get:()=>s,set(t){if(s!==t){const s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,i=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,i)}s=t}})},on:{init(){const e=this;e.params.zoom.enabled&&e.zoom.enable()},destroy(){this.zoom.disable()},touchStart(e){this.zoom.enabled&&this.zoom.onTouchStart(e)},touchEnd(e){this.zoom.enabled&&this.zoom.onTouchEnd(e)},doubleTap(e){const t=this;t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&t.zoom.toggle(e)},transitionEnd(){const e=this;e.zoom.enabled&&e.params.zoom.enabled&&e.zoom.onTransitionEnd()},slideChange(){const e=this;e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&e.zoom.onTransitionEnd()}}};const Lazy={loadInSlide(e,t=!0){const s=this,i=s.params.lazy;if(void 0===e)return;if(0===s.slides.length)return;const a=s.virtual&&s.params.virtual.enabled?s.$wrapperEl.children(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`):s.slides.eq(e);let n=a.find(`.${i.elementClass}:not(.${i.loadedClass}):not(.${i.loadingClass})`);!a.hasClass(i.elementClass)||a.hasClass(i.loadedClass)||a.hasClass(i.loadingClass)||(n=n.add(a[0])),0!==n.length&&n.each((e,n)=>{const r=$(n);r.addClass(i.loadingClass);const l=r.attr("data-background"),o=r.attr("data-src"),d=r.attr("data-srcset"),p=r.attr("data-sizes"),c=r.parent("picture");s.loadImage(r[0],o||l,d,p,!1,()=>{if(null!=s&&s&&(!s||s.params)&&!s.destroyed){if(l?(r.css("background-image",`url("${l}")`),r.removeAttr("data-background")):(d&&(r.attr("srcset",d),r.removeAttr("data-srcset")),p&&(r.attr("sizes",p),r.removeAttr("data-sizes")),c.length&&c.children("source").each((e,t)=>{const s=$(t);s.attr("data-srcset")&&(s.attr("srcset",s.attr("data-srcset")),s.removeAttr("data-srcset"))}),o&&(r.attr("src",o),r.removeAttr("data-src"))),r.addClass(i.loadedClass).removeClass(i.loadingClass),a.find("."+i.preloaderClass).remove(),s.params.loop&&t){const e=a.attr("data-swiper-slide-index");if(a.hasClass(s.params.slideDuplicateClass)){const t=s.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${s.params.slideDuplicateClass})`);s.lazy.loadInSlide(t.index(),!1)}else{const t=s.$wrapperEl.children(`.${s.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`);s.lazy.loadInSlide(t.index(),!1)}}s.emit("lazyImageReady",a[0],r[0]),s.params.autoHeight&&s.updateAutoHeight()}}),s.emit("lazyImageLoad",a[0],r[0])})},load(){const e=this,{$wrapperEl:t,params:s,slides:i,activeIndex:a}=e,n=e.virtual&&s.virtual.enabled,r=s.lazy;let l=s.slidesPerView;function o(e){if(n){if(t.children(`.${s.slideClass}[data-swiper-slide-index="${e}"]`).length)return!0}else if(i[e])return!0;return!1}function d(e){return n?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+s.slideVisibleClass).each((t,s)=>{const i=n?$(s).attr("data-swiper-slide-index"):$(s).index();e.lazy.loadInSlide(i)});else if(l>1)for(let t=a;t<a+l;t+=1)o(t)&&e.lazy.loadInSlide(t);else e.lazy.loadInSlide(a);if(r.loadPrevNext)if(l>1||r.loadPrevNextAmount&&r.loadPrevNextAmount>1){const t=r.loadPrevNextAmount,s=l,n=Math.min(a+s+Math.max(t,s),i.length),d=Math.max(a-Math.max(s,t),0);for(let t=a+l;t<n;t+=1)o(t)&&e.lazy.loadInSlide(t);for(let t=d;t<a;t+=1)o(t)&&e.lazy.loadInSlide(t)}else{const i=t.children("."+s.slideNextClass);i.length>0&&e.lazy.loadInSlide(d(i));const a=t.children("."+s.slidePrevClass);a.length>0&&e.lazy.loadInSlide(d(a))}}};var Lazy$1={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(){Utils.extend(this,{lazy:{initialImageLoaded:!1,load:Lazy.load.bind(this),loadInSlide:Lazy.loadInSlide.bind(this)}})},on:{beforeInit(){const e=this;e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)},init(){const e=this;e.params.lazy.enabled&&!e.params.loop&&0===e.params.initialSlide&&e.lazy.load()},scroll(){const e=this;e.params.freeMode&&!e.params.freeModeSticky&&e.lazy.load()},resize(){const e=this;e.params.lazy.enabled&&e.lazy.load()},scrollbarDragMove(){const e=this;e.params.lazy.enabled&&e.lazy.load()},transitionStart(){const e=this;e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!e.lazy.initialImageLoaded)&&e.lazy.load()},transitionEnd(){const e=this;e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&e.lazy.load()},slideChange(){const e=this;e.params.lazy.enabled&&e.params.cssMode&&e.lazy.load()}}};const Controller={LinearSpline:function(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this},getInterpolateFunction(e){const t=this;t.controller.spline||(t.controller.spline=t.params.loop?new Controller.LinearSpline(t.slidesGrid,e.slidesGrid):new Controller.LinearSpline(t.snapGrid,e.snapGrid))},setTranslate(e,t){const s=this,i=s.controller.control;let a,n;function r(e){const t=s.rtlTranslate?-s.translate:s.translate;"slide"===s.params.controller.by&&(s.controller.getInterpolateFunction(e),n=-s.controller.spline.interpolate(-t)),n&&"container"!==s.params.controller.by||(a=(e.maxTranslate()-e.minTranslate())/(s.maxTranslate()-s.minTranslate()),n=(t-s.minTranslate())*a+e.minTranslate()),s.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,s),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e<i.length;e+=1)i[e]!==t&&i[e]instanceof Swiper&&r(i[e]);else i instanceof Swiper&&t!==i&&r(i)},setTransition(e,t){const s=this,i=s.controller.control;let a;function n(t){t.setTransition(e,s),0!==e&&(t.transitionStart(),t.params.autoHeight&&Utils.nextTick(()=>{t.updateAutoHeight()}),t.$wrapperEl.transitionEnd(()=>{i&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())}))}if(Array.isArray(i))for(a=0;a<i.length;a+=1)i[a]!==t&&i[a]instanceof Swiper&&n(i[a]);else i instanceof Swiper&&t!==i&&n(i)}};var Controller$1={name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create(){Utils.extend(this,{controller:{control:this.params.controller.control,getInterpolateFunction:Controller.getInterpolateFunction.bind(this),setTranslate:Controller.setTranslate.bind(this),setTransition:Controller.setTransition.bind(this)}})},on:{update(){const e=this;e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},resize(){const e=this;e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},observerUpdate(){const e=this;e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)},setTranslate(e,t){this.controller.control&&this.controller.setTranslate(e,t)},setTransition(e,t){this.controller.control&&this.controller.setTransition(e,t)}}};const a11y={makeElFocusable:e=>(e.attr("tabIndex","0"),e),makeElNotFocusable:e=>(e.attr("tabIndex","-1"),e),addElRole:(e,t)=>(e.attr("role",t),e),addElLabel:(e,t)=>(e.attr("aria-label",t),e),disableEl:e=>(e.attr("aria-disabled",!0),e),enableEl:e=>(e.attr("aria-disabled",!1),e),onEnterKey(e){const t=this,s=t.params.a11y;if(13!==e.keyCode)return;const i=$(e.target);t.navigation&&t.navigation.$nextEl&&i.is(t.navigation.$nextEl)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?t.a11y.notify(s.lastSlideMessage):t.a11y.notify(s.nextSlideMessage)),t.navigation&&t.navigation.$prevEl&&i.is(t.navigation.$prevEl)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?t.a11y.notify(s.firstSlideMessage):t.a11y.notify(s.prevSlideMessage)),t.pagination&&i.is("."+t.params.pagination.bulletClass)&&i[0].click()},notify(e){const t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation(){const e=this;if(e.params.loop||!e.navigation)return;const{$nextEl:t,$prevEl:s}=e.navigation;s&&s.length>0&&(e.isBeginning?(e.a11y.disableEl(s),e.a11y.makeElNotFocusable(s)):(e.a11y.enableEl(s),e.a11y.makeElFocusable(s))),t&&t.length>0&&(e.isEnd?(e.a11y.disableEl(t),e.a11y.makeElNotFocusable(t)):(e.a11y.enableEl(t),e.a11y.makeElFocusable(t)))},updatePagination(){const e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((s,i)=>{const a=$(i);e.a11y.makeElFocusable(a),e.a11y.addElRole(a,"button"),e.a11y.addElLabel(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1))})},init(){const e=this;e.$el.append(e.a11y.liveRegion);const t=e.params.a11y;let s,i;e.navigation&&e.navigation.$nextEl&&(s=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(i=e.navigation.$prevEl),s&&(e.a11y.makeElFocusable(s),e.a11y.addElRole(s,"button"),e.a11y.addElLabel(s,t.nextSlideMessage),s.on("keydown",e.a11y.onEnterKey)),i&&(e.a11y.makeElFocusable(i),e.a11y.addElRole(i,"button"),e.a11y.addElLabel(i,t.prevSlideMessage),i.on("keydown",e.a11y.onEnterKey)),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.on("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)},destroy(){const e=this;let t,s;e.a11y.liveRegion&&e.a11y.liveRegion.length>0&&e.a11y.liveRegion.remove(),e.navigation&&e.navigation.$nextEl&&(t=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),t&&t.off("keydown",e.a11y.onEnterKey),s&&s.off("keydown",e.a11y.onEnterKey),e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.$el.off("keydown","."+e.params.pagination.bulletClass,e.a11y.onEnterKey)}};var A11y={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(){const e=this;Utils.extend(e,{a11y:{liveRegion:$(`<span class="${e.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`)}}),Object.keys(a11y).forEach(t=>{e.a11y[t]=a11y[t].bind(e)})},on:{init(){this.params.a11y.enabled&&(this.a11y.init(),this.a11y.updateNavigation())},toEdge(){this.params.a11y.enabled&&this.a11y.updateNavigation()},fromEdge(){this.params.a11y.enabled&&this.a11y.updateNavigation()},paginationUpdate(){this.params.a11y.enabled&&this.a11y.updatePagination()},destroy(){this.params.a11y.enabled&&this.a11y.destroy()}}};const History={init(){const e=this;if(!e.params.history)return;if(!win.history||!win.history.pushState)return e.params.history.enabled=!1,void(e.params.hashNavigation.enabled=!0);const t=e.history;t.initialized=!0,t.paths=History.getPathValues(),(t.paths.key||t.paths.value)&&(t.scrollToSlide(0,t.paths.value,e.params.runCallbacksOnInit),e.params.history.replaceState||win.addEventListener("popstate",e.history.setHistoryPopState))},destroy(){const e=this;e.params.history.replaceState||win.removeEventListener("popstate",e.history.setHistoryPopState)},setHistoryPopState(){this.history.paths=History.getPathValues(),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues(){const e=win.location.pathname.slice(1).split("/").filter(e=>""!==e),t=e.length;return{key:e[t-2],value:e[t-1]}},setHistory(e,t){if(!this.history.initialized||!this.params.history.enabled)return;const s=this.slides.eq(t);let i=History.slugify(s.attr("data-history"));win.location.pathname.includes(e)||(i=`${e}/${i}`);const a=win.history.state;a&&a.value===i||(this.params.history.replaceState?win.history.replaceState({value:i},null,i):win.history.pushState({value:i},null,i))},slugify:e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),scrollToSlide(e,t,s){const i=this;if(t)for(let a=0,n=i.slides.length;a<n;a+=1){const n=i.slides.eq(a);if(History.slugify(n.attr("data-history"))===t&&!n.hasClass(i.params.slideDuplicateClass)){const t=n.index();i.slideTo(t,e,s)}}else i.slideTo(0,e,s)}};var History$1={name:"history",params:{history:{enabled:!1,replaceState:!1,key:"slides"}},create(){Utils.extend(this,{history:{init:History.init.bind(this),setHistory:History.setHistory.bind(this),setHistoryPopState:History.setHistoryPopState.bind(this),scrollToSlide:History.scrollToSlide.bind(this),destroy:History.destroy.bind(this)}})},on:{init(){const e=this;e.params.history.enabled&&e.history.init()},destroy(){const e=this;e.params.history.enabled&&e.history.destroy()},transitionEnd(){const e=this;e.history.initialized&&e.history.setHistory(e.params.history.key,e.activeIndex)},slideChange(){const e=this;e.history.initialized&&e.params.cssMode&&e.history.setHistory(e.params.history.key,e.activeIndex)}}};const HashNavigation={onHashCange(){const e=this;e.emit("hashChange");const t=doc.location.hash.replace("#","");if(t!==e.slides.eq(e.activeIndex).attr("data-hash")){const s=e.$wrapperEl.children(`.${e.params.slideClass}[data-hash="${t}"]`).index();if(void 0===s)return;e.slideTo(s)}},setHash(){const e=this;if(e.hashNavigation.initialized&&e.params.hashNavigation.enabled)if(e.params.hashNavigation.replaceState&&win.history&&win.history.replaceState)win.history.replaceState(null,null,"#"+e.slides.eq(e.activeIndex).attr("data-hash")||""),e.emit("hashSet");else{const t=e.slides.eq(e.activeIndex),s=t.attr("data-hash")||t.attr("data-history");doc.location.hash=s||"",e.emit("hashSet")}},init(){const e=this;if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;e.hashNavigation.initialized=!0;const t=doc.location.hash.replace("#","");if(t){const s=0;for(let i=0,a=e.slides.length;i<a;i+=1){const a=e.slides.eq(i);if((a.attr("data-hash")||a.attr("data-history"))===t&&!a.hasClass(e.params.slideDuplicateClass)){const t=a.index();e.slideTo(t,s,e.params.runCallbacksOnInit,!0)}}}e.params.hashNavigation.watchState&&$(win).on("hashchange",e.hashNavigation.onHashCange)},destroy(){const e=this;e.params.hashNavigation.watchState&&$(win).off("hashchange",e.hashNavigation.onHashCange)}};var HashNavigation$1={name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create(){Utils.extend(this,{hashNavigation:{initialized:!1,init:HashNavigation.init.bind(this),destroy:HashNavigation.destroy.bind(this),setHash:HashNavigation.setHash.bind(this),onHashCange:HashNavigation.onHashCange.bind(this)}})},on:{init(){const e=this;e.params.hashNavigation.enabled&&e.hashNavigation.init()},destroy(){const e=this;e.params.hashNavigation.enabled&&e.hashNavigation.destroy()},transitionEnd(){const e=this;e.hashNavigation.initialized&&e.hashNavigation.setHash()},slideChange(){const e=this;e.hashNavigation.initialized&&e.params.cssMode&&e.hashNavigation.setHash()}}};const Autoplay={run(){const e=this,t=e.slides.eq(e.activeIndex);let s=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(s=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(e.autoplay.timeout),e.autoplay.timeout=Utils.nextTick(()=>{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()},s)},start(){return void 0===this.autoplay.timeout&&(!this.autoplay.running&&(this.autoplay.running=!0,this.emit("autoplayStart"),this.autoplay.run(),!0))},stop(){const e=this;return!!e.autoplay.running&&(void 0!==e.autoplay.timeout&&(e.autoplay.timeout&&(clearTimeout(e.autoplay.timeout),e.autoplay.timeout=void 0),e.autoplay.running=!1,e.emit("autoplayStop"),!0))},pause(e){const t=this;t.autoplay.running&&(t.autoplay.paused||(t.autoplay.timeout&&clearTimeout(t.autoplay.timeout),t.autoplay.paused=!0,0!==e&&t.params.autoplay.waitForTransition?(t.$wrapperEl[0].addEventListener("transitionend",t.autoplay.onTransitionEnd),t.$wrapperEl[0].addEventListener("webkitTransitionEnd",t.autoplay.onTransitionEnd)):(t.autoplay.paused=!1,t.autoplay.run())))}};var Autoplay$1={name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create(){const e=this;Utils.extend(e,{autoplay:{running:!1,paused:!1,run:Autoplay.run.bind(e),start:Autoplay.start.bind(e),stop:Autoplay.stop.bind(e),pause:Autoplay.pause.bind(e),onVisibilityChange(){"hidden"===document.visibilityState&&e.autoplay.running&&e.autoplay.pause(),"visible"===document.visibilityState&&e.autoplay.paused&&(e.autoplay.run(),e.autoplay.paused=!1)},onTransitionEnd(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===this&&(e.$wrapperEl[0].removeEventListener("transitionend",e.autoplay.onTransitionEnd),e.$wrapperEl[0].removeEventListener("webkitTransitionEnd",e.autoplay.onTransitionEnd),e.autoplay.paused=!1,e.autoplay.running?e.autoplay.run():e.autoplay.stop())}}})},on:{init(){const e=this;e.params.autoplay.enabled&&(e.autoplay.start(),document.addEventListener("visibilitychange",e.autoplay.onVisibilityChange))},beforeTransitionStart(e,t){const s=this;s.autoplay.running&&(t||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(e):s.autoplay.stop())},sliderFirstMove(){const e=this;e.autoplay.running&&(e.params.autoplay.disableOnInteraction?e.autoplay.stop():e.autoplay.pause())},touchEnd(){const e=this;e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&e.autoplay.run()},destroy(){const e=this;e.autoplay.running&&e.autoplay.stop(),document.removeEventListener("visibilitychange",e.autoplay.onVisibilityChange)}}};const Fade={setTranslate(){const e=this,{slides:t}=e;for(let s=0;s<t.length;s+=1){const t=e.slides.eq(s);let i=-t[0].swiperSlideOffset;e.params.virtualTranslate||(i-=e.translate);let a=0;e.isHorizontal()||(a=i,i=0);const n=e.params.fadeEffect.crossFade?Math.max(1-Math.abs(t[0].progress),0):1+Math.min(Math.max(t[0].progress,-1),0);t.css({opacity:n}).transform(`translate3d(${i}px, ${a}px, 0px)`)}},setTransition(e){const t=this,{slides:s,$wrapperEl:i}=t;if(s.transition(e),t.params.virtualTranslate&&0!==e){let e=!1;s.transitionEnd(()=>{if(e)return;if(!t||t.destroyed)return;e=!0,t.animating=!1;const s=["webkitTransitionEnd","transitionend"];for(let e=0;e<s.length;e+=1)i.trigger(s[e])})}}};var EffectFade={name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create(){Utils.extend(this,{fadeEffect:{setTranslate:Fade.setTranslate.bind(this),setTransition:Fade.setTransition.bind(this)}})},on:{beforeInit(){if("fade"!==this.params.effect)return;this.classNames.push(this.params.containerModifierClass+"fade");const e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};Utils.extend(this.params,e),Utils.extend(this.originalParams,e)},setTranslate(){"fade"===this.params.effect&&this.fadeEffect.setTranslate()},setTransition(e){"fade"===this.params.effect&&this.fadeEffect.setTransition(e)}}};const Cube={setTranslate(){const{$el:e,$wrapperEl:t,slides:s,width:i,height:a,rtlTranslate:n,size:r}=this,l=this.params.cubeEffect,o=this.isHorizontal(),d=this.virtual&&this.params.virtual.enabled;let p,c=0;l.shadow&&(o?(p=t.find(".swiper-cube-shadow"),0===p.length&&(p=$('<div class="swiper-cube-shadow"></div>'),t.append(p)),p.css({height:i+"px"})):(p=e.find(".swiper-cube-shadow"),0===p.length&&(p=$('<div class="swiper-cube-shadow"></div>'),e.append(p))));for(let e=0;e<s.length;e+=1){const t=s.eq(e);let i=e;d&&(i=parseInt(t.attr("data-swiper-slide-index"),10));let a=90*i,p=Math.floor(a/360);n&&(a=-a,p=Math.floor(-a/360));const h=Math.max(Math.min(t[0].progress,1),-1);let u=0,m=0,f=0;i%4==0?(u=4*-p*r,f=0):(i-1)%4==0?(u=0,f=4*-p*r):(i-2)%4==0?(u=r+4*p*r,f=r):(i-3)%4==0&&(u=-r,f=3*r+4*r*p),n&&(u=-u),o||(m=u,u=0);const g=`rotateX(${o?0:-a}deg) rotateY(${o?a:0}deg) translate3d(${u}px, ${m}px, ${f}px)`;if(h<=1&&h>-1&&(c=90*i+90*h,n&&(c=90*-i-90*h)),t.transform(g),l.slideShadows){let e=o?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=o?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=$(`<div class="swiper-slide-shadow-${o?"left":"top"}"></div>`),t.append(e)),0===s.length&&(s=$(`<div class="swiper-slide-shadow-${o?"right":"bottom"}"></div>`),t.append(s)),e.length&&(e[0].style.opacity=Math.max(-h,0)),s.length&&(s[0].style.opacity=Math.max(h,0))}}if(t.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)if(o)p.transform(`translate3d(0px, ${i/2+l.shadowOffset}px, ${-i/2}px) rotateX(90deg) rotateZ(0deg) scale(${l.shadowScale})`);else{const e=Math.abs(c)-90*Math.floor(Math.abs(c)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=l.shadowScale,i=l.shadowScale/t,n=l.shadowOffset;p.transform(`scale3d(${s}, 1, ${i}) translate3d(0px, ${a/2+n}px, ${-a/2/i}px) rotateX(-90deg)`)}const h=Browser.isSafari||Browser.isUiWebView?-r/2:0;t.transform(`translate3d(0px,0,${h}px) rotateX(${this.isHorizontal()?0:c}deg) rotateY(${this.isHorizontal()?-c:0}deg)`)},setTransition(e){const{$el:t,slides:s}=this;s.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)}};var EffectCube={name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create(){Utils.extend(this,{cubeEffect:{setTranslate:Cube.setTranslate.bind(this),setTransition:Cube.setTransition.bind(this)}})},on:{beforeInit(){if("cube"!==this.params.effect)return;this.classNames.push(this.params.containerModifierClass+"cube"),this.classNames.push(this.params.containerModifierClass+"3d");const e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};Utils.extend(this.params,e),Utils.extend(this.originalParams,e)},setTranslate(){"cube"===this.params.effect&&this.cubeEffect.setTranslate()},setTransition(e){"cube"===this.params.effect&&this.cubeEffect.setTransition(e)}}};const Flip={setTranslate(){const e=this,{slides:t,rtlTranslate:s}=e;for(let i=0;i<t.length;i+=1){const a=t.eq(i);let n=a[0].progress;e.params.flipEffect.limitRotation&&(n=Math.max(Math.min(a[0].progress,1),-1));let r=-180*n,l=0,o=-a[0].swiperSlideOffset,d=0;if(e.isHorizontal()?s&&(r=-r):(d=o,o=0,l=-r,r=0),a[0].style.zIndex=-Math.abs(Math.round(n))+t.length,e.params.flipEffect.slideShadows){let t=e.isHorizontal()?a.find(".swiper-slide-shadow-left"):a.find(".swiper-slide-shadow-top"),s=e.isHorizontal()?a.find(".swiper-slide-shadow-right"):a.find(".swiper-slide-shadow-bottom");0===t.length&&(t=$(`<div class="swiper-slide-shadow-${e.isHorizontal()?"left":"top"}"></div>`),a.append(t)),0===s.length&&(s=$(`<div class="swiper-slide-shadow-${e.isHorizontal()?"right":"bottom"}"></div>`),a.append(s)),t.length&&(t[0].style.opacity=Math.max(-n,0)),s.length&&(s[0].style.opacity=Math.max(n,0))}a.transform(`translate3d(${o}px, ${d}px, 0px) rotateX(${l}deg) rotateY(${r}deg)`)}},setTransition(e){const t=this,{slides:s,activeIndex:i,$wrapperEl:a}=t;if(s.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){let e=!1;s.eq(i).transitionEnd((function(){if(e)return;if(!t||t.destroyed)return;e=!0,t.animating=!1;const s=["webkitTransitionEnd","transitionend"];for(let e=0;e<s.length;e+=1)a.trigger(s[e])}))}}};var EffectFlip={name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create(){Utils.extend(this,{flipEffect:{setTranslate:Flip.setTranslate.bind(this),setTransition:Flip.setTransition.bind(this)}})},on:{beforeInit(){if("flip"!==this.params.effect)return;this.classNames.push(this.params.containerModifierClass+"flip"),this.classNames.push(this.params.containerModifierClass+"3d");const e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};Utils.extend(this.params,e),Utils.extend(this.originalParams,e)},setTranslate(){"flip"===this.params.effect&&this.flipEffect.setTranslate()},setTransition(e){"flip"===this.params.effect&&this.flipEffect.setTransition(e)}}};const Coverflow={setTranslate(){const{width:e,height:t,slides:s,$wrapperEl:i,slidesSizesGrid:a}=this,n=this.params.coverflowEffect,r=this.isHorizontal(),l=this.translate,o=r?e/2-l:t/2-l,d=r?n.rotate:-n.rotate,p=n.depth;for(let e=0,t=s.length;e<t;e+=1){const t=s.eq(e),i=a[e],l=(o-t[0].swiperSlideOffset-i/2)/i*n.modifier;let c=r?d*l:0,h=r?0:d*l,u=-p*Math.abs(l),m=n.stretch;"string"==typeof m&&-1!==m.indexOf("%")&&(m=parseFloat(n.stretch)/100*i);let f=r?0:m*l,g=r?m*l:0;Math.abs(g)<.001&&(g=0),Math.abs(f)<.001&&(f=0),Math.abs(u)<.001&&(u=0),Math.abs(c)<.001&&(c=0),Math.abs(h)<.001&&(h=0);const v=`translate3d(${g}px,${f}px,${u}px)  rotateX(${h}deg) rotateY(${c}deg)`;if(t.transform(v),t[0].style.zIndex=1-Math.abs(Math.round(l)),n.slideShadows){let e=r?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=r?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=$(`<div class="swiper-slide-shadow-${r?"left":"top"}"></div>`),t.append(e)),0===s.length&&(s=$(`<div class="swiper-slide-shadow-${r?"right":"bottom"}"></div>`),t.append(s)),e.length&&(e[0].style.opacity=l>0?l:0),s.length&&(s[0].style.opacity=-l>0?-l:0)}}if(Support.pointerEvents||Support.prefixedPointerEvents){i[0].style.perspectiveOrigin=o+"px 50%"}},setTransition(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}};var EffectCoverflow={name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0}},create(){Utils.extend(this,{coverflowEffect:{setTranslate:Coverflow.setTranslate.bind(this),setTransition:Coverflow.setTransition.bind(this)}})},on:{beforeInit(){"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(){"coverflow"===this.params.effect&&this.coverflowEffect.setTranslate()},setTransition(e){"coverflow"===this.params.effect&&this.coverflowEffect.setTransition(e)}}};const Thumbs={init(){const e=this,{thumbs:t}=e.params,s=e.constructor;t.swiper instanceof s?(e.thumbs.swiper=t.swiper,Utils.extend(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Utils.extend(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):Utils.isObject(t.swiper)&&(e.thumbs.swiper=new s(Utils.extend({},t.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),e.thumbs.swiperCreated=!0),e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",e.thumbs.onThumbClick)},onThumbClick(){const e=this,t=e.thumbs.swiper;if(!t)return;const s=t.clickedIndex,i=t.clickedSlide;if(i&&$(i).hasClass(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;if(a=t.params.loop?parseInt($(t.clickedSlide).attr("data-swiper-slide-index"),10):s,e.params.loop){let t=e.activeIndex;e.slides.eq(t).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,t=e.activeIndex);const s=e.slides.eq(t).prevAll(`[data-swiper-slide-index="${a}"]`).eq(0).index(),i=e.slides.eq(t).nextAll(`[data-swiper-slide-index="${a}"]`).eq(0).index();a=void 0===s?i:void 0===i?s:i-t<t-s?i:s}e.slideTo(a)},update(e){const t=this,s=t.thumbs.swiper;if(!s)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView,a=t.params.thumbs.autoScrollOffset,n=a&&!s.params.loop;if(t.realIndex!==s.realIndex||n){let r,l,o=s.activeIndex;if(s.params.loop){s.slides.eq(o).hasClass(s.params.slideDuplicateClass)&&(s.loopFix(),s._clientLeft=s.$wrapperEl[0].clientLeft,o=s.activeIndex);const e=s.slides.eq(o).prevAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index(),i=s.slides.eq(o).nextAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index();r=void 0===e?i:void 0===i?e:i-o==o-e?o:i-o<o-e?i:e,l=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,l=r>t.previousIndex?"next":"prev";n&&(r+="next"===l?a:-1*a),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),s.slideTo(r,e?0:void 0))}let r=1;const l=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(r=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e<r;e+=1)s.$wrapperEl.children(`[data-swiper-slide-index="${t.realIndex+e}"]`).addClass(l);else for(let e=0;e<r;e+=1)s.slides.eq(t.realIndex+e).addClass(l)}};var Thumbs$1={name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create(){Utils.extend(this,{thumbs:{swiper:null,init:Thumbs.init.bind(this),update:Thumbs.update.bind(this),onThumbClick:Thumbs.onThumbClick.bind(this)}})},on:{beforeInit(){const{thumbs:e}=this.params;e&&e.swiper&&(this.thumbs.init(),this.thumbs.update(!0))},slideChange(){this.thumbs.swiper&&this.thumbs.update()},update(){this.thumbs.swiper&&this.thumbs.update()},resize(){this.thumbs.swiper&&this.thumbs.update()},observerUpdate(){this.thumbs.swiper&&this.thumbs.update()},setTransition(e){const t=this.thumbs.swiper;t&&t.setTransition(e)},beforeDestroy(){const e=this.thumbs.swiper;e&&this.thumbs.swiperCreated&&e&&e.destroy()}}};const components=[Device$1,Support$1,Browser$1,Resize,Observer$1,Virtual$1,Keyboard$1,Mousewheel$1,Navigation$1,Pagination$1,Scrollbar$1,Parallax$1,Zoom$1,Lazy$1,Controller$1,A11y,History$1,HashNavigation$1,Autoplay$1,EffectFade,EffectCube,EffectFlip,EffectCoverflow,Thumbs$1];void 0===Swiper.use&&(Swiper.use=Swiper.Class.use,Swiper.installModule=Swiper.Class.installModule),Swiper.use(components);export default Swiper;
14
-//# sourceMappingURL=swiper.esm.browser.bundle.min.js.map
15 0
\ No newline at end of file
16 1
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"sources":["0"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","[object Object]","arr","self","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","matchedItems","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","toAdd","fn","prototype","Class","Methods","methodName","Utils","object","nextTick","delay","now","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","url","query","params","param","urlToParse","paramsPart","decodeURIComponent","o","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SwiperClass","eventsListeners","eventName","priority","method","onceHandler","f7proxy","eventHandler","Array","isArray","slice","instanceParams","instance","modules","moduleName","module","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","components","use","name","proto","static","install","m","installModule","updateSize","swiper","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","emit","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","direction","dir","transitionEnd$1","transition$1","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","Device","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","toLowerCase","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","innerWidth","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","lastSlidePosition","checkOverflow$1","defaults","init","uniqueNavElements","wrapperClass","prototypes","extendedDefaults","Swiper","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","attach","observeSlideChildren","disconnect","Observer$1","destroy","Virtual","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","overwriteParams","Keyboard","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","handle","Keyboard$1","enable","disable","isEventSupported","isSupported","element","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","mouseEntered","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","timeout","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","handleMouseEnter","handleMouseLeave","Mousewheel$1","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onNextClick","onPrevClick","Navigation$1","hideOnClick","hiddenClass","isHidden","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","number","render","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","clientX","clientY","dragStartPos","positionRatio","getPointerPosition","setDragPosition","dragTimeout","snapOnRelease","activeListener","onDragStart","onDragMove","onDragEnd","$swiperEl","dragClass","dragEl","draggable","enableDraggable","disableDraggable","Scrollbar$1","Parallax","p","currentOpacity","currentScale","parallax","setTransform","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","x1","y1","x2","y2","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","getDistanceBetweenTouches","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","scaleMove","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","onGestureStart","onGestureChange","onGestureEnd","Zoom$1","get","onTransitionEnd","Lazy","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","loadInSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$1","loadOnTransitionStart","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","c","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","getInterpolateFunction","inverse","setControlledTransition","Controller$1","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","bulletEl","$bulletEl","paginationBulletMessage","onEnterKey","A11y","notificationClass","updateNavigation","updatePagination","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","slugify","includes","currentState","state","History$1","setHistory","HashNavigation","newHash","watchState","onHashCange","HashNavigation$1","setHash","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","Autoplay$1","disableOnInteraction","pause","visibilityState","onVisibilityChange","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectFlip","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","EffectCoverflow","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Thumbs$1"],"mappings":"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","file":"swiper.esm.browser.bundle.min.js"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,7751 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';
14
-import { window, document as document$1 } from 'ssr-window';
15
-
16
-const Methods = {
17
-  addClass,
18
-  removeClass,
19
-  hasClass,
20
-  toggleClass,
21
-  attr,
22
-  removeAttr,
23
-  data,
24
-  transform,
25
-  transition: transition$1,
26
-  on,
27
-  off,
28
-  trigger,
29
-  transitionEnd: transitionEnd$1,
30
-  outerWidth,
31
-  outerHeight,
32
-  offset,
33
-  css,
34
-  each,
35
-  html,
36
-  text,
37
-  is,
38
-  index,
39
-  eq,
40
-  append,
41
-  prepend,
42
-  next,
43
-  nextAll,
44
-  prev,
45
-  prevAll,
46
-  parent,
47
-  parents,
48
-  closest,
49
-  find,
50
-  children,
51
-  filter,
52
-  remove,
53
-  add,
54
-  styles,
55
-};
56
-
57
-Object.keys(Methods).forEach((methodName) => {
58
-  $.fn[methodName] = $.fn[methodName] || Methods[methodName];
59
-});
60
-
61
-const Utils = {
62
-  deleteProps(obj) {
63
-    const object = obj;
64
-    Object.keys(object).forEach((key) => {
65
-      try {
66
-        object[key] = null;
67
-      } catch (e) {
68
-        // no getter for object
69
-      }
70
-      try {
71
-        delete object[key];
72
-      } catch (e) {
73
-        // something got wrong
74
-      }
75
-    });
76
-  },
77
-  nextTick(callback, delay = 0) {
78
-    return setTimeout(callback, delay);
79
-  },
80
-  now() {
81
-    return Date.now();
82
-  },
83
-  getTranslate(el, axis = 'x') {
84
-    let matrix;
85
-    let curTransform;
86
-    let transformMatrix;
87
-
88
-    const curStyle = window.getComputedStyle(el, null);
89
-
90
-    if (window.WebKitCSSMatrix) {
91
-      curTransform = curStyle.transform || curStyle.webkitTransform;
92
-      if (curTransform.split(',').length > 6) {
93
-        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');
94
-      }
95
-      // Some old versions of Webkit choke when 'none' is passed; pass
96
-      // empty string instead in this case
97
-      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
98
-    } else {
99
-      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
100
-      matrix = transformMatrix.toString().split(',');
101
-    }
102
-
103
-    if (axis === 'x') {
104
-      // Latest Chrome and webkits Fix
105
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
106
-      // Crazy IE10 Matrix
107
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
108
-      // Normal Browsers
109
-      else curTransform = parseFloat(matrix[4]);
110
-    }
111
-    if (axis === 'y') {
112
-      // Latest Chrome and webkits Fix
113
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
114
-      // Crazy IE10 Matrix
115
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
116
-      // Normal Browsers
117
-      else curTransform = parseFloat(matrix[5]);
118
-    }
119
-    return curTransform || 0;
120
-  },
121
-  parseUrlQuery(url) {
122
-    const query = {};
123
-    let urlToParse = url || window.location.href;
124
-    let i;
125
-    let params;
126
-    let param;
127
-    let length;
128
-    if (typeof urlToParse === 'string' && urlToParse.length) {
129
-      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
130
-      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');
131
-      length = params.length;
132
-
133
-      for (i = 0; i < length; i += 1) {
134
-        param = params[i].replace(/#\S+/g, '').split('=');
135
-        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
136
-      }
137
-    }
138
-    return query;
139
-  },
140
-  isObject(o) {
141
-    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
142
-  },
143
-  extend(...args) {
144
-    const to = Object(args[0]);
145
-    for (let i = 1; i < args.length; i += 1) {
146
-      const nextSource = args[i];
147
-      if (nextSource !== undefined && nextSource !== null) {
148
-        const keysArray = Object.keys(Object(nextSource));
149
-        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
150
-          const nextKey = keysArray[nextIndex];
151
-          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
152
-          if (desc !== undefined && desc.enumerable) {
153
-            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
154
-              Utils.extend(to[nextKey], nextSource[nextKey]);
155
-            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
156
-              to[nextKey] = {};
157
-              Utils.extend(to[nextKey], nextSource[nextKey]);
158
-            } else {
159
-              to[nextKey] = nextSource[nextKey];
160
-            }
161
-          }
162
-        }
163
-      }
164
-    }
165
-    return to;
166
-  },
167
-};
168
-
169
-const Support = (function Support() {
170
-  return {
171
-    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)),
172
-
173
-    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,
174
-
175
-    observer: (function checkObserver() {
176
-      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);
177
-    }()),
178
-
179
-    passiveListener: (function checkPassiveListener() {
180
-      let supportsPassive = false;
181
-      try {
182
-        const opts = Object.defineProperty({}, 'passive', {
183
-          // eslint-disable-next-line
184
-          get() {
185
-            supportsPassive = true;
186
-          },
187
-        });
188
-        window.addEventListener('testPassiveListener', null, opts);
189
-      } catch (e) {
190
-        // No support
191
-      }
192
-      return supportsPassive;
193
-    }()),
194
-
195
-    gestures: (function checkGestures() {
196
-      return 'ongesturestart' in window;
197
-    }()),
198
-  };
199
-}());
200
-
201
-class SwiperClass {
202
-  constructor(params = {}) {
203
-    const self = this;
204
-    self.params = params;
205
-
206
-    // Events
207
-    self.eventsListeners = {};
208
-
209
-    if (self.params && self.params.on) {
210
-      Object.keys(self.params.on).forEach((eventName) => {
211
-        self.on(eventName, self.params.on[eventName]);
212
-      });
213
-    }
214
-  }
215
-
216
-  on(events, handler, priority) {
217
-    const self = this;
218
-    if (typeof handler !== 'function') return self;
219
-    const method = priority ? 'unshift' : 'push';
220
-    events.split(' ').forEach((event) => {
221
-      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
222
-      self.eventsListeners[event][method](handler);
223
-    });
224
-    return self;
225
-  }
226
-
227
-  once(events, handler, priority) {
228
-    const self = this;
229
-    if (typeof handler !== 'function') return self;
230
-    function onceHandler(...args) {
231
-      self.off(events, onceHandler);
232
-      if (onceHandler.f7proxy) {
233
-        delete onceHandler.f7proxy;
234
-      }
235
-      handler.apply(self, args);
236
-    }
237
-    onceHandler.f7proxy = handler;
238
-    return self.on(events, onceHandler, priority);
239
-  }
240
-
241
-  off(events, handler) {
242
-    const self = this;
243
-    if (!self.eventsListeners) return self;
244
-    events.split(' ').forEach((event) => {
245
-      if (typeof handler === 'undefined') {
246
-        self.eventsListeners[event] = [];
247
-      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
248
-        self.eventsListeners[event].forEach((eventHandler, index) => {
249
-          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
250
-            self.eventsListeners[event].splice(index, 1);
251
-          }
252
-        });
253
-      }
254
-    });
255
-    return self;
256
-  }
257
-
258
-  emit(...args) {
259
-    const self = this;
260
-    if (!self.eventsListeners) return self;
261
-    let events;
262
-    let data;
263
-    let context;
264
-    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
265
-      events = args[0];
266
-      data = args.slice(1, args.length);
267
-      context = self;
268
-    } else {
269
-      events = args[0].events;
270
-      data = args[0].data;
271
-      context = args[0].context || self;
272
-    }
273
-    const eventsArray = Array.isArray(events) ? events : events.split(' ');
274
-    eventsArray.forEach((event) => {
275
-      if (self.eventsListeners && self.eventsListeners[event]) {
276
-        const handlers = [];
277
-        self.eventsListeners[event].forEach((eventHandler) => {
278
-          handlers.push(eventHandler);
279
-        });
280
-        handlers.forEach((eventHandler) => {
281
-          eventHandler.apply(context, data);
282
-        });
283
-      }
284
-    });
285
-    return self;
286
-  }
287
-
288
-  useModulesParams(instanceParams) {
289
-    const instance = this;
290
-    if (!instance.modules) return;
291
-    Object.keys(instance.modules).forEach((moduleName) => {
292
-      const module = instance.modules[moduleName];
293
-      // Extend params
294
-      if (module.params) {
295
-        Utils.extend(instanceParams, module.params);
296
-      }
297
-    });
298
-  }
299
-
300
-  useModules(modulesParams = {}) {
301
-    const instance = this;
302
-    if (!instance.modules) return;
303
-    Object.keys(instance.modules).forEach((moduleName) => {
304
-      const module = instance.modules[moduleName];
305
-      const moduleParams = modulesParams[moduleName] || {};
306
-      // Extend instance methods and props
307
-      if (module.instance) {
308
-        Object.keys(module.instance).forEach((modulePropName) => {
309
-          const moduleProp = module.instance[modulePropName];
310
-          if (typeof moduleProp === 'function') {
311
-            instance[modulePropName] = moduleProp.bind(instance);
312
-          } else {
313
-            instance[modulePropName] = moduleProp;
314
-          }
315
-        });
316
-      }
317
-      // Add event listeners
318
-      if (module.on && instance.on) {
319
-        Object.keys(module.on).forEach((moduleEventName) => {
320
-          instance.on(moduleEventName, module.on[moduleEventName]);
321
-        });
322
-      }
323
-
324
-      // Module create callback
325
-      if (module.create) {
326
-        module.create.bind(instance)(moduleParams);
327
-      }
328
-    });
329
-  }
330
-
331
-  static set components(components) {
332
-    const Class = this;
333
-    if (!Class.use) return;
334
-    Class.use(components);
335
-  }
336
-
337
-  static installModule(module, ...params) {
338
-    const Class = this;
339
-    if (!Class.prototype.modules) Class.prototype.modules = {};
340
-    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);
341
-    Class.prototype.modules[name] = module;
342
-    // Prototype
343
-    if (module.proto) {
344
-      Object.keys(module.proto).forEach((key) => {
345
-        Class.prototype[key] = module.proto[key];
346
-      });
347
-    }
348
-    // Class
349
-    if (module.static) {
350
-      Object.keys(module.static).forEach((key) => {
351
-        Class[key] = module.static[key];
352
-      });
353
-    }
354
-    // Callback
355
-    if (module.install) {
356
-      module.install.apply(Class, params);
357
-    }
358
-    return Class;
359
-  }
360
-
361
-  static use(module, ...params) {
362
-    const Class = this;
363
-    if (Array.isArray(module)) {
364
-      module.forEach((m) => Class.installModule(m));
365
-      return Class;
366
-    }
367
-    return Class.installModule(module, ...params);
368
-  }
369
-}
370
-
371
-function updateSize () {
372
-  const swiper = this;
373
-  let width;
374
-  let height;
375
-  const $el = swiper.$el;
376
-  if (typeof swiper.params.width !== 'undefined') {
377
-    width = swiper.params.width;
378
-  } else {
379
-    width = $el[0].clientWidth;
380
-  }
381
-  if (typeof swiper.params.height !== 'undefined') {
382
-    height = swiper.params.height;
383
-  } else {
384
-    height = $el[0].clientHeight;
385
-  }
386
-  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
387
-    return;
388
-  }
389
-
390
-  // Subtract paddings
391
-  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
392
-  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
393
-
394
-  Utils.extend(swiper, {
395
-    width,
396
-    height,
397
-    size: swiper.isHorizontal() ? width : height,
398
-  });
399
-}
400
-
401
-function updateSlides () {
402
-  const swiper = this;
403
-  const params = swiper.params;
404
-
405
-  const {
406
-    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
407
-  } = swiper;
408
-  const isVirtual = swiper.virtual && params.virtual.enabled;
409
-  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
410
-  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
411
-  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
412
-  let snapGrid = [];
413
-  const slidesGrid = [];
414
-  const slidesSizesGrid = [];
415
-
416
-  function slidesForMargin(slideIndex) {
417
-    if (!params.cssMode) return true;
418
-    if (slideIndex === slides.length - 1) {
419
-      return false;
420
-    }
421
-    return true;
422
-  }
423
-
424
-  let offsetBefore = params.slidesOffsetBefore;
425
-  if (typeof offsetBefore === 'function') {
426
-    offsetBefore = params.slidesOffsetBefore.call(swiper);
427
-  }
428
-
429
-  let offsetAfter = params.slidesOffsetAfter;
430
-  if (typeof offsetAfter === 'function') {
431
-    offsetAfter = params.slidesOffsetAfter.call(swiper);
432
-  }
433
-
434
-  const previousSnapGridLength = swiper.snapGrid.length;
435
-  const previousSlidesGridLength = swiper.snapGrid.length;
436
-
437
-  let spaceBetween = params.spaceBetween;
438
-  let slidePosition = -offsetBefore;
439
-  let prevSlideSize = 0;
440
-  let index = 0;
441
-  if (typeof swiperSize === 'undefined') {
442
-    return;
443
-  }
444
-  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
445
-    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
446
-  }
447
-
448
-  swiper.virtualSize = -spaceBetween;
449
-
450
-  // reset margins
451
-  if (rtl) slides.css({ marginLeft: '', marginTop: '' });
452
-  else slides.css({ marginRight: '', marginBottom: '' });
453
-
454
-  let slidesNumberEvenToRows;
455
-  if (params.slidesPerColumn > 1) {
456
-    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
457
-      slidesNumberEvenToRows = slidesLength;
458
-    } else {
459
-      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
460
-    }
461
-    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
462
-      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
463
-    }
464
-  }
465
-
466
-  // Calc slides
467
-  let slideSize;
468
-  const slidesPerColumn = params.slidesPerColumn;
469
-  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
470
-  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
471
-  for (let i = 0; i < slidesLength; i += 1) {
472
-    slideSize = 0;
473
-    const slide = slides.eq(i);
474
-    if (params.slidesPerColumn > 1) {
475
-      // Set slides order
476
-      let newSlideOrderIndex;
477
-      let column;
478
-      let row;
479
-      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
480
-        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
481
-        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
482
-        const columnsInGroup = groupIndex === 0
483
-          ? params.slidesPerGroup
484
-          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
485
-        row = Math.floor(slideIndexInGroup / columnsInGroup);
486
-        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
487
-
488
-        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
489
-        slide
490
-          .css({
491
-            '-webkit-box-ordinal-group': newSlideOrderIndex,
492
-            '-moz-box-ordinal-group': newSlideOrderIndex,
493
-            '-ms-flex-order': newSlideOrderIndex,
494
-            '-webkit-order': newSlideOrderIndex,
495
-            order: newSlideOrderIndex,
496
-          });
497
-      } else if (params.slidesPerColumnFill === 'column') {
498
-        column = Math.floor(i / slidesPerColumn);
499
-        row = i - (column * slidesPerColumn);
500
-        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
501
-          row += 1;
502
-          if (row >= slidesPerColumn) {
503
-            row = 0;
504
-            column += 1;
505
-          }
506
-        }
507
-      } else {
508
-        row = Math.floor(i / slidesPerRow);
509
-        column = i - (row * slidesPerRow);
510
-      }
511
-      slide.css(
512
-        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,
513
-        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)
514
-      );
515
-    }
516
-    if (slide.css('display') === 'none') continue; // eslint-disable-line
517
-
518
-    if (params.slidesPerView === 'auto') {
519
-      const slideStyles = window.getComputedStyle(slide[0], null);
520
-      const currentTransform = slide[0].style.transform;
521
-      const currentWebKitTransform = slide[0].style.webkitTransform;
522
-      if (currentTransform) {
523
-        slide[0].style.transform = 'none';
524
-      }
525
-      if (currentWebKitTransform) {
526
-        slide[0].style.webkitTransform = 'none';
527
-      }
528
-      if (params.roundLengths) {
529
-        slideSize = swiper.isHorizontal()
530
-          ? slide.outerWidth(true)
531
-          : slide.outerHeight(true);
532
-      } else {
533
-        // eslint-disable-next-line
534
-        if (swiper.isHorizontal()) {
535
-          const width = parseFloat(slideStyles.getPropertyValue('width'));
536
-          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
537
-          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
538
-          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
539
-          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
540
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
541
-          if (boxSizing && boxSizing === 'border-box') {
542
-            slideSize = width + marginLeft + marginRight;
543
-          } else {
544
-            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
545
-          }
546
-        } else {
547
-          const height = parseFloat(slideStyles.getPropertyValue('height'));
548
-          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
549
-          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
550
-          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
551
-          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
552
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
553
-          if (boxSizing && boxSizing === 'border-box') {
554
-            slideSize = height + marginTop + marginBottom;
555
-          } else {
556
-            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
557
-          }
558
-        }
559
-      }
560
-      if (currentTransform) {
561
-        slide[0].style.transform = currentTransform;
562
-      }
563
-      if (currentWebKitTransform) {
564
-        slide[0].style.webkitTransform = currentWebKitTransform;
565
-      }
566
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
567
-    } else {
568
-      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
569
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
570
-
571
-      if (slides[i]) {
572
-        if (swiper.isHorizontal()) {
573
-          slides[i].style.width = `${slideSize}px`;
574
-        } else {
575
-          slides[i].style.height = `${slideSize}px`;
576
-        }
577
-      }
578
-    }
579
-    if (slides[i]) {
580
-      slides[i].swiperSlideSize = slideSize;
581
-    }
582
-    slidesSizesGrid.push(slideSize);
583
-
584
-
585
-    if (params.centeredSlides) {
586
-      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
587
-      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
588
-      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
589
-      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
590
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
591
-      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
592
-      slidesGrid.push(slidePosition);
593
-    } else {
594
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
595
-      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
596
-      slidesGrid.push(slidePosition);
597
-      slidePosition = slidePosition + slideSize + spaceBetween;
598
-    }
599
-
600
-    swiper.virtualSize += slideSize + spaceBetween;
601
-
602
-    prevSlideSize = slideSize;
603
-
604
-    index += 1;
605
-  }
606
-  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
607
-  let newSlidesGrid;
608
-
609
-  if (
610
-    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
611
-    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
612
-  }
613
-  if (params.setWrapperSize) {
614
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
615
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
616
-  }
617
-
618
-  if (params.slidesPerColumn > 1) {
619
-    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
620
-    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
621
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
622
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
623
-    if (params.centeredSlides) {
624
-      newSlidesGrid = [];
625
-      for (let i = 0; i < snapGrid.length; i += 1) {
626
-        let slidesGridItem = snapGrid[i];
627
-        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
628
-        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
629
-      }
630
-      snapGrid = newSlidesGrid;
631
-    }
632
-  }
633
-
634
-  // Remove last grid elements depending on width
635
-  if (!params.centeredSlides) {
636
-    newSlidesGrid = [];
637
-    for (let i = 0; i < snapGrid.length; i += 1) {
638
-      let slidesGridItem = snapGrid[i];
639
-      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
640
-      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
641
-        newSlidesGrid.push(slidesGridItem);
642
-      }
643
-    }
644
-    snapGrid = newSlidesGrid;
645
-    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
646
-      snapGrid.push(swiper.virtualSize - swiperSize);
647
-    }
648
-  }
649
-  if (snapGrid.length === 0) snapGrid = [0];
650
-
651
-  if (params.spaceBetween !== 0) {
652
-    if (swiper.isHorizontal()) {
653
-      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });
654
-      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });
655
-    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });
656
-  }
657
-
658
-  if (params.centeredSlides && params.centeredSlidesBounds) {
659
-    let allSlidesSize = 0;
660
-    slidesSizesGrid.forEach((slideSizeValue) => {
661
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
662
-    });
663
-    allSlidesSize -= params.spaceBetween;
664
-    const maxSnap = allSlidesSize - swiperSize;
665
-    snapGrid = snapGrid.map((snap) => {
666
-      if (snap < 0) return -offsetBefore;
667
-      if (snap > maxSnap) return maxSnap + offsetAfter;
668
-      return snap;
669
-    });
670
-  }
671
-
672
-  if (params.centerInsufficientSlides) {
673
-    let allSlidesSize = 0;
674
-    slidesSizesGrid.forEach((slideSizeValue) => {
675
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
676
-    });
677
-    allSlidesSize -= params.spaceBetween;
678
-    if (allSlidesSize < swiperSize) {
679
-      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
680
-      snapGrid.forEach((snap, snapIndex) => {
681
-        snapGrid[snapIndex] = snap - allSlidesOffset;
682
-      });
683
-      slidesGrid.forEach((snap, snapIndex) => {
684
-        slidesGrid[snapIndex] = snap + allSlidesOffset;
685
-      });
686
-    }
687
-  }
688
-
689
-  Utils.extend(swiper, {
690
-    slides,
691
-    snapGrid,
692
-    slidesGrid,
693
-    slidesSizesGrid,
694
-  });
695
-
696
-  if (slidesLength !== previousSlidesLength) {
697
-    swiper.emit('slidesLengthChange');
698
-  }
699
-  if (snapGrid.length !== previousSnapGridLength) {
700
-    if (swiper.params.watchOverflow) swiper.checkOverflow();
701
-    swiper.emit('snapGridLengthChange');
702
-  }
703
-  if (slidesGrid.length !== previousSlidesGridLength) {
704
-    swiper.emit('slidesGridLengthChange');
705
-  }
706
-
707
-  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
708
-    swiper.updateSlidesOffset();
709
-  }
710
-}
711
-
712
-function updateAutoHeight (speed) {
713
-  const swiper = this;
714
-  const activeSlides = [];
715
-  let newHeight = 0;
716
-  let i;
717
-  if (typeof speed === 'number') {
718
-    swiper.setTransition(speed);
719
-  } else if (speed === true) {
720
-    swiper.setTransition(swiper.params.speed);
721
-  }
722
-  // Find slides currently in view
723
-  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
724
-    if (swiper.params.centeredSlides) {
725
-      swiper.visibleSlides.each((index, slide) => {
726
-        activeSlides.push(slide);
727
-      });
728
-    } else {
729
-      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
730
-        const index = swiper.activeIndex + i;
731
-        if (index > swiper.slides.length) break;
732
-        activeSlides.push(swiper.slides.eq(index)[0]);
733
-      }
734
-    }
735
-  } else {
736
-    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
737
-  }
738
-
739
-  // Find new height from highest slide in view
740
-  for (i = 0; i < activeSlides.length; i += 1) {
741
-    if (typeof activeSlides[i] !== 'undefined') {
742
-      const height = activeSlides[i].offsetHeight;
743
-      newHeight = height > newHeight ? height : newHeight;
744
-    }
745
-  }
746
-
747
-  // Update Height
748
-  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);
749
-}
750
-
751
-function updateSlidesOffset () {
752
-  const swiper = this;
753
-  const slides = swiper.slides;
754
-  for (let i = 0; i < slides.length; i += 1) {
755
-    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
756
-  }
757
-}
758
-
759
-function updateSlidesProgress (translate = (this && this.translate) || 0) {
760
-  const swiper = this;
761
-  const params = swiper.params;
762
-
763
-  const { slides, rtlTranslate: rtl } = swiper;
764
-
765
-  if (slides.length === 0) return;
766
-  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
767
-
768
-  let offsetCenter = -translate;
769
-  if (rtl) offsetCenter = translate;
770
-
771
-  // Visible Slides
772
-  slides.removeClass(params.slideVisibleClass);
773
-
774
-  swiper.visibleSlidesIndexes = [];
775
-  swiper.visibleSlides = [];
776
-
777
-  for (let i = 0; i < slides.length; i += 1) {
778
-    const slide = slides[i];
779
-    const slideProgress = (
780
-      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
781
-    ) / (slide.swiperSlideSize + params.spaceBetween);
782
-    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
783
-      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);
784
-      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
785
-      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
786
-                || (slideAfter > 1 && slideAfter <= swiper.size)
787
-                || (slideBefore <= 0 && slideAfter >= swiper.size);
788
-      if (isVisible) {
789
-        swiper.visibleSlides.push(slide);
790
-        swiper.visibleSlidesIndexes.push(i);
791
-        slides.eq(i).addClass(params.slideVisibleClass);
792
-      }
793
-    }
794
-    slide.progress = rtl ? -slideProgress : slideProgress;
795
-  }
796
-  swiper.visibleSlides = $(swiper.visibleSlides);
797
-}
798
-
799
-function updateProgress (translate) {
800
-  const swiper = this;
801
-  if (typeof translate === 'undefined') {
802
-    const multiplier = swiper.rtlTranslate ? -1 : 1;
803
-    // eslint-disable-next-line
804
-    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
805
-  }
806
-  const params = swiper.params;
807
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
808
-  let { progress, isBeginning, isEnd } = swiper;
809
-  const wasBeginning = isBeginning;
810
-  const wasEnd = isEnd;
811
-  if (translatesDiff === 0) {
812
-    progress = 0;
813
-    isBeginning = true;
814
-    isEnd = true;
815
-  } else {
816
-    progress = (translate - swiper.minTranslate()) / (translatesDiff);
817
-    isBeginning = progress <= 0;
818
-    isEnd = progress >= 1;
819
-  }
820
-  Utils.extend(swiper, {
821
-    progress,
822
-    isBeginning,
823
-    isEnd,
824
-  });
825
-
826
-  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);
827
-
828
-  if (isBeginning && !wasBeginning) {
829
-    swiper.emit('reachBeginning toEdge');
830
-  }
831
-  if (isEnd && !wasEnd) {
832
-    swiper.emit('reachEnd toEdge');
833
-  }
834
-  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
835
-    swiper.emit('fromEdge');
836
-  }
837
-
838
-  swiper.emit('progress', progress);
839
-}
840
-
841
-function updateSlidesClasses () {
842
-  const swiper = this;
843
-
844
-  const {
845
-    slides, params, $wrapperEl, activeIndex, realIndex,
846
-  } = swiper;
847
-  const isVirtual = swiper.virtual && params.virtual.enabled;
848
-
849
-  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
850
-
851
-  let activeSlide;
852
-  if (isVirtual) {
853
-    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
854
-  } else {
855
-    activeSlide = slides.eq(activeIndex);
856
-  }
857
-
858
-  // Active classes
859
-  activeSlide.addClass(params.slideActiveClass);
860
-
861
-  if (params.loop) {
862
-    // Duplicate to all looped slides
863
-    if (activeSlide.hasClass(params.slideDuplicateClass)) {
864
-      $wrapperEl
865
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`)
866
-        .addClass(params.slideDuplicateActiveClass);
867
-    } else {
868
-      $wrapperEl
869
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`)
870
-        .addClass(params.slideDuplicateActiveClass);
871
-    }
872
-  }
873
-  // Next Slide
874
-  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
875
-  if (params.loop && nextSlide.length === 0) {
876
-    nextSlide = slides.eq(0);
877
-    nextSlide.addClass(params.slideNextClass);
878
-  }
879
-  // Prev Slide
880
-  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
881
-  if (params.loop && prevSlide.length === 0) {
882
-    prevSlide = slides.eq(-1);
883
-    prevSlide.addClass(params.slidePrevClass);
884
-  }
885
-  if (params.loop) {
886
-    // Duplicate to all looped slides
887
-    if (nextSlide.hasClass(params.slideDuplicateClass)) {
888
-      $wrapperEl
889
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
890
-        .addClass(params.slideDuplicateNextClass);
891
-    } else {
892
-      $wrapperEl
893
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
894
-        .addClass(params.slideDuplicateNextClass);
895
-    }
896
-    if (prevSlide.hasClass(params.slideDuplicateClass)) {
897
-      $wrapperEl
898
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
899
-        .addClass(params.slideDuplicatePrevClass);
900
-    } else {
901
-      $wrapperEl
902
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
903
-        .addClass(params.slideDuplicatePrevClass);
904
-    }
905
-  }
906
-}
907
-
908
-function updateActiveIndex (newActiveIndex) {
909
-  const swiper = this;
910
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
911
-  const {
912
-    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,
913
-  } = swiper;
914
-  let activeIndex = newActiveIndex;
915
-  let snapIndex;
916
-  if (typeof activeIndex === 'undefined') {
917
-    for (let i = 0; i < slidesGrid.length; i += 1) {
918
-      if (typeof slidesGrid[i + 1] !== 'undefined') {
919
-        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
920
-          activeIndex = i;
921
-        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
922
-          activeIndex = i + 1;
923
-        }
924
-      } else if (translate >= slidesGrid[i]) {
925
-        activeIndex = i;
926
-      }
927
-    }
928
-    // Normalize slideIndex
929
-    if (params.normalizeSlideIndex) {
930
-      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
931
-    }
932
-  }
933
-  if (snapGrid.indexOf(translate) >= 0) {
934
-    snapIndex = snapGrid.indexOf(translate);
935
-  } else {
936
-    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
937
-    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
938
-  }
939
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
940
-  if (activeIndex === previousIndex) {
941
-    if (snapIndex !== previousSnapIndex) {
942
-      swiper.snapIndex = snapIndex;
943
-      swiper.emit('snapIndexChange');
944
-    }
945
-    return;
946
-  }
947
-
948
-  // Get real index
949
-  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
950
-
951
-  Utils.extend(swiper, {
952
-    snapIndex,
953
-    realIndex,
954
-    previousIndex,
955
-    activeIndex,
956
-  });
957
-  swiper.emit('activeIndexChange');
958
-  swiper.emit('snapIndexChange');
959
-  if (previousRealIndex !== realIndex) {
960
-    swiper.emit('realIndexChange');
961
-  }
962
-  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
963
-    swiper.emit('slideChange');
964
-  }
965
-}
966
-
967
-function updateClickedSlide (e) {
968
-  const swiper = this;
969
-  const params = swiper.params;
970
-  const slide = $(e.target).closest(`.${params.slideClass}`)[0];
971
-  let slideFound = false;
972
-  if (slide) {
973
-    for (let i = 0; i < swiper.slides.length; i += 1) {
974
-      if (swiper.slides[i] === slide) slideFound = true;
975
-    }
976
-  }
977
-
978
-  if (slide && slideFound) {
979
-    swiper.clickedSlide = slide;
980
-    if (swiper.virtual && swiper.params.virtual.enabled) {
981
-      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
982
-    } else {
983
-      swiper.clickedIndex = $(slide).index();
984
-    }
985
-  } else {
986
-    swiper.clickedSlide = undefined;
987
-    swiper.clickedIndex = undefined;
988
-    return;
989
-  }
990
-  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
991
-    swiper.slideToClickedSlide();
992
-  }
993
-}
994
-
995
-var update = {
996
-  updateSize,
997
-  updateSlides,
998
-  updateAutoHeight,
999
-  updateSlidesOffset,
1000
-  updateSlidesProgress,
1001
-  updateProgress,
1002
-  updateSlidesClasses,
1003
-  updateActiveIndex,
1004
-  updateClickedSlide,
1005
-};
1006
-
1007
-function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {
1008
-  const swiper = this;
1009
-
1010
-  const {
1011
-    params, rtlTranslate: rtl, translate, $wrapperEl,
1012
-  } = swiper;
1013
-
1014
-  if (params.virtualTranslate) {
1015
-    return rtl ? -translate : translate;
1016
-  }
1017
-  if (params.cssMode) {
1018
-    return translate;
1019
-  }
1020
-
1021
-  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
1022
-  if (rtl) currentTranslate = -currentTranslate;
1023
-
1024
-  return currentTranslate || 0;
1025
-}
1026
-
1027
-function setTranslate (translate, byController) {
1028
-  const swiper = this;
1029
-  const {
1030
-    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,
1031
-  } = swiper;
1032
-  let x = 0;
1033
-  let y = 0;
1034
-  const z = 0;
1035
-
1036
-  if (swiper.isHorizontal()) {
1037
-    x = rtl ? -translate : translate;
1038
-  } else {
1039
-    y = translate;
1040
-  }
1041
-
1042
-  if (params.roundLengths) {
1043
-    x = Math.floor(x);
1044
-    y = Math.floor(y);
1045
-  }
1046
-
1047
-  if (params.cssMode) {
1048
-    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
1049
-  } else if (!params.virtualTranslate) {
1050
-    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
1051
-  }
1052
-  swiper.previousTranslate = swiper.translate;
1053
-  swiper.translate = swiper.isHorizontal() ? x : y;
1054
-
1055
-  // Check if we need to update progress
1056
-  let newProgress;
1057
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1058
-  if (translatesDiff === 0) {
1059
-    newProgress = 0;
1060
-  } else {
1061
-    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
1062
-  }
1063
-  if (newProgress !== progress) {
1064
-    swiper.updateProgress(translate);
1065
-  }
1066
-
1067
-  swiper.emit('setTranslate', swiper.translate, byController);
1068
-}
1069
-
1070
-function minTranslate () {
1071
-  return (-this.snapGrid[0]);
1072
-}
1073
-
1074
-function maxTranslate () {
1075
-  return (-this.snapGrid[this.snapGrid.length - 1]);
1076
-}
1077
-
1078
-function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1079
-  const swiper = this;
1080
-
1081
-  const {
1082
-    params,
1083
-    wrapperEl,
1084
-  } = swiper;
1085
-
1086
-  if (swiper.animating && params.preventInteractionOnTransition) {
1087
-    return false;
1088
-  }
1089
-
1090
-  const minTranslate = swiper.minTranslate();
1091
-  const maxTranslate = swiper.maxTranslate();
1092
-  let newTranslate;
1093
-  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
1094
-  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
1095
-  else newTranslate = translate;
1096
-
1097
-  // Update progress
1098
-  swiper.updateProgress(newTranslate);
1099
-
1100
-  if (params.cssMode) {
1101
-    const isH = swiper.isHorizontal();
1102
-    if (speed === 0) {
1103
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1104
-    } else {
1105
-      // eslint-disable-next-line
1106
-      if (wrapperEl.scrollTo) {
1107
-        wrapperEl.scrollTo({
1108
-          [isH ? 'left' : 'top']: -newTranslate,
1109
-          behavior: 'smooth',
1110
-        });
1111
-      } else {
1112
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1113
-      }
1114
-    }
1115
-    return true;
1116
-  }
1117
-
1118
-  if (speed === 0) {
1119
-    swiper.setTransition(0);
1120
-    swiper.setTranslate(newTranslate);
1121
-    if (runCallbacks) {
1122
-      swiper.emit('beforeTransitionStart', speed, internal);
1123
-      swiper.emit('transitionEnd');
1124
-    }
1125
-  } else {
1126
-    swiper.setTransition(speed);
1127
-    swiper.setTranslate(newTranslate);
1128
-    if (runCallbacks) {
1129
-      swiper.emit('beforeTransitionStart', speed, internal);
1130
-      swiper.emit('transitionStart');
1131
-    }
1132
-    if (!swiper.animating) {
1133
-      swiper.animating = true;
1134
-      if (!swiper.onTranslateToWrapperTransitionEnd) {
1135
-        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
1136
-          if (!swiper || swiper.destroyed) return;
1137
-          if (e.target !== this) return;
1138
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1139
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1140
-          swiper.onTranslateToWrapperTransitionEnd = null;
1141
-          delete swiper.onTranslateToWrapperTransitionEnd;
1142
-          if (runCallbacks) {
1143
-            swiper.emit('transitionEnd');
1144
-          }
1145
-        };
1146
-      }
1147
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1148
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1149
-    }
1150
-  }
1151
-
1152
-  return true;
1153
-}
1154
-
1155
-var translate = {
1156
-  getTranslate,
1157
-  setTranslate,
1158
-  minTranslate,
1159
-  maxTranslate,
1160
-  translateTo,
1161
-};
1162
-
1163
-function setTransition (duration, byController) {
1164
-  const swiper = this;
1165
-
1166
-  if (!swiper.params.cssMode) {
1167
-    swiper.$wrapperEl.transition(duration);
1168
-  }
1169
-
1170
-  swiper.emit('setTransition', duration, byController);
1171
-}
1172
-
1173
-function transitionStart (runCallbacks = true, direction) {
1174
-  const swiper = this;
1175
-  const { activeIndex, params, previousIndex } = swiper;
1176
-  if (params.cssMode) return;
1177
-  if (params.autoHeight) {
1178
-    swiper.updateAutoHeight();
1179
-  }
1180
-
1181
-  let dir = direction;
1182
-  if (!dir) {
1183
-    if (activeIndex > previousIndex) dir = 'next';
1184
-    else if (activeIndex < previousIndex) dir = 'prev';
1185
-    else dir = 'reset';
1186
-  }
1187
-
1188
-  swiper.emit('transitionStart');
1189
-
1190
-  if (runCallbacks && activeIndex !== previousIndex) {
1191
-    if (dir === 'reset') {
1192
-      swiper.emit('slideResetTransitionStart');
1193
-      return;
1194
-    }
1195
-    swiper.emit('slideChangeTransitionStart');
1196
-    if (dir === 'next') {
1197
-      swiper.emit('slideNextTransitionStart');
1198
-    } else {
1199
-      swiper.emit('slidePrevTransitionStart');
1200
-    }
1201
-  }
1202
-}
1203
-
1204
-function transitionEnd (runCallbacks = true, direction) {
1205
-  const swiper = this;
1206
-  const { activeIndex, previousIndex, params } = swiper;
1207
-  swiper.animating = false;
1208
-  if (params.cssMode) return;
1209
-  swiper.setTransition(0);
1210
-
1211
-  let dir = direction;
1212
-  if (!dir) {
1213
-    if (activeIndex > previousIndex) dir = 'next';
1214
-    else if (activeIndex < previousIndex) dir = 'prev';
1215
-    else dir = 'reset';
1216
-  }
1217
-
1218
-  swiper.emit('transitionEnd');
1219
-
1220
-  if (runCallbacks && activeIndex !== previousIndex) {
1221
-    if (dir === 'reset') {
1222
-      swiper.emit('slideResetTransitionEnd');
1223
-      return;
1224
-    }
1225
-    swiper.emit('slideChangeTransitionEnd');
1226
-    if (dir === 'next') {
1227
-      swiper.emit('slideNextTransitionEnd');
1228
-    } else {
1229
-      swiper.emit('slidePrevTransitionEnd');
1230
-    }
1231
-  }
1232
-}
1233
-
1234
-var transition = {
1235
-  setTransition,
1236
-  transitionStart,
1237
-  transitionEnd,
1238
-};
1239
-
1240
-function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
1241
-  const swiper = this;
1242
-  let slideIndex = index;
1243
-  if (slideIndex < 0) slideIndex = 0;
1244
-
1245
-  const {
1246
-    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,
1247
-  } = swiper;
1248
-  if (swiper.animating && params.preventInteractionOnTransition) {
1249
-    return false;
1250
-  }
1251
-
1252
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
1253
-  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
1254
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
1255
-
1256
-  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
1257
-    swiper.emit('beforeSlideChangeStart');
1258
-  }
1259
-
1260
-  const translate = -snapGrid[snapIndex];
1261
-
1262
-  // Update progress
1263
-  swiper.updateProgress(translate);
1264
-
1265
-  // Normalize slideIndex
1266
-  if (params.normalizeSlideIndex) {
1267
-    for (let i = 0; i < slidesGrid.length; i += 1) {
1268
-      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
1269
-        slideIndex = i;
1270
-      }
1271
-    }
1272
-  }
1273
-  // Directions locks
1274
-  if (swiper.initialized && slideIndex !== activeIndex) {
1275
-    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
1276
-      return false;
1277
-    }
1278
-    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
1279
-      if ((activeIndex || 0) !== slideIndex) return false;
1280
-    }
1281
-  }
1282
-
1283
-  let direction;
1284
-  if (slideIndex > activeIndex) direction = 'next';
1285
-  else if (slideIndex < activeIndex) direction = 'prev';
1286
-  else direction = 'reset';
1287
-
1288
-
1289
-  // Update Index
1290
-  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
1291
-    swiper.updateActiveIndex(slideIndex);
1292
-    // Update Height
1293
-    if (params.autoHeight) {
1294
-      swiper.updateAutoHeight();
1295
-    }
1296
-    swiper.updateSlidesClasses();
1297
-    if (params.effect !== 'slide') {
1298
-      swiper.setTranslate(translate);
1299
-    }
1300
-    if (direction !== 'reset') {
1301
-      swiper.transitionStart(runCallbacks, direction);
1302
-      swiper.transitionEnd(runCallbacks, direction);
1303
-    }
1304
-    return false;
1305
-  }
1306
-  if (params.cssMode) {
1307
-    const isH = swiper.isHorizontal();
1308
-    let t = -translate;
1309
-    if (rtl) {
1310
-      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
1311
-    }
1312
-    if (speed === 0) {
1313
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1314
-    } else {
1315
-      // eslint-disable-next-line
1316
-      if (wrapperEl.scrollTo) {
1317
-        wrapperEl.scrollTo({
1318
-          [isH ? 'left' : 'top']: t,
1319
-          behavior: 'smooth',
1320
-        });
1321
-      } else {
1322
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1323
-      }
1324
-    }
1325
-    return true;
1326
-  }
1327
-
1328
-  if (speed === 0) {
1329
-    swiper.setTransition(0);
1330
-    swiper.setTranslate(translate);
1331
-    swiper.updateActiveIndex(slideIndex);
1332
-    swiper.updateSlidesClasses();
1333
-    swiper.emit('beforeTransitionStart', speed, internal);
1334
-    swiper.transitionStart(runCallbacks, direction);
1335
-    swiper.transitionEnd(runCallbacks, direction);
1336
-  } else {
1337
-    swiper.setTransition(speed);
1338
-    swiper.setTranslate(translate);
1339
-    swiper.updateActiveIndex(slideIndex);
1340
-    swiper.updateSlidesClasses();
1341
-    swiper.emit('beforeTransitionStart', speed, internal);
1342
-    swiper.transitionStart(runCallbacks, direction);
1343
-    if (!swiper.animating) {
1344
-      swiper.animating = true;
1345
-      if (!swiper.onSlideToWrapperTransitionEnd) {
1346
-        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
1347
-          if (!swiper || swiper.destroyed) return;
1348
-          if (e.target !== this) return;
1349
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1350
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
1351
-          swiper.onSlideToWrapperTransitionEnd = null;
1352
-          delete swiper.onSlideToWrapperTransitionEnd;
1353
-          swiper.transitionEnd(runCallbacks, direction);
1354
-        };
1355
-      }
1356
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1357
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
1358
-    }
1359
-  }
1360
-
1361
-  return true;
1362
-}
1363
-
1364
-function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
1365
-  const swiper = this;
1366
-  let newIndex = index;
1367
-  if (swiper.params.loop) {
1368
-    newIndex += swiper.loopedSlides;
1369
-  }
1370
-
1371
-  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
1372
-}
1373
-
1374
-/* eslint no-unused-vars: "off" */
1375
-function slideNext (speed = this.params.speed, runCallbacks = true, internal) {
1376
-  const swiper = this;
1377
-  const { params, animating } = swiper;
1378
-  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
1379
-  if (params.loop) {
1380
-    if (animating) return false;
1381
-    swiper.loopFix();
1382
-    // eslint-disable-next-line
1383
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
1384
-  }
1385
-  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
1386
-}
1387
-
1388
-/* eslint no-unused-vars: "off" */
1389
-function slidePrev (speed = this.params.speed, runCallbacks = true, internal) {
1390
-  const swiper = this;
1391
-  const {
1392
-    params, animating, snapGrid, slidesGrid, rtlTranslate,
1393
-  } = swiper;
1394
-
1395
-  if (params.loop) {
1396
-    if (animating) return false;
1397
-    swiper.loopFix();
1398
-    // eslint-disable-next-line
1399
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
1400
-  }
1401
-  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
1402
-  function normalize(val) {
1403
-    if (val < 0) return -Math.floor(Math.abs(val));
1404
-    return Math.floor(val);
1405
-  }
1406
-  const normalizedTranslate = normalize(translate);
1407
-  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
1408
-  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
1409
-
1410
-  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
1411
-  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
1412
-  if (typeof prevSnap === 'undefined' && params.cssMode) {
1413
-    snapGrid.forEach((snap) => {
1414
-      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
1415
-    });
1416
-  }
1417
-  let prevIndex;
1418
-  if (typeof prevSnap !== 'undefined') {
1419
-    prevIndex = slidesGrid.indexOf(prevSnap);
1420
-    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
1421
-  }
1422
-  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
1423
-}
1424
-
1425
-/* eslint no-unused-vars: "off" */
1426
-function slideReset (speed = this.params.speed, runCallbacks = true, internal) {
1427
-  const swiper = this;
1428
-  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
1429
-}
1430
-
1431
-/* eslint no-unused-vars: "off" */
1432
-function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
1433
-  const swiper = this;
1434
-  let index = swiper.activeIndex;
1435
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
1436
-  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
1437
-
1438
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1439
-
1440
-  if (translate >= swiper.snapGrid[snapIndex]) {
1441
-    // The current translate is on or after the current snap index, so the choice
1442
-    // is between the current index and the one after it.
1443
-    const currentSnap = swiper.snapGrid[snapIndex];
1444
-    const nextSnap = swiper.snapGrid[snapIndex + 1];
1445
-    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
1446
-      index += swiper.params.slidesPerGroup;
1447
-    }
1448
-  } else {
1449
-    // The current translate is before the current snap index, so the choice
1450
-    // is between the current index and the one before it.
1451
-    const prevSnap = swiper.snapGrid[snapIndex - 1];
1452
-    const currentSnap = swiper.snapGrid[snapIndex];
1453
-    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {
1454
-      index -= swiper.params.slidesPerGroup;
1455
-    }
1456
-  }
1457
-  index = Math.max(index, 0);
1458
-  index = Math.min(index, swiper.slidesGrid.length - 1);
1459
-
1460
-  return swiper.slideTo(index, speed, runCallbacks, internal);
1461
-}
1462
-
1463
-function slideToClickedSlide () {
1464
-  const swiper = this;
1465
-  const { params, $wrapperEl } = swiper;
1466
-
1467
-  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
1468
-  let slideToIndex = swiper.clickedIndex;
1469
-  let realIndex;
1470
-  if (params.loop) {
1471
-    if (swiper.animating) return;
1472
-    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
1473
-    if (params.centeredSlides) {
1474
-      if (
1475
-        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
1476
-        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
1477
-      ) {
1478
-        swiper.loopFix();
1479
-        slideToIndex = $wrapperEl
1480
-          .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
1481
-          .eq(0)
1482
-          .index();
1483
-
1484
-        Utils.nextTick(() => {
1485
-          swiper.slideTo(slideToIndex);
1486
-        });
1487
-      } else {
1488
-        swiper.slideTo(slideToIndex);
1489
-      }
1490
-    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
1491
-      swiper.loopFix();
1492
-      slideToIndex = $wrapperEl
1493
-        .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
1494
-        .eq(0)
1495
-        .index();
1496
-
1497
-      Utils.nextTick(() => {
1498
-        swiper.slideTo(slideToIndex);
1499
-      });
1500
-    } else {
1501
-      swiper.slideTo(slideToIndex);
1502
-    }
1503
-  } else {
1504
-    swiper.slideTo(slideToIndex);
1505
-  }
1506
-}
1507
-
1508
-var slide = {
1509
-  slideTo,
1510
-  slideToLoop,
1511
-  slideNext,
1512
-  slidePrev,
1513
-  slideReset,
1514
-  slideToClosest,
1515
-  slideToClickedSlide,
1516
-};
1517
-
1518
-function loopCreate () {
1519
-  const swiper = this;
1520
-  const { params, $wrapperEl } = swiper;
1521
-  // Remove duplicated slides
1522
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
1523
-
1524
-  let slides = $wrapperEl.children(`.${params.slideClass}`);
1525
-
1526
-  if (params.loopFillGroupWithBlank) {
1527
-    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
1528
-    if (blankSlidesNum !== params.slidesPerGroup) {
1529
-      for (let i = 0; i < blankSlidesNum; i += 1) {
1530
-        const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
1531
-        $wrapperEl.append(blankNode);
1532
-      }
1533
-      slides = $wrapperEl.children(`.${params.slideClass}`);
1534
-    }
1535
-  }
1536
-
1537
-  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
1538
-
1539
-  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
1540
-  swiper.loopedSlides += params.loopAdditionalSlides;
1541
-  if (swiper.loopedSlides > slides.length) {
1542
-    swiper.loopedSlides = slides.length;
1543
-  }
1544
-
1545
-  const prependSlides = [];
1546
-  const appendSlides = [];
1547
-  slides.each((index, el) => {
1548
-    const slide = $(el);
1549
-    if (index < swiper.loopedSlides) appendSlides.push(el);
1550
-    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);
1551
-    slide.attr('data-swiper-slide-index', index);
1552
-  });
1553
-  for (let i = 0; i < appendSlides.length; i += 1) {
1554
-    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
1555
-  }
1556
-  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
1557
-    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
1558
-  }
1559
-}
1560
-
1561
-function loopFix () {
1562
-  const swiper = this;
1563
-
1564
-  swiper.emit('beforeLoopFix');
1565
-
1566
-  const {
1567
-    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,
1568
-  } = swiper;
1569
-  let newIndex;
1570
-  swiper.allowSlidePrev = true;
1571
-  swiper.allowSlideNext = true;
1572
-
1573
-  const snapTranslate = -snapGrid[activeIndex];
1574
-  const diff = snapTranslate - swiper.getTranslate();
1575
-
1576
-  // Fix For Negative Oversliding
1577
-  if (activeIndex < loopedSlides) {
1578
-    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
1579
-    newIndex += loopedSlides;
1580
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
1581
-    if (slideChanged && diff !== 0) {
1582
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
1583
-    }
1584
-  } else if (activeIndex >= slides.length - loopedSlides) {
1585
-    // Fix For Positive Oversliding
1586
-    newIndex = -slides.length + activeIndex + loopedSlides;
1587
-    newIndex += loopedSlides;
1588
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
1589
-    if (slideChanged && diff !== 0) {
1590
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
1591
-    }
1592
-  }
1593
-  swiper.allowSlidePrev = allowSlidePrev;
1594
-  swiper.allowSlideNext = allowSlideNext;
1595
-
1596
-  swiper.emit('loopFix');
1597
-}
1598
-
1599
-function loopDestroy () {
1600
-  const swiper = this;
1601
-  const { $wrapperEl, params, slides } = swiper;
1602
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
1603
-  slides.removeAttr('data-swiper-slide-index');
1604
-}
1605
-
1606
-var loop = {
1607
-  loopCreate,
1608
-  loopFix,
1609
-  loopDestroy,
1610
-};
1611
-
1612
-function setGrabCursor (moving) {
1613
-  const swiper = this;
1614
-  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
1615
-  const el = swiper.el;
1616
-  el.style.cursor = 'move';
1617
-  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
1618
-  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
1619
-  el.style.cursor = moving ? 'grabbing' : 'grab';
1620
-}
1621
-
1622
-function unsetGrabCursor () {
1623
-  const swiper = this;
1624
-  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
1625
-  swiper.el.style.cursor = '';
1626
-}
1627
-
1628
-var grabCursor = {
1629
-  setGrabCursor,
1630
-  unsetGrabCursor,
1631
-};
1632
-
1633
-function appendSlide (slides) {
1634
-  const swiper = this;
1635
-  const { $wrapperEl, params } = swiper;
1636
-  if (params.loop) {
1637
-    swiper.loopDestroy();
1638
-  }
1639
-  if (typeof slides === 'object' && 'length' in slides) {
1640
-    for (let i = 0; i < slides.length; i += 1) {
1641
-      if (slides[i]) $wrapperEl.append(slides[i]);
1642
-    }
1643
-  } else {
1644
-    $wrapperEl.append(slides);
1645
-  }
1646
-  if (params.loop) {
1647
-    swiper.loopCreate();
1648
-  }
1649
-  if (!(params.observer && Support.observer)) {
1650
-    swiper.update();
1651
-  }
1652
-}
1653
-
1654
-function prependSlide (slides) {
1655
-  const swiper = this;
1656
-  const { params, $wrapperEl, activeIndex } = swiper;
1657
-
1658
-  if (params.loop) {
1659
-    swiper.loopDestroy();
1660
-  }
1661
-  let newActiveIndex = activeIndex + 1;
1662
-  if (typeof slides === 'object' && 'length' in slides) {
1663
-    for (let i = 0; i < slides.length; i += 1) {
1664
-      if (slides[i]) $wrapperEl.prepend(slides[i]);
1665
-    }
1666
-    newActiveIndex = activeIndex + slides.length;
1667
-  } else {
1668
-    $wrapperEl.prepend(slides);
1669
-  }
1670
-  if (params.loop) {
1671
-    swiper.loopCreate();
1672
-  }
1673
-  if (!(params.observer && Support.observer)) {
1674
-    swiper.update();
1675
-  }
1676
-  swiper.slideTo(newActiveIndex, 0, false);
1677
-}
1678
-
1679
-function addSlide (index, slides) {
1680
-  const swiper = this;
1681
-  const { $wrapperEl, params, activeIndex } = swiper;
1682
-  let activeIndexBuffer = activeIndex;
1683
-  if (params.loop) {
1684
-    activeIndexBuffer -= swiper.loopedSlides;
1685
-    swiper.loopDestroy();
1686
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
1687
-  }
1688
-  const baseLength = swiper.slides.length;
1689
-  if (index <= 0) {
1690
-    swiper.prependSlide(slides);
1691
-    return;
1692
-  }
1693
-  if (index >= baseLength) {
1694
-    swiper.appendSlide(slides);
1695
-    return;
1696
-  }
1697
-  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
1698
-
1699
-  const slidesBuffer = [];
1700
-  for (let i = baseLength - 1; i >= index; i -= 1) {
1701
-    const currentSlide = swiper.slides.eq(i);
1702
-    currentSlide.remove();
1703
-    slidesBuffer.unshift(currentSlide);
1704
-  }
1705
-
1706
-  if (typeof slides === 'object' && 'length' in slides) {
1707
-    for (let i = 0; i < slides.length; i += 1) {
1708
-      if (slides[i]) $wrapperEl.append(slides[i]);
1709
-    }
1710
-    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
1711
-  } else {
1712
-    $wrapperEl.append(slides);
1713
-  }
1714
-
1715
-  for (let i = 0; i < slidesBuffer.length; i += 1) {
1716
-    $wrapperEl.append(slidesBuffer[i]);
1717
-  }
1718
-
1719
-  if (params.loop) {
1720
-    swiper.loopCreate();
1721
-  }
1722
-  if (!(params.observer && Support.observer)) {
1723
-    swiper.update();
1724
-  }
1725
-  if (params.loop) {
1726
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
1727
-  } else {
1728
-    swiper.slideTo(newActiveIndex, 0, false);
1729
-  }
1730
-}
1731
-
1732
-function removeSlide (slidesIndexes) {
1733
-  const swiper = this;
1734
-  const { params, $wrapperEl, activeIndex } = swiper;
1735
-
1736
-  let activeIndexBuffer = activeIndex;
1737
-  if (params.loop) {
1738
-    activeIndexBuffer -= swiper.loopedSlides;
1739
-    swiper.loopDestroy();
1740
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
1741
-  }
1742
-  let newActiveIndex = activeIndexBuffer;
1743
-  let indexToRemove;
1744
-
1745
-  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
1746
-    for (let i = 0; i < slidesIndexes.length; i += 1) {
1747
-      indexToRemove = slidesIndexes[i];
1748
-      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
1749
-      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
1750
-    }
1751
-    newActiveIndex = Math.max(newActiveIndex, 0);
1752
-  } else {
1753
-    indexToRemove = slidesIndexes;
1754
-    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
1755
-    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
1756
-    newActiveIndex = Math.max(newActiveIndex, 0);
1757
-  }
1758
-
1759
-  if (params.loop) {
1760
-    swiper.loopCreate();
1761
-  }
1762
-
1763
-  if (!(params.observer && Support.observer)) {
1764
-    swiper.update();
1765
-  }
1766
-  if (params.loop) {
1767
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
1768
-  } else {
1769
-    swiper.slideTo(newActiveIndex, 0, false);
1770
-  }
1771
-}
1772
-
1773
-function removeAllSlides () {
1774
-  const swiper = this;
1775
-
1776
-  const slidesIndexes = [];
1777
-  for (let i = 0; i < swiper.slides.length; i += 1) {
1778
-    slidesIndexes.push(i);
1779
-  }
1780
-  swiper.removeSlide(slidesIndexes);
1781
-}
1782
-
1783
-var manipulation = {
1784
-  appendSlide,
1785
-  prependSlide,
1786
-  addSlide,
1787
-  removeSlide,
1788
-  removeAllSlides,
1789
-};
1790
-
1791
-const Device = (function Device() {
1792
-  const platform = window.navigator.platform;
1793
-  const ua = window.navigator.userAgent;
1794
-
1795
-  const device = {
1796
-    ios: false,
1797
-    android: false,
1798
-    androidChrome: false,
1799
-    desktop: false,
1800
-    iphone: false,
1801
-    ipod: false,
1802
-    ipad: false,
1803
-    edge: false,
1804
-    ie: false,
1805
-    firefox: false,
1806
-    macos: false,
1807
-    windows: false,
1808
-    cordova: !!(window.cordova || window.phonegap),
1809
-    phonegap: !!(window.cordova || window.phonegap),
1810
-    electron: false,
1811
-  };
1812
-
1813
-  const screenWidth = window.screen.width;
1814
-  const screenHeight = window.screen.height;
1815
-
1816
-  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1817
-  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1818
-  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1819
-  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1820
-  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
1821
-  const edge = ua.indexOf('Edge/') >= 0;
1822
-  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
1823
-  const windows = platform === 'Win32';
1824
-  const electron = ua.toLowerCase().indexOf('electron') >= 0;
1825
-  let macos = platform === 'MacIntel';
1826
-
1827
-  // iPadOs 13 fix
1828
-  if (!ipad
1829
-    && macos
1830
-    && Support.touch
1831
-    && (
1832
-      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
1833
-      || (screenWidth === 834 && screenHeight === 1194) // Pro 11
1834
-      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
1835
-      || (screenWidth === 768 && screenHeight === 1024) // other
1836
-    )
1837
-  ) {
1838
-    ipad = ua.match(/(Version)\/([\d.]+)/);
1839
-    macos = false;
1840
-  }
1841
-
1842
-  device.ie = ie;
1843
-  device.edge = edge;
1844
-  device.firefox = firefox;
1845
-
1846
-  // Android
1847
-  if (android && !windows) {
1848
-    device.os = 'android';
1849
-    device.osVersion = android[2];
1850
-    device.android = true;
1851
-    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
1852
-  }
1853
-  if (ipad || iphone || ipod) {
1854
-    device.os = 'ios';
1855
-    device.ios = true;
1856
-  }
1857
-  // iOS
1858
-  if (iphone && !ipod) {
1859
-    device.osVersion = iphone[2].replace(/_/g, '.');
1860
-    device.iphone = true;
1861
-  }
1862
-  if (ipad) {
1863
-    device.osVersion = ipad[2].replace(/_/g, '.');
1864
-    device.ipad = true;
1865
-  }
1866
-  if (ipod) {
1867
-    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
1868
-    device.ipod = true;
1869
-  }
1870
-  // iOS 8+ changed UA
1871
-  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
1872
-    if (device.osVersion.split('.')[0] === '10') {
1873
-      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
1874
-    }
1875
-  }
1876
-
1877
-  // Webview
1878
-  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))
1879
-    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);
1880
-  device.webview = device.webView;
1881
-  device.standalone = device.webView;
1882
-
1883
-  // Desktop
1884
-  device.desktop = !(device.ios || device.android) || electron;
1885
-  if (device.desktop) {
1886
-    device.electron = electron;
1887
-    device.macos = macos;
1888
-    device.windows = windows;
1889
-    if (device.macos) {
1890
-      device.os = 'macos';
1891
-    }
1892
-    if (device.windows) {
1893
-      device.os = 'windows';
1894
-    }
1895
-  }
1896
-
1897
-  // Pixel Ratio
1898
-  device.pixelRatio = window.devicePixelRatio || 1;
1899
-
1900
-  // Export object
1901
-  return device;
1902
-}());
1903
-
1904
-function onTouchStart (event) {
1905
-  const swiper = this;
1906
-  const data = swiper.touchEventsData;
1907
-  const { params, touches } = swiper;
1908
-
1909
-  if (swiper.animating && params.preventInteractionOnTransition) {
1910
-    return;
1911
-  }
1912
-  let e = event;
1913
-  if (e.originalEvent) e = e.originalEvent;
1914
-  const $targetEl = $(e.target);
1915
-
1916
-  if (params.touchEventsTarget === 'wrapper') {
1917
-    if (!$targetEl.closest(swiper.wrapperEl).length) return;
1918
-  }
1919
-  data.isTouchEvent = e.type === 'touchstart';
1920
-  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
1921
-  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
1922
-  if (data.isTouched && data.isMoved) return;
1923
-  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
1924
-    swiper.allowClick = true;
1925
-    return;
1926
-  }
1927
-  if (params.swipeHandler) {
1928
-    if (!$targetEl.closest(params.swipeHandler)[0]) return;
1929
-  }
1930
-
1931
-  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
1932
-  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
1933
-  const startX = touches.currentX;
1934
-  const startY = touches.currentY;
1935
-
1936
-  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
1937
-
1938
-  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
1939
-  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
1940
-  if (
1941
-    edgeSwipeDetection
1942
-    && ((startX <= edgeSwipeThreshold)
1943
-    || (startX >= window.screen.width - edgeSwipeThreshold))
1944
-  ) {
1945
-    return;
1946
-  }
1947
-
1948
-  Utils.extend(data, {
1949
-    isTouched: true,
1950
-    isMoved: false,
1951
-    allowTouchCallbacks: true,
1952
-    isScrolling: undefined,
1953
-    startMoving: undefined,
1954
-  });
1955
-
1956
-  touches.startX = startX;
1957
-  touches.startY = startY;
1958
-  data.touchStartTime = Utils.now();
1959
-  swiper.allowClick = true;
1960
-  swiper.updateSize();
1961
-  swiper.swipeDirection = undefined;
1962
-  if (params.threshold > 0) data.allowThresholdMove = false;
1963
-  if (e.type !== 'touchstart') {
1964
-    let preventDefault = true;
1965
-    if ($targetEl.is(data.formElements)) preventDefault = false;
1966
-    if (
1967
-      document$1.activeElement
1968
-      && $(document$1.activeElement).is(data.formElements)
1969
-      && document$1.activeElement !== $targetEl[0]
1970
-    ) {
1971
-      document$1.activeElement.blur();
1972
-    }
1973
-
1974
-    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
1975
-    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
1976
-      e.preventDefault();
1977
-    }
1978
-  }
1979
-  swiper.emit('touchStart', e);
1980
-}
1981
-
1982
-function onTouchMove (event) {
1983
-  const swiper = this;
1984
-  const data = swiper.touchEventsData;
1985
-  const { params, touches, rtlTranslate: rtl } = swiper;
1986
-  let e = event;
1987
-  if (e.originalEvent) e = e.originalEvent;
1988
-  if (!data.isTouched) {
1989
-    if (data.startMoving && data.isScrolling) {
1990
-      swiper.emit('touchMoveOpposite', e);
1991
-    }
1992
-    return;
1993
-  }
1994
-  if (data.isTouchEvent && e.type !== 'touchmove') return;
1995
-  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
1996
-  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
1997
-  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
1998
-  if (e.preventedByNestedSwiper) {
1999
-    touches.startX = pageX;
2000
-    touches.startY = pageY;
2001
-    return;
2002
-  }
2003
-  if (!swiper.allowTouchMove) {
2004
-    // isMoved = true;
2005
-    swiper.allowClick = false;
2006
-    if (data.isTouched) {
2007
-      Utils.extend(touches, {
2008
-        startX: pageX,
2009
-        startY: pageY,
2010
-        currentX: pageX,
2011
-        currentY: pageY,
2012
-      });
2013
-      data.touchStartTime = Utils.now();
2014
-    }
2015
-    return;
2016
-  }
2017
-  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2018
-    if (swiper.isVertical()) {
2019
-      // Vertical
2020
-      if (
2021
-        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
2022
-        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
2023
-      ) {
2024
-        data.isTouched = false;
2025
-        data.isMoved = false;
2026
-        return;
2027
-      }
2028
-    } else if (
2029
-      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
2030
-      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
2031
-    ) {
2032
-      return;
2033
-    }
2034
-  }
2035
-  if (data.isTouchEvent && document$1.activeElement) {
2036
-    if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {
2037
-      data.isMoved = true;
2038
-      swiper.allowClick = false;
2039
-      return;
2040
-    }
2041
-  }
2042
-  if (data.allowTouchCallbacks) {
2043
-    swiper.emit('touchMove', e);
2044
-  }
2045
-  if (e.targetTouches && e.targetTouches.length > 1) return;
2046
-
2047
-  touches.currentX = pageX;
2048
-  touches.currentY = pageY;
2049
-
2050
-  const diffX = touches.currentX - touches.startX;
2051
-  const diffY = touches.currentY - touches.startY;
2052
-  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;
2053
-
2054
-  if (typeof data.isScrolling === 'undefined') {
2055
-    let touchAngle;
2056
-    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
2057
-      data.isScrolling = false;
2058
-    } else {
2059
-      // eslint-disable-next-line
2060
-      if ((diffX * diffX) + (diffY * diffY) >= 25) {
2061
-        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
2062
-        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
2063
-      }
2064
-    }
2065
-  }
2066
-  if (data.isScrolling) {
2067
-    swiper.emit('touchMoveOpposite', e);
2068
-  }
2069
-  if (typeof data.startMoving === 'undefined') {
2070
-    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2071
-      data.startMoving = true;
2072
-    }
2073
-  }
2074
-  if (data.isScrolling) {
2075
-    data.isTouched = false;
2076
-    return;
2077
-  }
2078
-  if (!data.startMoving) {
2079
-    return;
2080
-  }
2081
-  swiper.allowClick = false;
2082
-  if (!params.cssMode && e.cancelable) {
2083
-    e.preventDefault();
2084
-  }
2085
-  if (params.touchMoveStopPropagation && !params.nested) {
2086
-    e.stopPropagation();
2087
-  }
2088
-
2089
-  if (!data.isMoved) {
2090
-    if (params.loop) {
2091
-      swiper.loopFix();
2092
-    }
2093
-    data.startTranslate = swiper.getTranslate();
2094
-    swiper.setTransition(0);
2095
-    if (swiper.animating) {
2096
-      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
2097
-    }
2098
-    data.allowMomentumBounce = false;
2099
-    // Grab Cursor
2100
-    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2101
-      swiper.setGrabCursor(true);
2102
-    }
2103
-    swiper.emit('sliderFirstMove', e);
2104
-  }
2105
-  swiper.emit('sliderMove', e);
2106
-  data.isMoved = true;
2107
-
2108
-  let diff = swiper.isHorizontal() ? diffX : diffY;
2109
-  touches.diff = diff;
2110
-
2111
-  diff *= params.touchRatio;
2112
-  if (rtl) diff = -diff;
2113
-
2114
-  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
2115
-  data.currentTranslate = diff + data.startTranslate;
2116
-
2117
-  let disableParentSwiper = true;
2118
-  let resistanceRatio = params.resistanceRatio;
2119
-  if (params.touchReleaseOnEdges) {
2120
-    resistanceRatio = 0;
2121
-  }
2122
-  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
2123
-    disableParentSwiper = false;
2124
-    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);
2125
-  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
2126
-    disableParentSwiper = false;
2127
-    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);
2128
-  }
2129
-
2130
-  if (disableParentSwiper) {
2131
-    e.preventedByNestedSwiper = true;
2132
-  }
2133
-
2134
-  // Directions locks
2135
-  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
2136
-    data.currentTranslate = data.startTranslate;
2137
-  }
2138
-  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
2139
-    data.currentTranslate = data.startTranslate;
2140
-  }
2141
-
2142
-
2143
-  // Threshold
2144
-  if (params.threshold > 0) {
2145
-    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2146
-      if (!data.allowThresholdMove) {
2147
-        data.allowThresholdMove = true;
2148
-        touches.startX = touches.currentX;
2149
-        touches.startY = touches.currentY;
2150
-        data.currentTranslate = data.startTranslate;
2151
-        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2152
-        return;
2153
-      }
2154
-    } else {
2155
-      data.currentTranslate = data.startTranslate;
2156
-      return;
2157
-    }
2158
-  }
2159
-
2160
-  if (!params.followFinger || params.cssMode) return;
2161
-
2162
-  // Update active index in free mode
2163
-  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
2164
-    swiper.updateActiveIndex();
2165
-    swiper.updateSlidesClasses();
2166
-  }
2167
-  if (params.freeMode) {
2168
-    // Velocity
2169
-    if (data.velocities.length === 0) {
2170
-      data.velocities.push({
2171
-        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
2172
-        time: data.touchStartTime,
2173
-      });
2174
-    }
2175
-    data.velocities.push({
2176
-      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
2177
-      time: Utils.now(),
2178
-    });
2179
-  }
2180
-  // Update progress
2181
-  swiper.updateProgress(data.currentTranslate);
2182
-  // Update translate
2183
-  swiper.setTranslate(data.currentTranslate);
2184
-}
2185
-
2186
-function onTouchEnd (event) {
2187
-  const swiper = this;
2188
-  const data = swiper.touchEventsData;
2189
-
2190
-  const {
2191
-    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,
2192
-  } = swiper;
2193
-  let e = event;
2194
-  if (e.originalEvent) e = e.originalEvent;
2195
-  if (data.allowTouchCallbacks) {
2196
-    swiper.emit('touchEnd', e);
2197
-  }
2198
-  data.allowTouchCallbacks = false;
2199
-  if (!data.isTouched) {
2200
-    if (data.isMoved && params.grabCursor) {
2201
-      swiper.setGrabCursor(false);
2202
-    }
2203
-    data.isMoved = false;
2204
-    data.startMoving = false;
2205
-    return;
2206
-  }
2207
-  // Return Grab Cursor
2208
-  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2209
-    swiper.setGrabCursor(false);
2210
-  }
2211
-
2212
-  // Time diff
2213
-  const touchEndTime = Utils.now();
2214
-  const timeDiff = touchEndTime - data.touchStartTime;
2215
-
2216
-  // Tap, doubleTap, Click
2217
-  if (swiper.allowClick) {
2218
-    swiper.updateClickedSlide(e);
2219
-    swiper.emit('tap click', e);
2220
-    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
2221
-      swiper.emit('doubleTap doubleClick', e);
2222
-    }
2223
-  }
2224
-
2225
-  data.lastClickTime = Utils.now();
2226
-  Utils.nextTick(() => {
2227
-    if (!swiper.destroyed) swiper.allowClick = true;
2228
-  });
2229
-
2230
-  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
2231
-    data.isTouched = false;
2232
-    data.isMoved = false;
2233
-    data.startMoving = false;
2234
-    return;
2235
-  }
2236
-  data.isTouched = false;
2237
-  data.isMoved = false;
2238
-  data.startMoving = false;
2239
-
2240
-  let currentPos;
2241
-  if (params.followFinger) {
2242
-    currentPos = rtl ? swiper.translate : -swiper.translate;
2243
-  } else {
2244
-    currentPos = -data.currentTranslate;
2245
-  }
2246
-
2247
-  if (params.cssMode) {
2248
-    return;
2249
-  }
2250
-
2251
-  if (params.freeMode) {
2252
-    if (currentPos < -swiper.minTranslate()) {
2253
-      swiper.slideTo(swiper.activeIndex);
2254
-      return;
2255
-    }
2256
-    if (currentPos > -swiper.maxTranslate()) {
2257
-      if (swiper.slides.length < snapGrid.length) {
2258
-        swiper.slideTo(snapGrid.length - 1);
2259
-      } else {
2260
-        swiper.slideTo(swiper.slides.length - 1);
2261
-      }
2262
-      return;
2263
-    }
2264
-
2265
-    if (params.freeModeMomentum) {
2266
-      if (data.velocities.length > 1) {
2267
-        const lastMoveEvent = data.velocities.pop();
2268
-        const velocityEvent = data.velocities.pop();
2269
-
2270
-        const distance = lastMoveEvent.position - velocityEvent.position;
2271
-        const time = lastMoveEvent.time - velocityEvent.time;
2272
-        swiper.velocity = distance / time;
2273
-        swiper.velocity /= 2;
2274
-        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
2275
-          swiper.velocity = 0;
2276
-        }
2277
-        // this implies that the user stopped moving a finger then released.
2278
-        // There would be no events with distance zero, so the last event is stale.
2279
-        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
2280
-          swiper.velocity = 0;
2281
-        }
2282
-      } else {
2283
-        swiper.velocity = 0;
2284
-      }
2285
-      swiper.velocity *= params.freeModeMomentumVelocityRatio;
2286
-
2287
-      data.velocities.length = 0;
2288
-      let momentumDuration = 1000 * params.freeModeMomentumRatio;
2289
-      const momentumDistance = swiper.velocity * momentumDuration;
2290
-
2291
-      let newPosition = swiper.translate + momentumDistance;
2292
-      if (rtl) newPosition = -newPosition;
2293
-
2294
-      let doBounce = false;
2295
-      let afterBouncePosition;
2296
-      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
2297
-      let needsLoopFix;
2298
-      if (newPosition < swiper.maxTranslate()) {
2299
-        if (params.freeModeMomentumBounce) {
2300
-          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
2301
-            newPosition = swiper.maxTranslate() - bounceAmount;
2302
-          }
2303
-          afterBouncePosition = swiper.maxTranslate();
2304
-          doBounce = true;
2305
-          data.allowMomentumBounce = true;
2306
-        } else {
2307
-          newPosition = swiper.maxTranslate();
2308
-        }
2309
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
2310
-      } else if (newPosition > swiper.minTranslate()) {
2311
-        if (params.freeModeMomentumBounce) {
2312
-          if (newPosition - swiper.minTranslate() > bounceAmount) {
2313
-            newPosition = swiper.minTranslate() + bounceAmount;
2314
-          }
2315
-          afterBouncePosition = swiper.minTranslate();
2316
-          doBounce = true;
2317
-          data.allowMomentumBounce = true;
2318
-        } else {
2319
-          newPosition = swiper.minTranslate();
2320
-        }
2321
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
2322
-      } else if (params.freeModeSticky) {
2323
-        let nextSlide;
2324
-        for (let j = 0; j < snapGrid.length; j += 1) {
2325
-          if (snapGrid[j] > -newPosition) {
2326
-            nextSlide = j;
2327
-            break;
2328
-          }
2329
-        }
2330
-
2331
-        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
2332
-          newPosition = snapGrid[nextSlide];
2333
-        } else {
2334
-          newPosition = snapGrid[nextSlide - 1];
2335
-        }
2336
-        newPosition = -newPosition;
2337
-      }
2338
-      if (needsLoopFix) {
2339
-        swiper.once('transitionEnd', () => {
2340
-          swiper.loopFix();
2341
-        });
2342
-      }
2343
-      // Fix duration
2344
-      if (swiper.velocity !== 0) {
2345
-        if (rtl) {
2346
-          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
2347
-        } else {
2348
-          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
2349
-        }
2350
-        if (params.freeModeSticky) {
2351
-          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
2352
-          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
2353
-          // It's easy to see this when simulating touch with mouse events. To fix this,
2354
-          // limit single-slide swipes to the default slide duration. This also has the
2355
-          // nice side effect of matching slide speed if the user stopped moving before
2356
-          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
2357
-          // For faster swipes, also apply limits (albeit higher ones).
2358
-          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
2359
-          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
2360
-          if (moveDistance < currentSlideSize) {
2361
-            momentumDuration = params.speed;
2362
-          } else if (moveDistance < 2 * currentSlideSize) {
2363
-            momentumDuration = params.speed * 1.5;
2364
-          } else {
2365
-            momentumDuration = params.speed * 2.5;
2366
-          }
2367
-        }
2368
-      } else if (params.freeModeSticky) {
2369
-        swiper.slideToClosest();
2370
-        return;
2371
-      }
2372
-
2373
-      if (params.freeModeMomentumBounce && doBounce) {
2374
-        swiper.updateProgress(afterBouncePosition);
2375
-        swiper.setTransition(momentumDuration);
2376
-        swiper.setTranslate(newPosition);
2377
-        swiper.transitionStart(true, swiper.swipeDirection);
2378
-        swiper.animating = true;
2379
-        $wrapperEl.transitionEnd(() => {
2380
-          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
2381
-          swiper.emit('momentumBounce');
2382
-          swiper.setTransition(params.speed);
2383
-          setTimeout(() => {
2384
-            swiper.setTranslate(afterBouncePosition);
2385
-            $wrapperEl.transitionEnd(() => {
2386
-              if (!swiper || swiper.destroyed) return;
2387
-              swiper.transitionEnd();
2388
-            });
2389
-          }, 0);
2390
-        });
2391
-      } else if (swiper.velocity) {
2392
-        swiper.updateProgress(newPosition);
2393
-        swiper.setTransition(momentumDuration);
2394
-        swiper.setTranslate(newPosition);
2395
-        swiper.transitionStart(true, swiper.swipeDirection);
2396
-        if (!swiper.animating) {
2397
-          swiper.animating = true;
2398
-          $wrapperEl.transitionEnd(() => {
2399
-            if (!swiper || swiper.destroyed) return;
2400
-            swiper.transitionEnd();
2401
-          });
2402
-        }
2403
-      } else {
2404
-        swiper.updateProgress(newPosition);
2405
-      }
2406
-
2407
-      swiper.updateActiveIndex();
2408
-      swiper.updateSlidesClasses();
2409
-    } else if (params.freeModeSticky) {
2410
-      swiper.slideToClosest();
2411
-      return;
2412
-    }
2413
-
2414
-    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
2415
-      swiper.updateProgress();
2416
-      swiper.updateActiveIndex();
2417
-      swiper.updateSlidesClasses();
2418
-    }
2419
-    return;
2420
-  }
2421
-
2422
-  // Find current slide
2423
-  let stopIndex = 0;
2424
-  let groupSize = swiper.slidesSizesGrid[0];
2425
-  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
2426
-    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
2427
-    if (typeof slidesGrid[i + increment] !== 'undefined') {
2428
-      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
2429
-        stopIndex = i;
2430
-        groupSize = slidesGrid[i + increment] - slidesGrid[i];
2431
-      }
2432
-    } else if (currentPos >= slidesGrid[i]) {
2433
-      stopIndex = i;
2434
-      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
2435
-    }
2436
-  }
2437
-
2438
-  // Find current slide size
2439
-  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
2440
-  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
2441
-
2442
-  if (timeDiff > params.longSwipesMs) {
2443
-    // Long touches
2444
-    if (!params.longSwipes) {
2445
-      swiper.slideTo(swiper.activeIndex);
2446
-      return;
2447
-    }
2448
-    if (swiper.swipeDirection === 'next') {
2449
-      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);
2450
-      else swiper.slideTo(stopIndex);
2451
-    }
2452
-    if (swiper.swipeDirection === 'prev') {
2453
-      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);
2454
-      else swiper.slideTo(stopIndex);
2455
-    }
2456
-  } else {
2457
-    // Short swipes
2458
-    if (!params.shortSwipes) {
2459
-      swiper.slideTo(swiper.activeIndex);
2460
-      return;
2461
-    }
2462
-    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
2463
-    if (!isNavButtonTarget) {
2464
-      if (swiper.swipeDirection === 'next') {
2465
-        swiper.slideTo(stopIndex + increment);
2466
-      }
2467
-      if (swiper.swipeDirection === 'prev') {
2468
-        swiper.slideTo(stopIndex);
2469
-      }
2470
-    } else if (e.target === swiper.navigation.nextEl) {
2471
-      swiper.slideTo(stopIndex + increment);
2472
-    } else {
2473
-      swiper.slideTo(stopIndex);
2474
-    }
2475
-  }
2476
-}
2477
-
2478
-function onResize () {
2479
-  const swiper = this;
2480
-
2481
-  const { params, el } = swiper;
2482
-
2483
-  if (el && el.offsetWidth === 0) return;
2484
-
2485
-  // Breakpoints
2486
-  if (params.breakpoints) {
2487
-    swiper.setBreakpoint();
2488
-  }
2489
-
2490
-  // Save locks
2491
-  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;
2492
-
2493
-  // Disable locks on resize
2494
-  swiper.allowSlideNext = true;
2495
-  swiper.allowSlidePrev = true;
2496
-
2497
-  swiper.updateSize();
2498
-  swiper.updateSlides();
2499
-
2500
-  swiper.updateSlidesClasses();
2501
-  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
2502
-    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
2503
-  } else {
2504
-    swiper.slideTo(swiper.activeIndex, 0, false, true);
2505
-  }
2506
-
2507
-  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
2508
-    swiper.autoplay.run();
2509
-  }
2510
-  // Return locks after resize
2511
-  swiper.allowSlidePrev = allowSlidePrev;
2512
-  swiper.allowSlideNext = allowSlideNext;
2513
-
2514
-  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
2515
-    swiper.checkOverflow();
2516
-  }
2517
-}
2518
-
2519
-function onClick (e) {
2520
-  const swiper = this;
2521
-  if (!swiper.allowClick) {
2522
-    if (swiper.params.preventClicks) e.preventDefault();
2523
-    if (swiper.params.preventClicksPropagation && swiper.animating) {
2524
-      e.stopPropagation();
2525
-      e.stopImmediatePropagation();
2526
-    }
2527
-  }
2528
-}
2529
-
2530
-function onScroll () {
2531
-  const swiper = this;
2532
-  const { wrapperEl, rtlTranslate } = swiper;
2533
-  swiper.previousTranslate = swiper.translate;
2534
-  if (swiper.isHorizontal()) {
2535
-    if (rtlTranslate) {
2536
-      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
2537
-    } else {
2538
-      swiper.translate = -wrapperEl.scrollLeft;
2539
-    }
2540
-  } else {
2541
-    swiper.translate = -wrapperEl.scrollTop;
2542
-  }
2543
-  // eslint-disable-next-line
2544
-  if (swiper.translate === -0) swiper.translate = 0;
2545
-
2546
-  swiper.updateActiveIndex();
2547
-  swiper.updateSlidesClasses();
2548
-
2549
-  let newProgress;
2550
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2551
-  if (translatesDiff === 0) {
2552
-    newProgress = 0;
2553
-  } else {
2554
-    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
2555
-  }
2556
-  if (newProgress !== swiper.progress) {
2557
-    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
2558
-  }
2559
-
2560
-  swiper.emit('setTranslate', swiper.translate, false);
2561
-}
2562
-
2563
-let dummyEventAttached = false;
2564
-function dummyEventListener() {}
2565
-
2566
-function attachEvents() {
2567
-  const swiper = this;
2568
-  const {
2569
-    params, touchEvents, el, wrapperEl,
2570
-  } = swiper;
2571
-
2572
-  swiper.onTouchStart = onTouchStart.bind(swiper);
2573
-  swiper.onTouchMove = onTouchMove.bind(swiper);
2574
-  swiper.onTouchEnd = onTouchEnd.bind(swiper);
2575
-  if (params.cssMode) {
2576
-    swiper.onScroll = onScroll.bind(swiper);
2577
-  }
2578
-
2579
-  swiper.onClick = onClick.bind(swiper);
2580
-
2581
-  const capture = !!params.nested;
2582
-
2583
-  // Touch Events
2584
-  if (!Support.touch && Support.pointerEvents) {
2585
-    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
2586
-    document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
2587
-    document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
2588
-  } else {
2589
-    if (Support.touch) {
2590
-      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
2591
-      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
2592
-      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
2593
-      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
2594
-      if (touchEvents.cancel) {
2595
-        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
2596
-      }
2597
-      if (!dummyEventAttached) {
2598
-        document$1.addEventListener('touchstart', dummyEventListener);
2599
-        dummyEventAttached = true;
2600
-      }
2601
-    }
2602
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
2603
-      el.addEventListener('mousedown', swiper.onTouchStart, false);
2604
-      document$1.addEventListener('mousemove', swiper.onTouchMove, capture);
2605
-      document$1.addEventListener('mouseup', swiper.onTouchEnd, false);
2606
-    }
2607
-  }
2608
-  // Prevent Links Clicks
2609
-  if (params.preventClicks || params.preventClicksPropagation) {
2610
-    el.addEventListener('click', swiper.onClick, true);
2611
-  }
2612
-  if (params.cssMode) {
2613
-    wrapperEl.addEventListener('scroll', swiper.onScroll);
2614
-  }
2615
-
2616
-  // Resize handler
2617
-  if (params.updateOnWindowResize) {
2618
-    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
2619
-  } else {
2620
-    swiper.on('observerUpdate', onResize, true);
2621
-  }
2622
-}
2623
-
2624
-function detachEvents() {
2625
-  const swiper = this;
2626
-
2627
-  const {
2628
-    params, touchEvents, el, wrapperEl,
2629
-  } = swiper;
2630
-
2631
-  const capture = !!params.nested;
2632
-
2633
-  // Touch Events
2634
-  if (!Support.touch && Support.pointerEvents) {
2635
-    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
2636
-    document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
2637
-    document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
2638
-  } else {
2639
-    if (Support.touch) {
2640
-      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
2641
-      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
2642
-      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
2643
-      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
2644
-      if (touchEvents.cancel) {
2645
-        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
2646
-      }
2647
-    }
2648
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
2649
-      el.removeEventListener('mousedown', swiper.onTouchStart, false);
2650
-      document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);
2651
-      document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);
2652
-    }
2653
-  }
2654
-  // Prevent Links Clicks
2655
-  if (params.preventClicks || params.preventClicksPropagation) {
2656
-    el.removeEventListener('click', swiper.onClick, true);
2657
-  }
2658
-
2659
-  if (params.cssMode) {
2660
-    wrapperEl.removeEventListener('scroll', swiper.onScroll);
2661
-  }
2662
-
2663
-  // Resize handler
2664
-  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
2665
-}
2666
-
2667
-var events = {
2668
-  attachEvents,
2669
-  detachEvents,
2670
-};
2671
-
2672
-function setBreakpoint () {
2673
-  const swiper = this;
2674
-  const {
2675
-    activeIndex, initialized, loopedSlides = 0, params, $el,
2676
-  } = swiper;
2677
-  const breakpoints = params.breakpoints;
2678
-  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;
2679
-
2680
-  // Get breakpoint for window width and update parameters
2681
-  const breakpoint = swiper.getBreakpoint(breakpoints);
2682
-
2683
-  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
2684
-    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
2685
-    if (breakpointOnlyParams) {
2686
-      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {
2687
-        const paramValue = breakpointOnlyParams[param];
2688
-        if (typeof paramValue === 'undefined') return;
2689
-        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
2690
-          breakpointOnlyParams[param] = 'auto';
2691
-        } else if (param === 'slidesPerView') {
2692
-          breakpointOnlyParams[param] = parseFloat(paramValue);
2693
-        } else {
2694
-          breakpointOnlyParams[param] = parseInt(paramValue, 10);
2695
-        }
2696
-      });
2697
-    }
2698
-
2699
-    const breakpointParams = breakpointOnlyParams || swiper.originalParams;
2700
-    const wasMultiRow = params.slidesPerColumn > 1;
2701
-    const isMultiRow = breakpointParams.slidesPerColumn > 1;
2702
-    if (wasMultiRow && !isMultiRow) {
2703
-      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);
2704
-    } else if (!wasMultiRow && isMultiRow) {
2705
-      $el.addClass(`${params.containerModifierClass}multirow`);
2706
-      if (breakpointParams.slidesPerColumnFill === 'column') {
2707
-        $el.addClass(`${params.containerModifierClass}multirow-column`);
2708
-      }
2709
-    }
2710
-
2711
-    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
2712
-    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
2713
-
2714
-    if (directionChanged && initialized) {
2715
-      swiper.changeDirection();
2716
-    }
2717
-
2718
-    Utils.extend(swiper.params, breakpointParams);
2719
-
2720
-    Utils.extend(swiper, {
2721
-      allowTouchMove: swiper.params.allowTouchMove,
2722
-      allowSlideNext: swiper.params.allowSlideNext,
2723
-      allowSlidePrev: swiper.params.allowSlidePrev,
2724
-    });
2725
-
2726
-    swiper.currentBreakpoint = breakpoint;
2727
-
2728
-    if (needsReLoop && initialized) {
2729
-      swiper.loopDestroy();
2730
-      swiper.loopCreate();
2731
-      swiper.updateSlides();
2732
-      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
2733
-    }
2734
-
2735
-    swiper.emit('breakpoint', breakpointParams);
2736
-  }
2737
-}
2738
-
2739
-function getBreakpoint (breakpoints) {
2740
-  // Get breakpoint for window width
2741
-  if (!breakpoints) return undefined;
2742
-  let breakpoint = false;
2743
-
2744
-  const points = Object.keys(breakpoints).map((point) => {
2745
-    if (typeof point === 'string' && point.indexOf('@') === 0) {
2746
-      const minRatio = parseFloat(point.substr(1));
2747
-      const value = window.innerHeight * minRatio;
2748
-      return { value, point };
2749
-    }
2750
-    return { value: point, point };
2751
-  });
2752
-
2753
-  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
2754
-  for (let i = 0; i < points.length; i += 1) {
2755
-    const { point, value } = points[i];
2756
-    if (value <= window.innerWidth) {
2757
-      breakpoint = point;
2758
-    }
2759
-  }
2760
-  return breakpoint || 'max';
2761
-}
2762
-
2763
-var breakpoints = { setBreakpoint, getBreakpoint };
2764
-
2765
-function addClasses () {
2766
-  const swiper = this;
2767
-  const {
2768
-    classNames, params, rtl, $el,
2769
-  } = swiper;
2770
-  const suffixes = [];
2771
-
2772
-  suffixes.push('initialized');
2773
-  suffixes.push(params.direction);
2774
-
2775
-  if (params.freeMode) {
2776
-    suffixes.push('free-mode');
2777
-  }
2778
-  if (params.autoHeight) {
2779
-    suffixes.push('autoheight');
2780
-  }
2781
-  if (rtl) {
2782
-    suffixes.push('rtl');
2783
-  }
2784
-  if (params.slidesPerColumn > 1) {
2785
-    suffixes.push('multirow');
2786
-    if (params.slidesPerColumnFill === 'column') {
2787
-      suffixes.push('multirow-column');
2788
-    }
2789
-  }
2790
-  if (Device.android) {
2791
-    suffixes.push('android');
2792
-  }
2793
-  if (Device.ios) {
2794
-    suffixes.push('ios');
2795
-  }
2796
-
2797
-  if (params.cssMode) {
2798
-    suffixes.push('css-mode');
2799
-  }
2800
-
2801
-  suffixes.forEach((suffix) => {
2802
-    classNames.push(params.containerModifierClass + suffix);
2803
-  });
2804
-
2805
-  $el.addClass(classNames.join(' '));
2806
-}
2807
-
2808
-function removeClasses () {
2809
-  const swiper = this;
2810
-  const { $el, classNames } = swiper;
2811
-
2812
-  $el.removeClass(classNames.join(' '));
2813
-}
2814
-
2815
-var classes = { addClasses, removeClasses };
2816
-
2817
-function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
2818
-  let image;
2819
-  function onReady() {
2820
-    if (callback) callback();
2821
-  }
2822
-  const isPicture = $(imageEl).parent('picture')[0];
2823
-
2824
-  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
2825
-    if (src) {
2826
-      image = new window.Image();
2827
-      image.onload = onReady;
2828
-      image.onerror = onReady;
2829
-      if (sizes) {
2830
-        image.sizes = sizes;
2831
-      }
2832
-      if (srcset) {
2833
-        image.srcset = srcset;
2834
-      }
2835
-      if (src) {
2836
-        image.src = src;
2837
-      }
2838
-    } else {
2839
-      onReady();
2840
-    }
2841
-  } else {
2842
-    // image already loaded...
2843
-    onReady();
2844
-  }
2845
-}
2846
-
2847
-function preloadImages () {
2848
-  const swiper = this;
2849
-  swiper.imagesToLoad = swiper.$el.find('img');
2850
-  function onReady() {
2851
-    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
2852
-    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
2853
-    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
2854
-      if (swiper.params.updateOnImagesReady) swiper.update();
2855
-      swiper.emit('imagesReady');
2856
-    }
2857
-  }
2858
-  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
2859
-    const imageEl = swiper.imagesToLoad[i];
2860
-    swiper.loadImage(
2861
-      imageEl,
2862
-      imageEl.currentSrc || imageEl.getAttribute('src'),
2863
-      imageEl.srcset || imageEl.getAttribute('srcset'),
2864
-      imageEl.sizes || imageEl.getAttribute('sizes'),
2865
-      true,
2866
-      onReady
2867
-    );
2868
-  }
2869
-}
2870
-
2871
-var images = {
2872
-  loadImage,
2873
-  preloadImages,
2874
-};
2875
-
2876
-function checkOverflow() {
2877
-  const swiper = this;
2878
-  const params = swiper.params;
2879
-  const wasLocked = swiper.isLocked;
2880
-  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
2881
-
2882
-  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
2883
-    swiper.isLocked = lastSlidePosition <= swiper.size;
2884
-  } else {
2885
-    swiper.isLocked = swiper.snapGrid.length === 1;
2886
-  }
2887
-
2888
-  swiper.allowSlideNext = !swiper.isLocked;
2889
-  swiper.allowSlidePrev = !swiper.isLocked;
2890
-
2891
-  // events
2892
-  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
2893
-
2894
-  if (wasLocked && wasLocked !== swiper.isLocked) {
2895
-    swiper.isEnd = false;
2896
-    swiper.navigation.update();
2897
-  }
2898
-}
2899
-
2900
-var checkOverflow$1 = { checkOverflow };
2901
-
2902
-var defaults = {
2903
-  init: true,
2904
-  direction: 'horizontal',
2905
-  touchEventsTarget: 'container',
2906
-  initialSlide: 0,
2907
-  speed: 300,
2908
-  cssMode: false,
2909
-  updateOnWindowResize: true,
2910
-  //
2911
-  preventInteractionOnTransition: false,
2912
-
2913
-  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
2914
-  edgeSwipeDetection: false,
2915
-  edgeSwipeThreshold: 20,
2916
-
2917
-  // Free mode
2918
-  freeMode: false,
2919
-  freeModeMomentum: true,
2920
-  freeModeMomentumRatio: 1,
2921
-  freeModeMomentumBounce: true,
2922
-  freeModeMomentumBounceRatio: 1,
2923
-  freeModeMomentumVelocityRatio: 1,
2924
-  freeModeSticky: false,
2925
-  freeModeMinimumVelocity: 0.02,
2926
-
2927
-  // Autoheight
2928
-  autoHeight: false,
2929
-
2930
-  // Set wrapper width
2931
-  setWrapperSize: false,
2932
-
2933
-  // Virtual Translate
2934
-  virtualTranslate: false,
2935
-
2936
-  // Effects
2937
-  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
2938
-
2939
-  // Breakpoints
2940
-  breakpoints: undefined,
2941
-
2942
-  // Slides grid
2943
-  spaceBetween: 0,
2944
-  slidesPerView: 1,
2945
-  slidesPerColumn: 1,
2946
-  slidesPerColumnFill: 'column',
2947
-  slidesPerGroup: 1,
2948
-  slidesPerGroupSkip: 0,
2949
-  centeredSlides: false,
2950
-  centeredSlidesBounds: false,
2951
-  slidesOffsetBefore: 0, // in px
2952
-  slidesOffsetAfter: 0, // in px
2953
-  normalizeSlideIndex: true,
2954
-  centerInsufficientSlides: false,
2955
-
2956
-  // Disable swiper and hide navigation when container not overflow
2957
-  watchOverflow: false,
2958
-
2959
-  // Round length
2960
-  roundLengths: false,
2961
-
2962
-  // Touches
2963
-  touchRatio: 1,
2964
-  touchAngle: 45,
2965
-  simulateTouch: true,
2966
-  shortSwipes: true,
2967
-  longSwipes: true,
2968
-  longSwipesRatio: 0.5,
2969
-  longSwipesMs: 300,
2970
-  followFinger: true,
2971
-  allowTouchMove: true,
2972
-  threshold: 0,
2973
-  touchMoveStopPropagation: false,
2974
-  touchStartPreventDefault: true,
2975
-  touchStartForcePreventDefault: false,
2976
-  touchReleaseOnEdges: false,
2977
-
2978
-  // Unique Navigation Elements
2979
-  uniqueNavElements: true,
2980
-
2981
-  // Resistance
2982
-  resistance: true,
2983
-  resistanceRatio: 0.85,
2984
-
2985
-  // Progress
2986
-  watchSlidesProgress: false,
2987
-  watchSlidesVisibility: false,
2988
-
2989
-  // Cursor
2990
-  grabCursor: false,
2991
-
2992
-  // Clicks
2993
-  preventClicks: true,
2994
-  preventClicksPropagation: true,
2995
-  slideToClickedSlide: false,
2996
-
2997
-  // Images
2998
-  preloadImages: true,
2999
-  updateOnImagesReady: true,
3000
-
3001
-  // loop
3002
-  loop: false,
3003
-  loopAdditionalSlides: 0,
3004
-  loopedSlides: null,
3005
-  loopFillGroupWithBlank: false,
3006
-
3007
-  // Swiping/no swiping
3008
-  allowSlidePrev: true,
3009
-  allowSlideNext: true,
3010
-  swipeHandler: null, // '.swipe-handler',
3011
-  noSwiping: true,
3012
-  noSwipingClass: 'swiper-no-swiping',
3013
-  noSwipingSelector: null,
3014
-
3015
-  // Passive Listeners
3016
-  passiveListeners: true,
3017
-
3018
-  // NS
3019
-  containerModifierClass: 'swiper-container-', // NEW
3020
-  slideClass: 'swiper-slide',
3021
-  slideBlankClass: 'swiper-slide-invisible-blank',
3022
-  slideActiveClass: 'swiper-slide-active',
3023
-  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
3024
-  slideVisibleClass: 'swiper-slide-visible',
3025
-  slideDuplicateClass: 'swiper-slide-duplicate',
3026
-  slideNextClass: 'swiper-slide-next',
3027
-  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
3028
-  slidePrevClass: 'swiper-slide-prev',
3029
-  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
3030
-  wrapperClass: 'swiper-wrapper',
3031
-
3032
-  // Callbacks
3033
-  runCallbacksOnInit: true,
3034
-};
3035
-
3036
-/* eslint no-param-reassign: "off" */
3037
-
3038
-const prototypes = {
3039
-  update,
3040
-  translate,
3041
-  transition,
3042
-  slide,
3043
-  loop,
3044
-  grabCursor,
3045
-  manipulation,
3046
-  events,
3047
-  breakpoints,
3048
-  checkOverflow: checkOverflow$1,
3049
-  classes,
3050
-  images,
3051
-};
3052
-
3053
-const extendedDefaults = {};
3054
-
3055
-class Swiper extends SwiperClass {
3056
-  constructor(...args) {
3057
-    let el;
3058
-    let params;
3059
-    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
3060
-      params = args[0];
3061
-    } else {
3062
-      [el, params] = args;
3063
-    }
3064
-    if (!params) params = {};
3065
-
3066
-    params = Utils.extend({}, params);
3067
-    if (el && !params.el) params.el = el;
3068
-
3069
-    super(params);
3070
-
3071
-    Object.keys(prototypes).forEach((prototypeGroup) => {
3072
-      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
3073
-        if (!Swiper.prototype[protoMethod]) {
3074
-          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3075
-        }
3076
-      });
3077
-    });
3078
-
3079
-    // Swiper Instance
3080
-    const swiper = this;
3081
-    if (typeof swiper.modules === 'undefined') {
3082
-      swiper.modules = {};
3083
-    }
3084
-    Object.keys(swiper.modules).forEach((moduleName) => {
3085
-      const module = swiper.modules[moduleName];
3086
-      if (module.params) {
3087
-        const moduleParamName = Object.keys(module.params)[0];
3088
-        const moduleParams = module.params[moduleParamName];
3089
-        if (typeof moduleParams !== 'object' || moduleParams === null) return;
3090
-        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
3091
-        if (params[moduleParamName] === true) {
3092
-          params[moduleParamName] = { enabled: true };
3093
-        }
3094
-        if (
3095
-          typeof params[moduleParamName] === 'object'
3096
-          && !('enabled' in params[moduleParamName])
3097
-        ) {
3098
-          params[moduleParamName].enabled = true;
3099
-        }
3100
-        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
3101
-      }
3102
-    });
3103
-
3104
-    // Extend defaults with modules params
3105
-    const swiperParams = Utils.extend({}, defaults);
3106
-    swiper.useModulesParams(swiperParams);
3107
-
3108
-    // Extend defaults with passed params
3109
-    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
3110
-    swiper.originalParams = Utils.extend({}, swiper.params);
3111
-    swiper.passedParams = Utils.extend({}, params);
3112
-
3113
-    // Save Dom lib
3114
-    swiper.$ = $;
3115
-
3116
-    // Find el
3117
-    const $el = $(swiper.params.el);
3118
-    el = $el[0];
3119
-
3120
-    if (!el) {
3121
-      return undefined;
3122
-    }
3123
-
3124
-    if ($el.length > 1) {
3125
-      const swipers = [];
3126
-      $el.each((index, containerEl) => {
3127
-        const newParams = Utils.extend({}, params, { el: containerEl });
3128
-        swipers.push(new Swiper(newParams));
3129
-      });
3130
-      return swipers;
3131
-    }
3132
-
3133
-    el.swiper = swiper;
3134
-    $el.data('swiper', swiper);
3135
-
3136
-    // Find Wrapper
3137
-    let $wrapperEl;
3138
-    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
3139
-      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));
3140
-      // Children needs to return slot items
3141
-      $wrapperEl.children = (options) => $el.children(options);
3142
-    } else {
3143
-      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);
3144
-    }
3145
-    // Extend Swiper
3146
-    Utils.extend(swiper, {
3147
-      $el,
3148
-      el,
3149
-      $wrapperEl,
3150
-      wrapperEl: $wrapperEl[0],
3151
-
3152
-      // Classes
3153
-      classNames: [],
3154
-
3155
-      // Slides
3156
-      slides: $(),
3157
-      slidesGrid: [],
3158
-      snapGrid: [],
3159
-      slidesSizesGrid: [],
3160
-
3161
-      // isDirection
3162
-      isHorizontal() {
3163
-        return swiper.params.direction === 'horizontal';
3164
-      },
3165
-      isVertical() {
3166
-        return swiper.params.direction === 'vertical';
3167
-      },
3168
-      // RTL
3169
-      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3170
-      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3171
-      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
3172
-
3173
-      // Indexes
3174
-      activeIndex: 0,
3175
-      realIndex: 0,
3176
-
3177
-      //
3178
-      isBeginning: true,
3179
-      isEnd: false,
3180
-
3181
-      // Props
3182
-      translate: 0,
3183
-      previousTranslate: 0,
3184
-      progress: 0,
3185
-      velocity: 0,
3186
-      animating: false,
3187
-
3188
-      // Locks
3189
-      allowSlideNext: swiper.params.allowSlideNext,
3190
-      allowSlidePrev: swiper.params.allowSlidePrev,
3191
-
3192
-      // Touch Events
3193
-      touchEvents: (function touchEvents() {
3194
-        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
3195
-        let desktop = ['mousedown', 'mousemove', 'mouseup'];
3196
-        if (Support.pointerEvents) {
3197
-          desktop = ['pointerdown', 'pointermove', 'pointerup'];
3198
-        }
3199
-        swiper.touchEventsTouch = {
3200
-          start: touch[0],
3201
-          move: touch[1],
3202
-          end: touch[2],
3203
-          cancel: touch[3],
3204
-        };
3205
-        swiper.touchEventsDesktop = {
3206
-          start: desktop[0],
3207
-          move: desktop[1],
3208
-          end: desktop[2],
3209
-        };
3210
-        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
3211
-      }()),
3212
-      touchEventsData: {
3213
-        isTouched: undefined,
3214
-        isMoved: undefined,
3215
-        allowTouchCallbacks: undefined,
3216
-        touchStartTime: undefined,
3217
-        isScrolling: undefined,
3218
-        currentTranslate: undefined,
3219
-        startTranslate: undefined,
3220
-        allowThresholdMove: undefined,
3221
-        // Form elements to match
3222
-        formElements: 'input, select, option, textarea, button, video, label',
3223
-        // Last click time
3224
-        lastClickTime: Utils.now(),
3225
-        clickTimeout: undefined,
3226
-        // Velocities
3227
-        velocities: [],
3228
-        allowMomentumBounce: undefined,
3229
-        isTouchEvent: undefined,
3230
-        startMoving: undefined,
3231
-      },
3232
-
3233
-      // Clicks
3234
-      allowClick: true,
3235
-
3236
-      // Touches
3237
-      allowTouchMove: swiper.params.allowTouchMove,
3238
-
3239
-      touches: {
3240
-        startX: 0,
3241
-        startY: 0,
3242
-        currentX: 0,
3243
-        currentY: 0,
3244
-        diff: 0,
3245
-      },
3246
-
3247
-      // Images
3248
-      imagesToLoad: [],
3249
-      imagesLoaded: 0,
3250
-
3251
-    });
3252
-
3253
-    // Install Modules
3254
-    swiper.useModules();
3255
-
3256
-    // Init
3257
-    if (swiper.params.init) {
3258
-      swiper.init();
3259
-    }
3260
-
3261
-    // Return app instance
3262
-    return swiper;
3263
-  }
3264
-
3265
-  slidesPerViewDynamic() {
3266
-    const swiper = this;
3267
-    const {
3268
-      params, slides, slidesGrid, size: swiperSize, activeIndex,
3269
-    } = swiper;
3270
-    let spv = 1;
3271
-    if (params.centeredSlides) {
3272
-      let slideSize = slides[activeIndex].swiperSlideSize;
3273
-      let breakLoop;
3274
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
3275
-        if (slides[i] && !breakLoop) {
3276
-          slideSize += slides[i].swiperSlideSize;
3277
-          spv += 1;
3278
-          if (slideSize > swiperSize) breakLoop = true;
3279
-        }
3280
-      }
3281
-      for (let i = activeIndex - 1; i >= 0; i -= 1) {
3282
-        if (slides[i] && !breakLoop) {
3283
-          slideSize += slides[i].swiperSlideSize;
3284
-          spv += 1;
3285
-          if (slideSize > swiperSize) breakLoop = true;
3286
-        }
3287
-      }
3288
-    } else {
3289
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
3290
-        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
3291
-          spv += 1;
3292
-        }
3293
-      }
3294
-    }
3295
-    return spv;
3296
-  }
3297
-
3298
-  update() {
3299
-    const swiper = this;
3300
-    if (!swiper || swiper.destroyed) return;
3301
-    const { snapGrid, params } = swiper;
3302
-    // Breakpoints
3303
-    if (params.breakpoints) {
3304
-      swiper.setBreakpoint();
3305
-    }
3306
-    swiper.updateSize();
3307
-    swiper.updateSlides();
3308
-    swiper.updateProgress();
3309
-    swiper.updateSlidesClasses();
3310
-
3311
-    function setTranslate() {
3312
-      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
3313
-      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
3314
-      swiper.setTranslate(newTranslate);
3315
-      swiper.updateActiveIndex();
3316
-      swiper.updateSlidesClasses();
3317
-    }
3318
-    let translated;
3319
-    if (swiper.params.freeMode) {
3320
-      setTranslate();
3321
-      if (swiper.params.autoHeight) {
3322
-        swiper.updateAutoHeight();
3323
-      }
3324
-    } else {
3325
-      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3326
-        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3327
-      } else {
3328
-        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
3329
-      }
3330
-      if (!translated) {
3331
-        setTranslate();
3332
-      }
3333
-    }
3334
-    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
3335
-      swiper.checkOverflow();
3336
-    }
3337
-    swiper.emit('update');
3338
-  }
3339
-
3340
-  changeDirection(newDirection, needUpdate = true) {
3341
-    const swiper = this;
3342
-    const currentDirection = swiper.params.direction;
3343
-    if (!newDirection) {
3344
-      // eslint-disable-next-line
3345
-      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
3346
-    }
3347
-    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
3348
-      return swiper;
3349
-    }
3350
-
3351
-    swiper.$el
3352
-      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)
3353
-      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);
3354
-
3355
-    swiper.params.direction = newDirection;
3356
-
3357
-    swiper.slides.each((slideIndex, slideEl) => {
3358
-      if (newDirection === 'vertical') {
3359
-        slideEl.style.width = '';
3360
-      } else {
3361
-        slideEl.style.height = '';
3362
-      }
3363
-    });
3364
-
3365
-    swiper.emit('changeDirection');
3366
-    if (needUpdate) swiper.update();
3367
-
3368
-    return swiper;
3369
-  }
3370
-
3371
-  init() {
3372
-    const swiper = this;
3373
-    if (swiper.initialized) return;
3374
-
3375
-    swiper.emit('beforeInit');
3376
-
3377
-    // Set breakpoint
3378
-    if (swiper.params.breakpoints) {
3379
-      swiper.setBreakpoint();
3380
-    }
3381
-
3382
-    // Add Classes
3383
-    swiper.addClasses();
3384
-
3385
-    // Create loop
3386
-    if (swiper.params.loop) {
3387
-      swiper.loopCreate();
3388
-    }
3389
-
3390
-    // Update size
3391
-    swiper.updateSize();
3392
-
3393
-    // Update slides
3394
-    swiper.updateSlides();
3395
-
3396
-    if (swiper.params.watchOverflow) {
3397
-      swiper.checkOverflow();
3398
-    }
3399
-
3400
-    // Set Grab Cursor
3401
-    if (swiper.params.grabCursor) {
3402
-      swiper.setGrabCursor();
3403
-    }
3404
-
3405
-    if (swiper.params.preloadImages) {
3406
-      swiper.preloadImages();
3407
-    }
3408
-
3409
-    // Slide To Initial Slide
3410
-    if (swiper.params.loop) {
3411
-      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
3412
-    } else {
3413
-      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
3414
-    }
3415
-
3416
-    // Attach events
3417
-    swiper.attachEvents();
3418
-
3419
-    // Init Flag
3420
-    swiper.initialized = true;
3421
-
3422
-    // Emit
3423
-    swiper.emit('init');
3424
-  }
3425
-
3426
-  destroy(deleteInstance = true, cleanStyles = true) {
3427
-    const swiper = this;
3428
-    const {
3429
-      params, $el, $wrapperEl, slides,
3430
-    } = swiper;
3431
-
3432
-    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
3433
-      return null;
3434
-    }
3435
-
3436
-    swiper.emit('beforeDestroy');
3437
-
3438
-    // Init Flag
3439
-    swiper.initialized = false;
3440
-
3441
-    // Detach events
3442
-    swiper.detachEvents();
3443
-
3444
-    // Destroy loop
3445
-    if (params.loop) {
3446
-      swiper.loopDestroy();
3447
-    }
3448
-
3449
-    // Cleanup styles
3450
-    if (cleanStyles) {
3451
-      swiper.removeClasses();
3452
-      $el.removeAttr('style');
3453
-      $wrapperEl.removeAttr('style');
3454
-      if (slides && slides.length) {
3455
-        slides
3456
-          .removeClass([
3457
-            params.slideVisibleClass,
3458
-            params.slideActiveClass,
3459
-            params.slideNextClass,
3460
-            params.slidePrevClass,
3461
-          ].join(' '))
3462
-          .removeAttr('style')
3463
-          .removeAttr('data-swiper-slide-index');
3464
-      }
3465
-    }
3466
-
3467
-    swiper.emit('destroy');
3468
-
3469
-    // Detach emitter events
3470
-    Object.keys(swiper.eventsListeners).forEach((eventName) => {
3471
-      swiper.off(eventName);
3472
-    });
3473
-
3474
-    if (deleteInstance !== false) {
3475
-      swiper.$el[0].swiper = null;
3476
-      swiper.$el.data('swiper', null);
3477
-      Utils.deleteProps(swiper);
3478
-    }
3479
-    swiper.destroyed = true;
3480
-
3481
-    return null;
3482
-  }
3483
-
3484
-  static extendDefaults(newDefaults) {
3485
-    Utils.extend(extendedDefaults, newDefaults);
3486
-  }
3487
-
3488
-  static get extendedDefaults() {
3489
-    return extendedDefaults;
3490
-  }
3491
-
3492
-  static get defaults() {
3493
-    return defaults;
3494
-  }
3495
-
3496
-  static get Class() {
3497
-    return SwiperClass;
3498
-  }
3499
-
3500
-  static get $() {
3501
-    return $;
3502
-  }
3503
-}
3504
-
3505
-var Device$1 = {
3506
-  name: 'device',
3507
-  proto: {
3508
-    device: Device,
3509
-  },
3510
-  static: {
3511
-    device: Device,
3512
-  },
3513
-};
3514
-
3515
-var Support$1 = {
3516
-  name: 'support',
3517
-  proto: {
3518
-    support: Support,
3519
-  },
3520
-  static: {
3521
-    support: Support,
3522
-  },
3523
-};
3524
-
3525
-const Browser = (function Browser() {
3526
-  function isSafari() {
3527
-    const ua = window.navigator.userAgent.toLowerCase();
3528
-    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
3529
-  }
3530
-  return {
3531
-    isEdge: !!window.navigator.userAgent.match(/Edge/g),
3532
-    isSafari: isSafari(),
3533
-    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),
3534
-  };
3535
-}());
3536
-
3537
-var Browser$1 = {
3538
-  name: 'browser',
3539
-  proto: {
3540
-    browser: Browser,
3541
-  },
3542
-  static: {
3543
-    browser: Browser,
3544
-  },
3545
-};
3546
-
3547
-var Resize = {
3548
-  name: 'resize',
3549
-  create() {
3550
-    const swiper = this;
3551
-    Utils.extend(swiper, {
3552
-      resize: {
3553
-        resizeHandler() {
3554
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
3555
-          swiper.emit('beforeResize');
3556
-          swiper.emit('resize');
3557
-        },
3558
-        orientationChangeHandler() {
3559
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
3560
-          swiper.emit('orientationchange');
3561
-        },
3562
-      },
3563
-    });
3564
-  },
3565
-  on: {
3566
-    init() {
3567
-      const swiper = this;
3568
-      // Emit resize
3569
-      window.addEventListener('resize', swiper.resize.resizeHandler);
3570
-
3571
-      // Emit orientationchange
3572
-      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
3573
-    },
3574
-    destroy() {
3575
-      const swiper = this;
3576
-      window.removeEventListener('resize', swiper.resize.resizeHandler);
3577
-      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
3578
-    },
3579
-  },
3580
-};
3581
-
3582
-const Observer = {
3583
-  func: window.MutationObserver || window.WebkitMutationObserver,
3584
-  attach(target, options = {}) {
3585
-    const swiper = this;
3586
-
3587
-    const ObserverFunc = Observer.func;
3588
-    const observer = new ObserverFunc((mutations) => {
3589
-      // The observerUpdate event should only be triggered
3590
-      // once despite the number of mutations.  Additional
3591
-      // triggers are redundant and are very costly
3592
-      if (mutations.length === 1) {
3593
-        swiper.emit('observerUpdate', mutations[0]);
3594
-        return;
3595
-      }
3596
-      const observerUpdate = function observerUpdate() {
3597
-        swiper.emit('observerUpdate', mutations[0]);
3598
-      };
3599
-
3600
-      if (window.requestAnimationFrame) {
3601
-        window.requestAnimationFrame(observerUpdate);
3602
-      } else {
3603
-        window.setTimeout(observerUpdate, 0);
3604
-      }
3605
-    });
3606
-
3607
-    observer.observe(target, {
3608
-      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
3609
-      childList: typeof options.childList === 'undefined' ? true : options.childList,
3610
-      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
3611
-    });
3612
-
3613
-    swiper.observer.observers.push(observer);
3614
-  },
3615
-  init() {
3616
-    const swiper = this;
3617
-    if (!Support.observer || !swiper.params.observer) return;
3618
-    if (swiper.params.observeParents) {
3619
-      const containerParents = swiper.$el.parents();
3620
-      for (let i = 0; i < containerParents.length; i += 1) {
3621
-        swiper.observer.attach(containerParents[i]);
3622
-      }
3623
-    }
3624
-    // Observe container
3625
-    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
3626
-
3627
-    // Observe wrapper
3628
-    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
3629
-  },
3630
-  destroy() {
3631
-    const swiper = this;
3632
-    swiper.observer.observers.forEach((observer) => {
3633
-      observer.disconnect();
3634
-    });
3635
-    swiper.observer.observers = [];
3636
-  },
3637
-};
3638
-
3639
-var Observer$1 = {
3640
-  name: 'observer',
3641
-  params: {
3642
-    observer: false,
3643
-    observeParents: false,
3644
-    observeSlideChildren: false,
3645
-  },
3646
-  create() {
3647
-    const swiper = this;
3648
-    Utils.extend(swiper, {
3649
-      observer: {
3650
-        init: Observer.init.bind(swiper),
3651
-        attach: Observer.attach.bind(swiper),
3652
-        destroy: Observer.destroy.bind(swiper),
3653
-        observers: [],
3654
-      },
3655
-    });
3656
-  },
3657
-  on: {
3658
-    init() {
3659
-      const swiper = this;
3660
-      swiper.observer.init();
3661
-    },
3662
-    destroy() {
3663
-      const swiper = this;
3664
-      swiper.observer.destroy();
3665
-    },
3666
-  },
3667
-};
3668
-
3669
-const Virtual = {
3670
-  update(force) {
3671
-    const swiper = this;
3672
-    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
3673
-    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
3674
-    const {
3675
-      from: previousFrom,
3676
-      to: previousTo,
3677
-      slides,
3678
-      slidesGrid: previousSlidesGrid,
3679
-      renderSlide,
3680
-      offset: previousOffset,
3681
-    } = swiper.virtual;
3682
-    swiper.updateActiveIndex();
3683
-    const activeIndex = swiper.activeIndex || 0;
3684
-
3685
-    let offsetProp;
3686
-    if (swiper.rtlTranslate) offsetProp = 'right';
3687
-    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
3688
-
3689
-    let slidesAfter;
3690
-    let slidesBefore;
3691
-    if (centeredSlides) {
3692
-      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
3693
-      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
3694
-    } else {
3695
-      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
3696
-      slidesBefore = slidesPerGroup + addSlidesAfter;
3697
-    }
3698
-    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
3699
-    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
3700
-    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
3701
-
3702
-    Utils.extend(swiper.virtual, {
3703
-      from,
3704
-      to,
3705
-      offset,
3706
-      slidesGrid: swiper.slidesGrid,
3707
-    });
3708
-
3709
-    function onRendered() {
3710
-      swiper.updateSlides();
3711
-      swiper.updateProgress();
3712
-      swiper.updateSlidesClasses();
3713
-      if (swiper.lazy && swiper.params.lazy.enabled) {
3714
-        swiper.lazy.load();
3715
-      }
3716
-    }
3717
-
3718
-    if (previousFrom === from && previousTo === to && !force) {
3719
-      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
3720
-        swiper.slides.css(offsetProp, `${offset}px`);
3721
-      }
3722
-      swiper.updateProgress();
3723
-      return;
3724
-    }
3725
-    if (swiper.params.virtual.renderExternal) {
3726
-      swiper.params.virtual.renderExternal.call(swiper, {
3727
-        offset,
3728
-        from,
3729
-        to,
3730
-        slides: (function getSlides() {
3731
-          const slidesToRender = [];
3732
-          for (let i = from; i <= to; i += 1) {
3733
-            slidesToRender.push(slides[i]);
3734
-          }
3735
-          return slidesToRender;
3736
-        }()),
3737
-      });
3738
-      onRendered();
3739
-      return;
3740
-    }
3741
-    const prependIndexes = [];
3742
-    const appendIndexes = [];
3743
-    if (force) {
3744
-      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
3745
-    } else {
3746
-      for (let i = previousFrom; i <= previousTo; i += 1) {
3747
-        if (i < from || i > to) {
3748
-          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
3749
-        }
3750
-      }
3751
-    }
3752
-    for (let i = 0; i < slides.length; i += 1) {
3753
-      if (i >= from && i <= to) {
3754
-        if (typeof previousTo === 'undefined' || force) {
3755
-          appendIndexes.push(i);
3756
-        } else {
3757
-          if (i > previousTo) appendIndexes.push(i);
3758
-          if (i < previousFrom) prependIndexes.push(i);
3759
-        }
3760
-      }
3761
-    }
3762
-    appendIndexes.forEach((index) => {
3763
-      swiper.$wrapperEl.append(renderSlide(slides[index], index));
3764
-    });
3765
-    prependIndexes.sort((a, b) => b - a).forEach((index) => {
3766
-      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
3767
-    });
3768
-    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
3769
-    onRendered();
3770
-  },
3771
-  renderSlide(slide, index) {
3772
-    const swiper = this;
3773
-    const params = swiper.params.virtual;
3774
-    if (params.cache && swiper.virtual.cache[index]) {
3775
-      return swiper.virtual.cache[index];
3776
-    }
3777
-    const $slideEl = params.renderSlide
3778
-      ? $(params.renderSlide.call(swiper, slide, index))
3779
-      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
3780
-    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
3781
-    if (params.cache) swiper.virtual.cache[index] = $slideEl;
3782
-    return $slideEl;
3783
-  },
3784
-  appendSlide(slides) {
3785
-    const swiper = this;
3786
-    if (typeof slides === 'object' && 'length' in slides) {
3787
-      for (let i = 0; i < slides.length; i += 1) {
3788
-        if (slides[i]) swiper.virtual.slides.push(slides[i]);
3789
-      }
3790
-    } else {
3791
-      swiper.virtual.slides.push(slides);
3792
-    }
3793
-    swiper.virtual.update(true);
3794
-  },
3795
-  prependSlide(slides) {
3796
-    const swiper = this;
3797
-    const activeIndex = swiper.activeIndex;
3798
-    let newActiveIndex = activeIndex + 1;
3799
-    let numberOfNewSlides = 1;
3800
-
3801
-    if (Array.isArray(slides)) {
3802
-      for (let i = 0; i < slides.length; i += 1) {
3803
-        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
3804
-      }
3805
-      newActiveIndex = activeIndex + slides.length;
3806
-      numberOfNewSlides = slides.length;
3807
-    } else {
3808
-      swiper.virtual.slides.unshift(slides);
3809
-    }
3810
-    if (swiper.params.virtual.cache) {
3811
-      const cache = swiper.virtual.cache;
3812
-      const newCache = {};
3813
-      Object.keys(cache).forEach((cachedIndex) => {
3814
-        const $cachedEl = cache[cachedIndex];
3815
-        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
3816
-        if (cachedElIndex) {
3817
-          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
3818
-        }
3819
-        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
3820
-      });
3821
-      swiper.virtual.cache = newCache;
3822
-    }
3823
-    swiper.virtual.update(true);
3824
-    swiper.slideTo(newActiveIndex, 0);
3825
-  },
3826
-  removeSlide(slidesIndexes) {
3827
-    const swiper = this;
3828
-    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
3829
-    let activeIndex = swiper.activeIndex;
3830
-    if (Array.isArray(slidesIndexes)) {
3831
-      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
3832
-        swiper.virtual.slides.splice(slidesIndexes[i], 1);
3833
-        if (swiper.params.virtual.cache) {
3834
-          delete swiper.virtual.cache[slidesIndexes[i]];
3835
-        }
3836
-        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
3837
-        activeIndex = Math.max(activeIndex, 0);
3838
-      }
3839
-    } else {
3840
-      swiper.virtual.slides.splice(slidesIndexes, 1);
3841
-      if (swiper.params.virtual.cache) {
3842
-        delete swiper.virtual.cache[slidesIndexes];
3843
-      }
3844
-      if (slidesIndexes < activeIndex) activeIndex -= 1;
3845
-      activeIndex = Math.max(activeIndex, 0);
3846
-    }
3847
-    swiper.virtual.update(true);
3848
-    swiper.slideTo(activeIndex, 0);
3849
-  },
3850
-  removeAllSlides() {
3851
-    const swiper = this;
3852
-    swiper.virtual.slides = [];
3853
-    if (swiper.params.virtual.cache) {
3854
-      swiper.virtual.cache = {};
3855
-    }
3856
-    swiper.virtual.update(true);
3857
-    swiper.slideTo(0, 0);
3858
-  },
3859
-};
3860
-
3861
-var Virtual$1 = {
3862
-  name: 'virtual',
3863
-  params: {
3864
-    virtual: {
3865
-      enabled: false,
3866
-      slides: [],
3867
-      cache: true,
3868
-      renderSlide: null,
3869
-      renderExternal: null,
3870
-      addSlidesBefore: 0,
3871
-      addSlidesAfter: 0,
3872
-    },
3873
-  },
3874
-  create() {
3875
-    const swiper = this;
3876
-    Utils.extend(swiper, {
3877
-      virtual: {
3878
-        update: Virtual.update.bind(swiper),
3879
-        appendSlide: Virtual.appendSlide.bind(swiper),
3880
-        prependSlide: Virtual.prependSlide.bind(swiper),
3881
-        removeSlide: Virtual.removeSlide.bind(swiper),
3882
-        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
3883
-        renderSlide: Virtual.renderSlide.bind(swiper),
3884
-        slides: swiper.params.virtual.slides,
3885
-        cache: {},
3886
-      },
3887
-    });
3888
-  },
3889
-  on: {
3890
-    beforeInit() {
3891
-      const swiper = this;
3892
-      if (!swiper.params.virtual.enabled) return;
3893
-      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
3894
-      const overwriteParams = {
3895
-        watchSlidesProgress: true,
3896
-      };
3897
-      Utils.extend(swiper.params, overwriteParams);
3898
-      Utils.extend(swiper.originalParams, overwriteParams);
3899
-
3900
-      if (!swiper.params.initialSlide) {
3901
-        swiper.virtual.update();
3902
-      }
3903
-    },
3904
-    setTranslate() {
3905
-      const swiper = this;
3906
-      if (!swiper.params.virtual.enabled) return;
3907
-      swiper.virtual.update();
3908
-    },
3909
-  },
3910
-};
3911
-
3912
-const Keyboard = {
3913
-  handle(event) {
3914
-    const swiper = this;
3915
-    const { rtlTranslate: rtl } = swiper;
3916
-    let e = event;
3917
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
3918
-    const kc = e.keyCode || e.charCode;
3919
-    // Directions locks
3920
-    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
3921
-      return false;
3922
-    }
3923
-    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
3924
-      return false;
3925
-    }
3926
-    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
3927
-      return undefined;
3928
-    }
3929
-    if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {
3930
-      return undefined;
3931
-    }
3932
-    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
3933
-      let inView = false;
3934
-      // Check that swiper should be inside of visible area of window
3935
-      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
3936
-        return undefined;
3937
-      }
3938
-      const windowWidth = window.innerWidth;
3939
-      const windowHeight = window.innerHeight;
3940
-      const swiperOffset = swiper.$el.offset();
3941
-      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
3942
-      const swiperCoord = [
3943
-        [swiperOffset.left, swiperOffset.top],
3944
-        [swiperOffset.left + swiper.width, swiperOffset.top],
3945
-        [swiperOffset.left, swiperOffset.top + swiper.height],
3946
-        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],
3947
-      ];
3948
-      for (let i = 0; i < swiperCoord.length; i += 1) {
3949
-        const point = swiperCoord[i];
3950
-        if (
3951
-          point[0] >= 0 && point[0] <= windowWidth
3952
-          && point[1] >= 0 && point[1] <= windowHeight
3953
-        ) {
3954
-          inView = true;
3955
-        }
3956
-      }
3957
-      if (!inView) return undefined;
3958
-    }
3959
-    if (swiper.isHorizontal()) {
3960
-      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
3961
-        if (e.preventDefault) e.preventDefault();
3962
-        else e.returnValue = false;
3963
-      }
3964
-      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();
3965
-      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();
3966
-    } else {
3967
-      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
3968
-        if (e.preventDefault) e.preventDefault();
3969
-        else e.returnValue = false;
3970
-      }
3971
-      if (kc === 34 || kc === 40) swiper.slideNext();
3972
-      if (kc === 33 || kc === 38) swiper.slidePrev();
3973
-    }
3974
-    swiper.emit('keyPress', kc);
3975
-    return undefined;
3976
-  },
3977
-  enable() {
3978
-    const swiper = this;
3979
-    if (swiper.keyboard.enabled) return;
3980
-    $(document$1).on('keydown', swiper.keyboard.handle);
3981
-    swiper.keyboard.enabled = true;
3982
-  },
3983
-  disable() {
3984
-    const swiper = this;
3985
-    if (!swiper.keyboard.enabled) return;
3986
-    $(document$1).off('keydown', swiper.keyboard.handle);
3987
-    swiper.keyboard.enabled = false;
3988
-  },
3989
-};
3990
-
3991
-var Keyboard$1 = {
3992
-  name: 'keyboard',
3993
-  params: {
3994
-    keyboard: {
3995
-      enabled: false,
3996
-      onlyInViewport: true,
3997
-    },
3998
-  },
3999
-  create() {
4000
-    const swiper = this;
4001
-    Utils.extend(swiper, {
4002
-      keyboard: {
4003
-        enabled: false,
4004
-        enable: Keyboard.enable.bind(swiper),
4005
-        disable: Keyboard.disable.bind(swiper),
4006
-        handle: Keyboard.handle.bind(swiper),
4007
-      },
4008
-    });
4009
-  },
4010
-  on: {
4011
-    init() {
4012
-      const swiper = this;
4013
-      if (swiper.params.keyboard.enabled) {
4014
-        swiper.keyboard.enable();
4015
-      }
4016
-    },
4017
-    destroy() {
4018
-      const swiper = this;
4019
-      if (swiper.keyboard.enabled) {
4020
-        swiper.keyboard.disable();
4021
-      }
4022
-    },
4023
-  },
4024
-};
4025
-
4026
-function isEventSupported() {
4027
-  const eventName = 'onwheel';
4028
-  let isSupported = eventName in document$1;
4029
-
4030
-  if (!isSupported) {
4031
-    const element = document$1.createElement('div');
4032
-    element.setAttribute(eventName, 'return;');
4033
-    isSupported = typeof element[eventName] === 'function';
4034
-  }
4035
-
4036
-  if (!isSupported
4037
-    && document$1.implementation
4038
-    && document$1.implementation.hasFeature
4039
-    // always returns true in newer browsers as per the standard.
4040
-    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
4041
-    && document$1.implementation.hasFeature('', '') !== true
4042
-  ) {
4043
-    // This is the only way to test support for the `wheel` event in IE9+.
4044
-    isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');
4045
-  }
4046
-
4047
-  return isSupported;
4048
-}
4049
-const Mousewheel = {
4050
-  lastScrollTime: Utils.now(),
4051
-  lastEventBeforeSnap: undefined,
4052
-  recentWheelEvents: [],
4053
-  event() {
4054
-    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
4055
-    return isEventSupported() ? 'wheel' : 'mousewheel';
4056
-  },
4057
-  normalize(e) {
4058
-    // Reasonable defaults
4059
-    const PIXEL_STEP = 10;
4060
-    const LINE_HEIGHT = 40;
4061
-    const PAGE_HEIGHT = 800;
4062
-
4063
-    let sX = 0;
4064
-    let sY = 0; // spinX, spinY
4065
-    let pX = 0;
4066
-    let pY = 0; // pixelX, pixelY
4067
-
4068
-    // Legacy
4069
-    if ('detail' in e) {
4070
-      sY = e.detail;
4071
-    }
4072
-    if ('wheelDelta' in e) {
4073
-      sY = -e.wheelDelta / 120;
4074
-    }
4075
-    if ('wheelDeltaY' in e) {
4076
-      sY = -e.wheelDeltaY / 120;
4077
-    }
4078
-    if ('wheelDeltaX' in e) {
4079
-      sX = -e.wheelDeltaX / 120;
4080
-    }
4081
-
4082
-    // side scrolling on FF with DOMMouseScroll
4083
-    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
4084
-      sX = sY;
4085
-      sY = 0;
4086
-    }
4087
-
4088
-    pX = sX * PIXEL_STEP;
4089
-    pY = sY * PIXEL_STEP;
4090
-
4091
-    if ('deltaY' in e) {
4092
-      pY = e.deltaY;
4093
-    }
4094
-    if ('deltaX' in e) {
4095
-      pX = e.deltaX;
4096
-    }
4097
-
4098
-    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
4099
-      pX = pY;
4100
-      pY = 0;
4101
-    }
4102
-
4103
-    if ((pX || pY) && e.deltaMode) {
4104
-      if (e.deltaMode === 1) { // delta in LINE units
4105
-        pX *= LINE_HEIGHT;
4106
-        pY *= LINE_HEIGHT;
4107
-      } else { // delta in PAGE units
4108
-        pX *= PAGE_HEIGHT;
4109
-        pY *= PAGE_HEIGHT;
4110
-      }
4111
-    }
4112
-
4113
-    // Fall-back if spin cannot be determined
4114
-    if (pX && !sX) {
4115
-      sX = (pX < 1) ? -1 : 1;
4116
-    }
4117
-    if (pY && !sY) {
4118
-      sY = (pY < 1) ? -1 : 1;
4119
-    }
4120
-
4121
-    return {
4122
-      spinX: sX,
4123
-      spinY: sY,
4124
-      pixelX: pX,
4125
-      pixelY: pY,
4126
-    };
4127
-  },
4128
-  handleMouseEnter() {
4129
-    const swiper = this;
4130
-    swiper.mouseEntered = true;
4131
-  },
4132
-  handleMouseLeave() {
4133
-    const swiper = this;
4134
-    swiper.mouseEntered = false;
4135
-  },
4136
-  handle(event) {
4137
-    let e = event;
4138
-    const swiper = this;
4139
-    const params = swiper.params.mousewheel;
4140
-
4141
-    if (swiper.params.cssMode) {
4142
-      e.preventDefault();
4143
-    }
4144
-
4145
-    let target = swiper.$el;
4146
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4147
-      target = $(swiper.params.mousewheel.eventsTarged);
4148
-    }
4149
-    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
4150
-
4151
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
4152
-    let delta = 0;
4153
-    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
4154
-
4155
-    const data = Mousewheel.normalize(e);
4156
-
4157
-    if (params.forceToAxis) {
4158
-      if (swiper.isHorizontal()) {
4159
-        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;
4160
-        else return true;
4161
-      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;
4162
-      else return true;
4163
-    } else {
4164
-      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
4165
-    }
4166
-
4167
-    if (delta === 0) return true;
4168
-
4169
-    if (params.invert) delta = -delta;
4170
-
4171
-    if (!swiper.params.freeMode) {
4172
-      // Register the new event in a variable which stores the relevant data
4173
-      const newEvent = {
4174
-        time: Utils.now(),
4175
-        delta: Math.abs(delta),
4176
-        direction: Math.sign(delta),
4177
-        raw: event,
4178
-      };
4179
-
4180
-      // Keep the most recent events
4181
-      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
4182
-      if (recentWheelEvents.length >= 2) {
4183
-        recentWheelEvents.shift(); // only store the last N events
4184
-      }
4185
-      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
4186
-      recentWheelEvents.push(newEvent);
4187
-
4188
-      // If there is at least one previous recorded event:
4189
-      //   If direction has changed or
4190
-      //   if the scroll is quicker than the previous one:
4191
-      //     Animate the slider.
4192
-      // Else (this is the first time the wheel is moved):
4193
-      //     Animate the slider.
4194
-      if (prevEvent) {
4195
-        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
4196
-          swiper.mousewheel.animateSlider(newEvent);
4197
-        }
4198
-      } else {
4199
-        swiper.mousewheel.animateSlider(newEvent);
4200
-      }
4201
-
4202
-      // If it's time to release the scroll:
4203
-      //   Return now so you don't hit the preventDefault.
4204
-      if (swiper.mousewheel.releaseScroll(newEvent)) {
4205
-        return true;
4206
-      }
4207
-    } else {
4208
-      // Freemode or scrollContainer:
4209
-
4210
-      // If we recently snapped after a momentum scroll, then ignore wheel events
4211
-      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
4212
-      // or if it's a new scroll (larger delta or inverse sign as last event before
4213
-      // an end-of-momentum snap).
4214
-      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
4215
-      const { lastEventBeforeSnap } = swiper.mousewheel;
4216
-      const ignoreWheelEvents = lastEventBeforeSnap
4217
-        && newEvent.time < lastEventBeforeSnap.time + 500
4218
-        && newEvent.delta <= lastEventBeforeSnap.delta
4219
-        && newEvent.direction === lastEventBeforeSnap.direction;
4220
-      if (!ignoreWheelEvents) {
4221
-        swiper.mousewheel.lastEventBeforeSnap = undefined;
4222
-
4223
-        if (swiper.params.loop) {
4224
-          swiper.loopFix();
4225
-        }
4226
-        let position = swiper.getTranslate() + (delta * params.sensitivity);
4227
-        const wasBeginning = swiper.isBeginning;
4228
-        const wasEnd = swiper.isEnd;
4229
-
4230
-        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
4231
-        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
4232
-
4233
-        swiper.setTransition(0);
4234
-        swiper.setTranslate(position);
4235
-        swiper.updateProgress();
4236
-        swiper.updateActiveIndex();
4237
-        swiper.updateSlidesClasses();
4238
-
4239
-        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
4240
-          swiper.updateSlidesClasses();
4241
-        }
4242
-
4243
-        if (swiper.params.freeModeSticky) {
4244
-          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
4245
-          // the end of a momentum scroll by storing recent (N=15?) wheel events.
4246
-          // 1. do all N events have decreasing or same (absolute value) delta?
4247
-          // 2. did all N events arrive in the last M (M=500?) msecs?
4248
-          // 3. does the earliest event have an (absolute value) delta that's
4249
-          //    at least P (P=1?) larger than the most recent event's delta?
4250
-          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
4251
-          // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
4252
-          // Snap immediately and ignore remaining wheel events in this scroll.
4253
-          // See comment above for "remaining wheel events in this scroll" determination.
4254
-          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
4255
-          clearTimeout(swiper.mousewheel.timeout);
4256
-          swiper.mousewheel.timeout = undefined;
4257
-          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
4258
-          if (recentWheelEvents.length >= 15) {
4259
-            recentWheelEvents.shift(); // only store the last N events
4260
-          }
4261
-          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
4262
-          const firstEvent = recentWheelEvents[0];
4263
-          recentWheelEvents.push(newEvent);
4264
-          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
4265
-            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
4266
-            recentWheelEvents.splice(0);
4267
-          } else if (recentWheelEvents.length >= 15
4268
-              && newEvent.time - firstEvent.time < 500
4269
-              && firstEvent.delta - newEvent.delta >= 1
4270
-              && newEvent.delta <= 6
4271
-          ) {
4272
-            // We're at the end of the deceleration of a momentum scroll, so there's no need
4273
-            // to wait for more events. Snap ASAP on the next tick.
4274
-            // Also, because there's some remaining momentum we'll bias the snap in the
4275
-            // direction of the ongoing scroll because it's better UX for the scroll to snap
4276
-            // in the same direction as the scroll instead of reversing to snap.  Therefore,
4277
-            // if it's already scrolled more than 20% in the current direction, keep going.
4278
-            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
4279
-            swiper.mousewheel.lastEventBeforeSnap = newEvent;
4280
-            recentWheelEvents.splice(0);
4281
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
4282
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
4283
-            }, 0); // no delay; move on next tick
4284
-          }
4285
-          if (!swiper.mousewheel.timeout) {
4286
-            // if we get here, then we haven't detected the end of a momentum scroll, so
4287
-            // we'll consider a scroll "complete" when there haven't been any wheel events
4288
-            // for 500ms.
4289
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
4290
-              const snapToThreshold = 0.5;
4291
-              swiper.mousewheel.lastEventBeforeSnap = newEvent;
4292
-              recentWheelEvents.splice(0);
4293
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
4294
-            }, 500);
4295
-          }
4296
-        }
4297
-
4298
-        // Emit event
4299
-        if (!ignoreWheelEvents) swiper.emit('scroll', e);
4300
-
4301
-        // Stop autoplay
4302
-        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
4303
-        // Return page scroll on edge positions
4304
-        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
4305
-      }
4306
-    }
4307
-
4308
-    if (e.preventDefault) e.preventDefault();
4309
-    else e.returnValue = false;
4310
-    return false;
4311
-  },
4312
-  animateSlider(newEvent) {
4313
-    const swiper = this;
4314
-    // If the movement is NOT big enough and
4315
-    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
4316
-    //   Don't go any further (avoid insignificant scroll movement).
4317
-    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
4318
-      // Return false as a default
4319
-      return true;
4320
-    }
4321
-    // If user is scrolling towards the end:
4322
-    //   If the slider hasn't hit the latest slide or
4323
-    //   if the slider is a loop and
4324
-    //   if the slider isn't moving right now:
4325
-    //     Go to next slide and
4326
-    //     emit a scroll event.
4327
-    // Else (the user is scrolling towards the beginning) and
4328
-    // if the slider hasn't hit the first slide or
4329
-    // if the slider is a loop and
4330
-    // if the slider isn't moving right now:
4331
-    //   Go to prev slide and
4332
-    //   emit a scroll event.
4333
-    if (newEvent.direction < 0) {
4334
-      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
4335
-        swiper.slideNext();
4336
-        swiper.emit('scroll', newEvent.raw);
4337
-      }
4338
-    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
4339
-      swiper.slidePrev();
4340
-      swiper.emit('scroll', newEvent.raw);
4341
-    }
4342
-    // If you got here is because an animation has been triggered so store the current time
4343
-    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();
4344
-    // Return false as a default
4345
-    return false;
4346
-  },
4347
-  releaseScroll(newEvent) {
4348
-    const swiper = this;
4349
-    const params = swiper.params.mousewheel;
4350
-    if (newEvent.direction < 0) {
4351
-      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
4352
-        // Return true to animate scroll on edges
4353
-        return true;
4354
-      }
4355
-    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
4356
-      // Return true to animate scroll on edges
4357
-      return true;
4358
-    }
4359
-    return false;
4360
-  },
4361
-  enable() {
4362
-    const swiper = this;
4363
-    const event = Mousewheel.event();
4364
-    if (swiper.params.cssMode) {
4365
-      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
4366
-      return true;
4367
-    }
4368
-    if (!event) return false;
4369
-    if (swiper.mousewheel.enabled) return false;
4370
-    let target = swiper.$el;
4371
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4372
-      target = $(swiper.params.mousewheel.eventsTarged);
4373
-    }
4374
-    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
4375
-    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
4376
-    target.on(event, swiper.mousewheel.handle);
4377
-    swiper.mousewheel.enabled = true;
4378
-    return true;
4379
-  },
4380
-  disable() {
4381
-    const swiper = this;
4382
-    const event = Mousewheel.event();
4383
-    if (swiper.params.cssMode) {
4384
-      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
4385
-      return true;
4386
-    }
4387
-    if (!event) return false;
4388
-    if (!swiper.mousewheel.enabled) return false;
4389
-    let target = swiper.$el;
4390
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4391
-      target = $(swiper.params.mousewheel.eventsTarged);
4392
-    }
4393
-    target.off(event, swiper.mousewheel.handle);
4394
-    swiper.mousewheel.enabled = false;
4395
-    return true;
4396
-  },
4397
-};
4398
-
4399
-var Mousewheel$1 = {
4400
-  name: 'mousewheel',
4401
-  params: {
4402
-    mousewheel: {
4403
-      enabled: false,
4404
-      releaseOnEdges: false,
4405
-      invert: false,
4406
-      forceToAxis: false,
4407
-      sensitivity: 1,
4408
-      eventsTarged: 'container',
4409
-    },
4410
-  },
4411
-  create() {
4412
-    const swiper = this;
4413
-    Utils.extend(swiper, {
4414
-      mousewheel: {
4415
-        enabled: false,
4416
-        enable: Mousewheel.enable.bind(swiper),
4417
-        disable: Mousewheel.disable.bind(swiper),
4418
-        handle: Mousewheel.handle.bind(swiper),
4419
-        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
4420
-        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
4421
-        animateSlider: Mousewheel.animateSlider.bind(swiper),
4422
-        releaseScroll: Mousewheel.releaseScroll.bind(swiper),
4423
-        lastScrollTime: Utils.now(),
4424
-        lastEventBeforeSnap: undefined,
4425
-        recentWheelEvents: [],
4426
-      },
4427
-    });
4428
-  },
4429
-  on: {
4430
-    init() {
4431
-      const swiper = this;
4432
-      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
4433
-        swiper.mousewheel.disable();
4434
-      }
4435
-      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
4436
-    },
4437
-    destroy() {
4438
-      const swiper = this;
4439
-      if (swiper.params.cssMode) {
4440
-        swiper.mousewheel.enable();
4441
-      }
4442
-      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
4443
-    },
4444
-  },
4445
-};
4446
-
4447
-const Navigation = {
4448
-  update() {
4449
-    // Update Navigation Buttons
4450
-    const swiper = this;
4451
-    const params = swiper.params.navigation;
4452
-
4453
-    if (swiper.params.loop) return;
4454
-    const { $nextEl, $prevEl } = swiper.navigation;
4455
-
4456
-    if ($prevEl && $prevEl.length > 0) {
4457
-      if (swiper.isBeginning) {
4458
-        $prevEl.addClass(params.disabledClass);
4459
-      } else {
4460
-        $prevEl.removeClass(params.disabledClass);
4461
-      }
4462
-      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4463
-    }
4464
-    if ($nextEl && $nextEl.length > 0) {
4465
-      if (swiper.isEnd) {
4466
-        $nextEl.addClass(params.disabledClass);
4467
-      } else {
4468
-        $nextEl.removeClass(params.disabledClass);
4469
-      }
4470
-      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4471
-    }
4472
-  },
4473
-  onPrevClick(e) {
4474
-    const swiper = this;
4475
-    e.preventDefault();
4476
-    if (swiper.isBeginning && !swiper.params.loop) return;
4477
-    swiper.slidePrev();
4478
-  },
4479
-  onNextClick(e) {
4480
-    const swiper = this;
4481
-    e.preventDefault();
4482
-    if (swiper.isEnd && !swiper.params.loop) return;
4483
-    swiper.slideNext();
4484
-  },
4485
-  init() {
4486
-    const swiper = this;
4487
-    const params = swiper.params.navigation;
4488
-    if (!(params.nextEl || params.prevEl)) return;
4489
-
4490
-    let $nextEl;
4491
-    let $prevEl;
4492
-    if (params.nextEl) {
4493
-      $nextEl = $(params.nextEl);
4494
-      if (
4495
-        swiper.params.uniqueNavElements
4496
-        && typeof params.nextEl === 'string'
4497
-        && $nextEl.length > 1
4498
-        && swiper.$el.find(params.nextEl).length === 1
4499
-      ) {
4500
-        $nextEl = swiper.$el.find(params.nextEl);
4501
-      }
4502
-    }
4503
-    if (params.prevEl) {
4504
-      $prevEl = $(params.prevEl);
4505
-      if (
4506
-        swiper.params.uniqueNavElements
4507
-        && typeof params.prevEl === 'string'
4508
-        && $prevEl.length > 1
4509
-        && swiper.$el.find(params.prevEl).length === 1
4510
-      ) {
4511
-        $prevEl = swiper.$el.find(params.prevEl);
4512
-      }
4513
-    }
4514
-
4515
-    if ($nextEl && $nextEl.length > 0) {
4516
-      $nextEl.on('click', swiper.navigation.onNextClick);
4517
-    }
4518
-    if ($prevEl && $prevEl.length > 0) {
4519
-      $prevEl.on('click', swiper.navigation.onPrevClick);
4520
-    }
4521
-
4522
-    Utils.extend(swiper.navigation, {
4523
-      $nextEl,
4524
-      nextEl: $nextEl && $nextEl[0],
4525
-      $prevEl,
4526
-      prevEl: $prevEl && $prevEl[0],
4527
-    });
4528
-  },
4529
-  destroy() {
4530
-    const swiper = this;
4531
-    const { $nextEl, $prevEl } = swiper.navigation;
4532
-    if ($nextEl && $nextEl.length) {
4533
-      $nextEl.off('click', swiper.navigation.onNextClick);
4534
-      $nextEl.removeClass(swiper.params.navigation.disabledClass);
4535
-    }
4536
-    if ($prevEl && $prevEl.length) {
4537
-      $prevEl.off('click', swiper.navigation.onPrevClick);
4538
-      $prevEl.removeClass(swiper.params.navigation.disabledClass);
4539
-    }
4540
-  },
4541
-};
4542
-
4543
-var Navigation$1 = {
4544
-  name: 'navigation',
4545
-  params: {
4546
-    navigation: {
4547
-      nextEl: null,
4548
-      prevEl: null,
4549
-
4550
-      hideOnClick: false,
4551
-      disabledClass: 'swiper-button-disabled',
4552
-      hiddenClass: 'swiper-button-hidden',
4553
-      lockClass: 'swiper-button-lock',
4554
-    },
4555
-  },
4556
-  create() {
4557
-    const swiper = this;
4558
-    Utils.extend(swiper, {
4559
-      navigation: {
4560
-        init: Navigation.init.bind(swiper),
4561
-        update: Navigation.update.bind(swiper),
4562
-        destroy: Navigation.destroy.bind(swiper),
4563
-        onNextClick: Navigation.onNextClick.bind(swiper),
4564
-        onPrevClick: Navigation.onPrevClick.bind(swiper),
4565
-      },
4566
-    });
4567
-  },
4568
-  on: {
4569
-    init() {
4570
-      const swiper = this;
4571
-      swiper.navigation.init();
4572
-      swiper.navigation.update();
4573
-    },
4574
-    toEdge() {
4575
-      const swiper = this;
4576
-      swiper.navigation.update();
4577
-    },
4578
-    fromEdge() {
4579
-      const swiper = this;
4580
-      swiper.navigation.update();
4581
-    },
4582
-    destroy() {
4583
-      const swiper = this;
4584
-      swiper.navigation.destroy();
4585
-    },
4586
-    click(e) {
4587
-      const swiper = this;
4588
-      const { $nextEl, $prevEl } = swiper.navigation;
4589
-      if (
4590
-        swiper.params.navigation.hideOnClick
4591
-        && !$(e.target).is($prevEl)
4592
-        && !$(e.target).is($nextEl)
4593
-      ) {
4594
-        let isHidden;
4595
-        if ($nextEl) {
4596
-          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
4597
-        } else if ($prevEl) {
4598
-          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
4599
-        }
4600
-        if (isHidden === true) {
4601
-          swiper.emit('navigationShow', swiper);
4602
-        } else {
4603
-          swiper.emit('navigationHide', swiper);
4604
-        }
4605
-        if ($nextEl) {
4606
-          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
4607
-        }
4608
-        if ($prevEl) {
4609
-          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
4610
-        }
4611
-      }
4612
-    },
4613
-  },
4614
-};
4615
-
4616
-const Pagination = {
4617
-  update() {
4618
-    // Render || Update Pagination bullets/items
4619
-    const swiper = this;
4620
-    const rtl = swiper.rtl;
4621
-    const params = swiper.params.pagination;
4622
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4623
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4624
-    const $el = swiper.pagination.$el;
4625
-    // Current/Total
4626
-    let current;
4627
-    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4628
-    if (swiper.params.loop) {
4629
-      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
4630
-      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
4631
-        current -= (slidesLength - (swiper.loopedSlides * 2));
4632
-      }
4633
-      if (current > total - 1) current -= total;
4634
-      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
4635
-    } else if (typeof swiper.snapIndex !== 'undefined') {
4636
-      current = swiper.snapIndex;
4637
-    } else {
4638
-      current = swiper.activeIndex || 0;
4639
-    }
4640
-    // Types
4641
-    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
4642
-      const bullets = swiper.pagination.bullets;
4643
-      let firstIndex;
4644
-      let lastIndex;
4645
-      let midIndex;
4646
-      if (params.dynamicBullets) {
4647
-        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
4648
-        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
4649
-        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
4650
-          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
4651
-          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
4652
-            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
4653
-          } else if (swiper.pagination.dynamicBulletIndex < 0) {
4654
-            swiper.pagination.dynamicBulletIndex = 0;
4655
-          }
4656
-        }
4657
-        firstIndex = current - swiper.pagination.dynamicBulletIndex;
4658
-        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
4659
-        midIndex = (lastIndex + firstIndex) / 2;
4660
-      }
4661
-      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
4662
-      if ($el.length > 1) {
4663
-        bullets.each((index, bullet) => {
4664
-          const $bullet = $(bullet);
4665
-          const bulletIndex = $bullet.index();
4666
-          if (bulletIndex === current) {
4667
-            $bullet.addClass(params.bulletActiveClass);
4668
-          }
4669
-          if (params.dynamicBullets) {
4670
-            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
4671
-              $bullet.addClass(`${params.bulletActiveClass}-main`);
4672
-            }
4673
-            if (bulletIndex === firstIndex) {
4674
-              $bullet
4675
-                .prev()
4676
-                .addClass(`${params.bulletActiveClass}-prev`)
4677
-                .prev()
4678
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
4679
-            }
4680
-            if (bulletIndex === lastIndex) {
4681
-              $bullet
4682
-                .next()
4683
-                .addClass(`${params.bulletActiveClass}-next`)
4684
-                .next()
4685
-                .addClass(`${params.bulletActiveClass}-next-next`);
4686
-            }
4687
-          }
4688
-        });
4689
-      } else {
4690
-        const $bullet = bullets.eq(current);
4691
-        const bulletIndex = $bullet.index();
4692
-        $bullet.addClass(params.bulletActiveClass);
4693
-        if (params.dynamicBullets) {
4694
-          const $firstDisplayedBullet = bullets.eq(firstIndex);
4695
-          const $lastDisplayedBullet = bullets.eq(lastIndex);
4696
-          for (let i = firstIndex; i <= lastIndex; i += 1) {
4697
-            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
4698
-          }
4699
-          if (swiper.params.loop) {
4700
-            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
4701
-              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
4702
-                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
4703
-              }
4704
-              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
4705
-            } else {
4706
-              $firstDisplayedBullet
4707
-                .prev()
4708
-                .addClass(`${params.bulletActiveClass}-prev`)
4709
-                .prev()
4710
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
4711
-              $lastDisplayedBullet
4712
-                .next()
4713
-                .addClass(`${params.bulletActiveClass}-next`)
4714
-                .next()
4715
-                .addClass(`${params.bulletActiveClass}-next-next`);
4716
-            }
4717
-          } else {
4718
-            $firstDisplayedBullet
4719
-              .prev()
4720
-              .addClass(`${params.bulletActiveClass}-prev`)
4721
-              .prev()
4722
-              .addClass(`${params.bulletActiveClass}-prev-prev`);
4723
-            $lastDisplayedBullet
4724
-              .next()
4725
-              .addClass(`${params.bulletActiveClass}-next`)
4726
-              .next()
4727
-              .addClass(`${params.bulletActiveClass}-next-next`);
4728
-          }
4729
-        }
4730
-      }
4731
-      if (params.dynamicBullets) {
4732
-        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
4733
-        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
4734
-        const offsetProp = rtl ? 'right' : 'left';
4735
-        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
4736
-      }
4737
-    }
4738
-    if (params.type === 'fraction') {
4739
-      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
4740
-      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
4741
-    }
4742
-    if (params.type === 'progressbar') {
4743
-      let progressbarDirection;
4744
-      if (params.progressbarOpposite) {
4745
-        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
4746
-      } else {
4747
-        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
4748
-      }
4749
-      const scale = (current + 1) / total;
4750
-      let scaleX = 1;
4751
-      let scaleY = 1;
4752
-      if (progressbarDirection === 'horizontal') {
4753
-        scaleX = scale;
4754
-      } else {
4755
-        scaleY = scale;
4756
-      }
4757
-      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
4758
-    }
4759
-    if (params.type === 'custom' && params.renderCustom) {
4760
-      $el.html(params.renderCustom(swiper, current + 1, total));
4761
-      swiper.emit('paginationRender', swiper, $el[0]);
4762
-    } else {
4763
-      swiper.emit('paginationUpdate', swiper, $el[0]);
4764
-    }
4765
-    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4766
-  },
4767
-  render() {
4768
-    // Render Container
4769
-    const swiper = this;
4770
-    const params = swiper.params.pagination;
4771
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4772
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4773
-
4774
-    const $el = swiper.pagination.$el;
4775
-    let paginationHTML = '';
4776
-    if (params.type === 'bullets') {
4777
-      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4778
-      for (let i = 0; i < numberOfBullets; i += 1) {
4779
-        if (params.renderBullet) {
4780
-          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
4781
-        } else {
4782
-          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
4783
-        }
4784
-      }
4785
-      $el.html(paginationHTML);
4786
-      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);
4787
-    }
4788
-    if (params.type === 'fraction') {
4789
-      if (params.renderFraction) {
4790
-        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
4791
-      } else {
4792
-        paginationHTML = `<span class="${params.currentClass}"></span>`
4793
-        + ' / '
4794
-        + `<span class="${params.totalClass}"></span>`;
4795
-      }
4796
-      $el.html(paginationHTML);
4797
-    }
4798
-    if (params.type === 'progressbar') {
4799
-      if (params.renderProgressbar) {
4800
-        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
4801
-      } else {
4802
-        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
4803
-      }
4804
-      $el.html(paginationHTML);
4805
-    }
4806
-    if (params.type !== 'custom') {
4807
-      swiper.emit('paginationRender', swiper.pagination.$el[0]);
4808
-    }
4809
-  },
4810
-  init() {
4811
-    const swiper = this;
4812
-    const params = swiper.params.pagination;
4813
-    if (!params.el) return;
4814
-
4815
-    let $el = $(params.el);
4816
-    if ($el.length === 0) return;
4817
-
4818
-    if (
4819
-      swiper.params.uniqueNavElements
4820
-      && typeof params.el === 'string'
4821
-      && $el.length > 1
4822
-      && swiper.$el.find(params.el).length === 1
4823
-    ) {
4824
-      $el = swiper.$el.find(params.el);
4825
-    }
4826
-
4827
-    if (params.type === 'bullets' && params.clickable) {
4828
-      $el.addClass(params.clickableClass);
4829
-    }
4830
-
4831
-    $el.addClass(params.modifierClass + params.type);
4832
-
4833
-    if (params.type === 'bullets' && params.dynamicBullets) {
4834
-      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
4835
-      swiper.pagination.dynamicBulletIndex = 0;
4836
-      if (params.dynamicMainBullets < 1) {
4837
-        params.dynamicMainBullets = 1;
4838
-      }
4839
-    }
4840
-    if (params.type === 'progressbar' && params.progressbarOpposite) {
4841
-      $el.addClass(params.progressbarOppositeClass);
4842
-    }
4843
-
4844
-    if (params.clickable) {
4845
-      $el.on('click', `.${params.bulletClass}`, function onClick(e) {
4846
-        e.preventDefault();
4847
-        let index = $(this).index() * swiper.params.slidesPerGroup;
4848
-        if (swiper.params.loop) index += swiper.loopedSlides;
4849
-        swiper.slideTo(index);
4850
-      });
4851
-    }
4852
-
4853
-    Utils.extend(swiper.pagination, {
4854
-      $el,
4855
-      el: $el[0],
4856
-    });
4857
-  },
4858
-  destroy() {
4859
-    const swiper = this;
4860
-    const params = swiper.params.pagination;
4861
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4862
-    const $el = swiper.pagination.$el;
4863
-
4864
-    $el.removeClass(params.hiddenClass);
4865
-    $el.removeClass(params.modifierClass + params.type);
4866
-    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
4867
-    if (params.clickable) {
4868
-      $el.off('click', `.${params.bulletClass}`);
4869
-    }
4870
-  },
4871
-};
4872
-
4873
-var Pagination$1 = {
4874
-  name: 'pagination',
4875
-  params: {
4876
-    pagination: {
4877
-      el: null,
4878
-      bulletElement: 'span',
4879
-      clickable: false,
4880
-      hideOnClick: false,
4881
-      renderBullet: null,
4882
-      renderProgressbar: null,
4883
-      renderFraction: null,
4884
-      renderCustom: null,
4885
-      progressbarOpposite: false,
4886
-      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
4887
-      dynamicBullets: false,
4888
-      dynamicMainBullets: 1,
4889
-      formatFractionCurrent: (number) => number,
4890
-      formatFractionTotal: (number) => number,
4891
-      bulletClass: 'swiper-pagination-bullet',
4892
-      bulletActiveClass: 'swiper-pagination-bullet-active',
4893
-      modifierClass: 'swiper-pagination-', // NEW
4894
-      currentClass: 'swiper-pagination-current',
4895
-      totalClass: 'swiper-pagination-total',
4896
-      hiddenClass: 'swiper-pagination-hidden',
4897
-      progressbarFillClass: 'swiper-pagination-progressbar-fill',
4898
-      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
4899
-      clickableClass: 'swiper-pagination-clickable', // NEW
4900
-      lockClass: 'swiper-pagination-lock',
4901
-    },
4902
-  },
4903
-  create() {
4904
-    const swiper = this;
4905
-    Utils.extend(swiper, {
4906
-      pagination: {
4907
-        init: Pagination.init.bind(swiper),
4908
-        render: Pagination.render.bind(swiper),
4909
-        update: Pagination.update.bind(swiper),
4910
-        destroy: Pagination.destroy.bind(swiper),
4911
-        dynamicBulletIndex: 0,
4912
-      },
4913
-    });
4914
-  },
4915
-  on: {
4916
-    init() {
4917
-      const swiper = this;
4918
-      swiper.pagination.init();
4919
-      swiper.pagination.render();
4920
-      swiper.pagination.update();
4921
-    },
4922
-    activeIndexChange() {
4923
-      const swiper = this;
4924
-      if (swiper.params.loop) {
4925
-        swiper.pagination.update();
4926
-      } else if (typeof swiper.snapIndex === 'undefined') {
4927
-        swiper.pagination.update();
4928
-      }
4929
-    },
4930
-    snapIndexChange() {
4931
-      const swiper = this;
4932
-      if (!swiper.params.loop) {
4933
-        swiper.pagination.update();
4934
-      }
4935
-    },
4936
-    slidesLengthChange() {
4937
-      const swiper = this;
4938
-      if (swiper.params.loop) {
4939
-        swiper.pagination.render();
4940
-        swiper.pagination.update();
4941
-      }
4942
-    },
4943
-    snapGridLengthChange() {
4944
-      const swiper = this;
4945
-      if (!swiper.params.loop) {
4946
-        swiper.pagination.render();
4947
-        swiper.pagination.update();
4948
-      }
4949
-    },
4950
-    destroy() {
4951
-      const swiper = this;
4952
-      swiper.pagination.destroy();
4953
-    },
4954
-    click(e) {
4955
-      const swiper = this;
4956
-      if (
4957
-        swiper.params.pagination.el
4958
-        && swiper.params.pagination.hideOnClick
4959
-        && swiper.pagination.$el.length > 0
4960
-        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
4961
-      ) {
4962
-        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
4963
-        if (isHidden === true) {
4964
-          swiper.emit('paginationShow', swiper);
4965
-        } else {
4966
-          swiper.emit('paginationHide', swiper);
4967
-        }
4968
-        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
4969
-      }
4970
-    },
4971
-  },
4972
-};
4973
-
4974
-const Scrollbar = {
4975
-  setTranslate() {
4976
-    const swiper = this;
4977
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4978
-    const { scrollbar, rtlTranslate: rtl, progress } = swiper;
4979
-    const {
4980
-      dragSize, trackSize, $dragEl, $el,
4981
-    } = scrollbar;
4982
-    const params = swiper.params.scrollbar;
4983
-
4984
-    let newSize = dragSize;
4985
-    let newPos = (trackSize - dragSize) * progress;
4986
-    if (rtl) {
4987
-      newPos = -newPos;
4988
-      if (newPos > 0) {
4989
-        newSize = dragSize - newPos;
4990
-        newPos = 0;
4991
-      } else if (-newPos + dragSize > trackSize) {
4992
-        newSize = trackSize + newPos;
4993
-      }
4994
-    } else if (newPos < 0) {
4995
-      newSize = dragSize + newPos;
4996
-      newPos = 0;
4997
-    } else if (newPos + dragSize > trackSize) {
4998
-      newSize = trackSize - newPos;
4999
-    }
5000
-    if (swiper.isHorizontal()) {
5001
-      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
5002
-      $dragEl[0].style.width = `${newSize}px`;
5003
-    } else {
5004
-      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
5005
-      $dragEl[0].style.height = `${newSize}px`;
5006
-    }
5007
-    if (params.hide) {
5008
-      clearTimeout(swiper.scrollbar.timeout);
5009
-      $el[0].style.opacity = 1;
5010
-      swiper.scrollbar.timeout = setTimeout(() => {
5011
-        $el[0].style.opacity = 0;
5012
-        $el.transition(400);
5013
-      }, 1000);
5014
-    }
5015
-  },
5016
-  setTransition(duration) {
5017
-    const swiper = this;
5018
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5019
-    swiper.scrollbar.$dragEl.transition(duration);
5020
-  },
5021
-  updateSize() {
5022
-    const swiper = this;
5023
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5024
-
5025
-    const { scrollbar } = swiper;
5026
-    const { $dragEl, $el } = scrollbar;
5027
-
5028
-    $dragEl[0].style.width = '';
5029
-    $dragEl[0].style.height = '';
5030
-    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
5031
-
5032
-    const divider = swiper.size / swiper.virtualSize;
5033
-    const moveDivider = divider * (trackSize / swiper.size);
5034
-    let dragSize;
5035
-    if (swiper.params.scrollbar.dragSize === 'auto') {
5036
-      dragSize = trackSize * divider;
5037
-    } else {
5038
-      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
5039
-    }
5040
-
5041
-    if (swiper.isHorizontal()) {
5042
-      $dragEl[0].style.width = `${dragSize}px`;
5043
-    } else {
5044
-      $dragEl[0].style.height = `${dragSize}px`;
5045
-    }
5046
-
5047
-    if (divider >= 1) {
5048
-      $el[0].style.display = 'none';
5049
-    } else {
5050
-      $el[0].style.display = '';
5051
-    }
5052
-    if (swiper.params.scrollbar.hide) {
5053
-      $el[0].style.opacity = 0;
5054
-    }
5055
-    Utils.extend(scrollbar, {
5056
-      trackSize,
5057
-      divider,
5058
-      moveDivider,
5059
-      dragSize,
5060
-    });
5061
-    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
5062
-  },
5063
-  getPointerPosition(e) {
5064
-    const swiper = this;
5065
-    if (swiper.isHorizontal()) {
5066
-      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
5067
-    }
5068
-    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
5069
-  },
5070
-  setDragPosition(e) {
5071
-    const swiper = this;
5072
-    const { scrollbar, rtlTranslate: rtl } = swiper;
5073
-    const {
5074
-      $el,
5075
-      dragSize,
5076
-      trackSize,
5077
-      dragStartPos,
5078
-    } = scrollbar;
5079
-
5080
-    let positionRatio;
5081
-    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
5082
-      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
5083
-    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
5084
-    if (rtl) {
5085
-      positionRatio = 1 - positionRatio;
5086
-    }
5087
-
5088
-    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
5089
-
5090
-    swiper.updateProgress(position);
5091
-    swiper.setTranslate(position);
5092
-    swiper.updateActiveIndex();
5093
-    swiper.updateSlidesClasses();
5094
-  },
5095
-  onDragStart(e) {
5096
-    const swiper = this;
5097
-    const params = swiper.params.scrollbar;
5098
-    const { scrollbar, $wrapperEl } = swiper;
5099
-    const { $el, $dragEl } = scrollbar;
5100
-    swiper.scrollbar.isTouched = true;
5101
-    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
5102
-      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
5103
-    e.preventDefault();
5104
-    e.stopPropagation();
5105
-
5106
-    $wrapperEl.transition(100);
5107
-    $dragEl.transition(100);
5108
-    scrollbar.setDragPosition(e);
5109
-
5110
-    clearTimeout(swiper.scrollbar.dragTimeout);
5111
-
5112
-    $el.transition(0);
5113
-    if (params.hide) {
5114
-      $el.css('opacity', 1);
5115
-    }
5116
-    if (swiper.params.cssMode) {
5117
-      swiper.$wrapperEl.css('scroll-snap-type', 'none');
5118
-    }
5119
-    swiper.emit('scrollbarDragStart', e);
5120
-  },
5121
-  onDragMove(e) {
5122
-    const swiper = this;
5123
-    const { scrollbar, $wrapperEl } = swiper;
5124
-    const { $el, $dragEl } = scrollbar;
5125
-
5126
-    if (!swiper.scrollbar.isTouched) return;
5127
-    if (e.preventDefault) e.preventDefault();
5128
-    else e.returnValue = false;
5129
-    scrollbar.setDragPosition(e);
5130
-    $wrapperEl.transition(0);
5131
-    $el.transition(0);
5132
-    $dragEl.transition(0);
5133
-    swiper.emit('scrollbarDragMove', e);
5134
-  },
5135
-  onDragEnd(e) {
5136
-    const swiper = this;
5137
-
5138
-    const params = swiper.params.scrollbar;
5139
-    const { scrollbar, $wrapperEl } = swiper;
5140
-    const { $el } = scrollbar;
5141
-
5142
-    if (!swiper.scrollbar.isTouched) return;
5143
-    swiper.scrollbar.isTouched = false;
5144
-    if (swiper.params.cssMode) {
5145
-      swiper.$wrapperEl.css('scroll-snap-type', '');
5146
-      $wrapperEl.transition('');
5147
-    }
5148
-    if (params.hide) {
5149
-      clearTimeout(swiper.scrollbar.dragTimeout);
5150
-      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {
5151
-        $el.css('opacity', 0);
5152
-        $el.transition(400);
5153
-      }, 1000);
5154
-    }
5155
-    swiper.emit('scrollbarDragEnd', e);
5156
-    if (params.snapOnRelease) {
5157
-      swiper.slideToClosest();
5158
-    }
5159
-  },
5160
-  enableDraggable() {
5161
-    const swiper = this;
5162
-    if (!swiper.params.scrollbar.el) return;
5163
-    const {
5164
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
5165
-    } = swiper;
5166
-    const $el = scrollbar.$el;
5167
-    const target = $el[0];
5168
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5169
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5170
-    if (!Support.touch) {
5171
-      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5172
-      document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5173
-      document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5174
-    } else {
5175
-      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
5176
-      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
5177
-      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
5178
-    }
5179
-  },
5180
-  disableDraggable() {
5181
-    const swiper = this;
5182
-    if (!swiper.params.scrollbar.el) return;
5183
-    const {
5184
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
5185
-    } = swiper;
5186
-    const $el = scrollbar.$el;
5187
-    const target = $el[0];
5188
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5189
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5190
-    if (!Support.touch) {
5191
-      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5192
-      document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5193
-      document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5194
-    } else {
5195
-      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
5196
-      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
5197
-      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
5198
-    }
5199
-  },
5200
-  init() {
5201
-    const swiper = this;
5202
-    if (!swiper.params.scrollbar.el) return;
5203
-    const { scrollbar, $el: $swiperEl } = swiper;
5204
-    const params = swiper.params.scrollbar;
5205
-
5206
-    let $el = $(params.el);
5207
-    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
5208
-      $el = $swiperEl.find(params.el);
5209
-    }
5210
-
5211
-    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
5212
-    if ($dragEl.length === 0) {
5213
-      $dragEl = $(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
5214
-      $el.append($dragEl);
5215
-    }
5216
-
5217
-    Utils.extend(scrollbar, {
5218
-      $el,
5219
-      el: $el[0],
5220
-      $dragEl,
5221
-      dragEl: $dragEl[0],
5222
-    });
5223
-
5224
-    if (params.draggable) {
5225
-      scrollbar.enableDraggable();
5226
-    }
5227
-  },
5228
-  destroy() {
5229
-    const swiper = this;
5230
-    swiper.scrollbar.disableDraggable();
5231
-  },
5232
-};
5233
-
5234
-var Scrollbar$1 = {
5235
-  name: 'scrollbar',
5236
-  params: {
5237
-    scrollbar: {
5238
-      el: null,
5239
-      dragSize: 'auto',
5240
-      hide: false,
5241
-      draggable: false,
5242
-      snapOnRelease: true,
5243
-      lockClass: 'swiper-scrollbar-lock',
5244
-      dragClass: 'swiper-scrollbar-drag',
5245
-    },
5246
-  },
5247
-  create() {
5248
-    const swiper = this;
5249
-    Utils.extend(swiper, {
5250
-      scrollbar: {
5251
-        init: Scrollbar.init.bind(swiper),
5252
-        destroy: Scrollbar.destroy.bind(swiper),
5253
-        updateSize: Scrollbar.updateSize.bind(swiper),
5254
-        setTranslate: Scrollbar.setTranslate.bind(swiper),
5255
-        setTransition: Scrollbar.setTransition.bind(swiper),
5256
-        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
5257
-        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
5258
-        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
5259
-        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
5260
-        onDragStart: Scrollbar.onDragStart.bind(swiper),
5261
-        onDragMove: Scrollbar.onDragMove.bind(swiper),
5262
-        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
5263
-        isTouched: false,
5264
-        timeout: null,
5265
-        dragTimeout: null,
5266
-      },
5267
-    });
5268
-  },
5269
-  on: {
5270
-    init() {
5271
-      const swiper = this;
5272
-      swiper.scrollbar.init();
5273
-      swiper.scrollbar.updateSize();
5274
-      swiper.scrollbar.setTranslate();
5275
-    },
5276
-    update() {
5277
-      const swiper = this;
5278
-      swiper.scrollbar.updateSize();
5279
-    },
5280
-    resize() {
5281
-      const swiper = this;
5282
-      swiper.scrollbar.updateSize();
5283
-    },
5284
-    observerUpdate() {
5285
-      const swiper = this;
5286
-      swiper.scrollbar.updateSize();
5287
-    },
5288
-    setTranslate() {
5289
-      const swiper = this;
5290
-      swiper.scrollbar.setTranslate();
5291
-    },
5292
-    setTransition(duration) {
5293
-      const swiper = this;
5294
-      swiper.scrollbar.setTransition(duration);
5295
-    },
5296
-    destroy() {
5297
-      const swiper = this;
5298
-      swiper.scrollbar.destroy();
5299
-    },
5300
-  },
5301
-};
5302
-
5303
-const Parallax = {
5304
-  setTransform(el, progress) {
5305
-    const swiper = this;
5306
-    const { rtl } = swiper;
5307
-
5308
-    const $el = $(el);
5309
-    const rtlFactor = rtl ? -1 : 1;
5310
-
5311
-    const p = $el.attr('data-swiper-parallax') || '0';
5312
-    let x = $el.attr('data-swiper-parallax-x');
5313
-    let y = $el.attr('data-swiper-parallax-y');
5314
-    const scale = $el.attr('data-swiper-parallax-scale');
5315
-    const opacity = $el.attr('data-swiper-parallax-opacity');
5316
-
5317
-    if (x || y) {
5318
-      x = x || '0';
5319
-      y = y || '0';
5320
-    } else if (swiper.isHorizontal()) {
5321
-      x = p;
5322
-      y = '0';
5323
-    } else {
5324
-      y = p;
5325
-      x = '0';
5326
-    }
5327
-
5328
-    if ((x).indexOf('%') >= 0) {
5329
-      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
5330
-    } else {
5331
-      x = `${x * progress * rtlFactor}px`;
5332
-    }
5333
-    if ((y).indexOf('%') >= 0) {
5334
-      y = `${parseInt(y, 10) * progress}%`;
5335
-    } else {
5336
-      y = `${y * progress}px`;
5337
-    }
5338
-
5339
-    if (typeof opacity !== 'undefined' && opacity !== null) {
5340
-      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
5341
-      $el[0].style.opacity = currentOpacity;
5342
-    }
5343
-    if (typeof scale === 'undefined' || scale === null) {
5344
-      $el.transform(`translate3d(${x}, ${y}, 0px)`);
5345
-    } else {
5346
-      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
5347
-      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
5348
-    }
5349
-  },
5350
-  setTranslate() {
5351
-    const swiper = this;
5352
-    const {
5353
-      $el, slides, progress, snapGrid,
5354
-    } = swiper;
5355
-    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5356
-      .each((index, el) => {
5357
-        swiper.parallax.setTransform(el, progress);
5358
-      });
5359
-    slides.each((slideIndex, slideEl) => {
5360
-      let slideProgress = slideEl.progress;
5361
-      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
5362
-        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
5363
-      }
5364
-      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
5365
-      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5366
-        .each((index, el) => {
5367
-          swiper.parallax.setTransform(el, slideProgress);
5368
-        });
5369
-    });
5370
-  },
5371
-  setTransition(duration = this.params.speed) {
5372
-    const swiper = this;
5373
-    const { $el } = swiper;
5374
-    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5375
-      .each((index, parallaxEl) => {
5376
-        const $parallaxEl = $(parallaxEl);
5377
-        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
5378
-        if (duration === 0) parallaxDuration = 0;
5379
-        $parallaxEl.transition(parallaxDuration);
5380
-      });
5381
-  },
5382
-};
5383
-
5384
-var Parallax$1 = {
5385
-  name: 'parallax',
5386
-  params: {
5387
-    parallax: {
5388
-      enabled: false,
5389
-    },
5390
-  },
5391
-  create() {
5392
-    const swiper = this;
5393
-    Utils.extend(swiper, {
5394
-      parallax: {
5395
-        setTransform: Parallax.setTransform.bind(swiper),
5396
-        setTranslate: Parallax.setTranslate.bind(swiper),
5397
-        setTransition: Parallax.setTransition.bind(swiper),
5398
-      },
5399
-    });
5400
-  },
5401
-  on: {
5402
-    beforeInit() {
5403
-      const swiper = this;
5404
-      if (!swiper.params.parallax.enabled) return;
5405
-      swiper.params.watchSlidesProgress = true;
5406
-      swiper.originalParams.watchSlidesProgress = true;
5407
-    },
5408
-    init() {
5409
-      const swiper = this;
5410
-      if (!swiper.params.parallax.enabled) return;
5411
-      swiper.parallax.setTranslate();
5412
-    },
5413
-    setTranslate() {
5414
-      const swiper = this;
5415
-      if (!swiper.params.parallax.enabled) return;
5416
-      swiper.parallax.setTranslate();
5417
-    },
5418
-    setTransition(duration) {
5419
-      const swiper = this;
5420
-      if (!swiper.params.parallax.enabled) return;
5421
-      swiper.parallax.setTransition(duration);
5422
-    },
5423
-  },
5424
-};
5425
-
5426
-const Zoom = {
5427
-  // Calc Scale From Multi-touches
5428
-  getDistanceBetweenTouches(e) {
5429
-    if (e.targetTouches.length < 2) return 1;
5430
-    const x1 = e.targetTouches[0].pageX;
5431
-    const y1 = e.targetTouches[0].pageY;
5432
-    const x2 = e.targetTouches[1].pageX;
5433
-    const y2 = e.targetTouches[1].pageY;
5434
-    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));
5435
-    return distance;
5436
-  },
5437
-  // Events
5438
-  onGestureStart(e) {
5439
-    const swiper = this;
5440
-    const params = swiper.params.zoom;
5441
-    const zoom = swiper.zoom;
5442
-    const { gesture } = zoom;
5443
-    zoom.fakeGestureTouched = false;
5444
-    zoom.fakeGestureMoved = false;
5445
-    if (!Support.gestures) {
5446
-      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
5447
-        return;
5448
-      }
5449
-      zoom.fakeGestureTouched = true;
5450
-      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
5451
-    }
5452
-    if (!gesture.$slideEl || !gesture.$slideEl.length) {
5453
-      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);
5454
-      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5455
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5456
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5457
-      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5458
-      if (gesture.$imageWrapEl.length === 0) {
5459
-        gesture.$imageEl = undefined;
5460
-        return;
5461
-      }
5462
-    }
5463
-    if (gesture.$imageEl) {
5464
-      gesture.$imageEl.transition(0);
5465
-    }
5466
-    swiper.zoom.isScaling = true;
5467
-  },
5468
-  onGestureChange(e) {
5469
-    const swiper = this;
5470
-    const params = swiper.params.zoom;
5471
-    const zoom = swiper.zoom;
5472
-    const { gesture } = zoom;
5473
-    if (!Support.gestures) {
5474
-      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
5475
-        return;
5476
-      }
5477
-      zoom.fakeGestureMoved = true;
5478
-      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
5479
-    }
5480
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5481
-    if (Support.gestures) {
5482
-      zoom.scale = e.scale * zoom.currentScale;
5483
-    } else {
5484
-      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
5485
-    }
5486
-    if (zoom.scale > gesture.maxRatio) {
5487
-      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);
5488
-    }
5489
-    if (zoom.scale < params.minRatio) {
5490
-      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);
5491
-    }
5492
-    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5493
-  },
5494
-  onGestureEnd(e) {
5495
-    const swiper = this;
5496
-    const params = swiper.params.zoom;
5497
-    const zoom = swiper.zoom;
5498
-    const { gesture } = zoom;
5499
-    if (!Support.gestures) {
5500
-      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
5501
-        return;
5502
-      }
5503
-      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
5504
-        return;
5505
-      }
5506
-      zoom.fakeGestureTouched = false;
5507
-      zoom.fakeGestureMoved = false;
5508
-    }
5509
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5510
-    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
5511
-    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5512
-    zoom.currentScale = zoom.scale;
5513
-    zoom.isScaling = false;
5514
-    if (zoom.scale === 1) gesture.$slideEl = undefined;
5515
-  },
5516
-  onTouchStart(e) {
5517
-    const swiper = this;
5518
-    const zoom = swiper.zoom;
5519
-    const { gesture, image } = zoom;
5520
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5521
-    if (image.isTouched) return;
5522
-    if (Device.android && e.cancelable) e.preventDefault();
5523
-    image.isTouched = true;
5524
-    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
5525
-    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
5526
-  },
5527
-  onTouchMove(e) {
5528
-    const swiper = this;
5529
-    const zoom = swiper.zoom;
5530
-    const { gesture, image, velocity } = zoom;
5531
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5532
-    swiper.allowClick = false;
5533
-    if (!image.isTouched || !gesture.$slideEl) return;
5534
-
5535
-    if (!image.isMoved) {
5536
-      image.width = gesture.$imageEl[0].offsetWidth;
5537
-      image.height = gesture.$imageEl[0].offsetHeight;
5538
-      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
5539
-      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
5540
-      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
5541
-      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
5542
-      gesture.$imageWrapEl.transition(0);
5543
-      if (swiper.rtl) {
5544
-        image.startX = -image.startX;
5545
-        image.startY = -image.startY;
5546
-      }
5547
-    }
5548
-    // Define if we need image drag
5549
-    const scaledWidth = image.width * zoom.scale;
5550
-    const scaledHeight = image.height * zoom.scale;
5551
-
5552
-    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
5553
-
5554
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
5555
-    image.maxX = -image.minX;
5556
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
5557
-    image.maxY = -image.minY;
5558
-
5559
-    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
5560
-    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
5561
-
5562
-    if (!image.isMoved && !zoom.isScaling) {
5563
-      if (
5564
-        swiper.isHorizontal()
5565
-        && (
5566
-          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
5567
-          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
5568
-        )
5569
-      ) {
5570
-        image.isTouched = false;
5571
-        return;
5572
-      } if (
5573
-        !swiper.isHorizontal()
5574
-        && (
5575
-          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
5576
-          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
5577
-        )
5578
-      ) {
5579
-        image.isTouched = false;
5580
-        return;
5581
-      }
5582
-    }
5583
-    if (e.cancelable) {
5584
-      e.preventDefault();
5585
-    }
5586
-    e.stopPropagation();
5587
-
5588
-    image.isMoved = true;
5589
-    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
5590
-    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
5591
-
5592
-    if (image.currentX < image.minX) {
5593
-      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);
5594
-    }
5595
-    if (image.currentX > image.maxX) {
5596
-      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);
5597
-    }
5598
-
5599
-    if (image.currentY < image.minY) {
5600
-      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);
5601
-    }
5602
-    if (image.currentY > image.maxY) {
5603
-      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);
5604
-    }
5605
-
5606
-    // Velocity
5607
-    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
5608
-    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
5609
-    if (!velocity.prevTime) velocity.prevTime = Date.now();
5610
-    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
5611
-    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
5612
-    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
5613
-    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
5614
-    velocity.prevPositionX = image.touchesCurrent.x;
5615
-    velocity.prevPositionY = image.touchesCurrent.y;
5616
-    velocity.prevTime = Date.now();
5617
-
5618
-    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
5619
-  },
5620
-  onTouchEnd() {
5621
-    const swiper = this;
5622
-    const zoom = swiper.zoom;
5623
-    const { gesture, image, velocity } = zoom;
5624
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5625
-    if (!image.isTouched || !image.isMoved) {
5626
-      image.isTouched = false;
5627
-      image.isMoved = false;
5628
-      return;
5629
-    }
5630
-    image.isTouched = false;
5631
-    image.isMoved = false;
5632
-    let momentumDurationX = 300;
5633
-    let momentumDurationY = 300;
5634
-    const momentumDistanceX = velocity.x * momentumDurationX;
5635
-    const newPositionX = image.currentX + momentumDistanceX;
5636
-    const momentumDistanceY = velocity.y * momentumDurationY;
5637
-    const newPositionY = image.currentY + momentumDistanceY;
5638
-
5639
-    // Fix duration
5640
-    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
5641
-    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
5642
-    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
5643
-
5644
-    image.currentX = newPositionX;
5645
-    image.currentY = newPositionY;
5646
-
5647
-    // Define if we need image drag
5648
-    const scaledWidth = image.width * zoom.scale;
5649
-    const scaledHeight = image.height * zoom.scale;
5650
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
5651
-    image.maxX = -image.minX;
5652
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
5653
-    image.maxY = -image.minY;
5654
-    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
5655
-    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
5656
-
5657
-    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
5658
-  },
5659
-  onTransitionEnd() {
5660
-    const swiper = this;
5661
-    const zoom = swiper.zoom;
5662
-    const { gesture } = zoom;
5663
-    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
5664
-      if (gesture.$imageEl) {
5665
-        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
5666
-      }
5667
-      if (gesture.$imageWrapEl) {
5668
-        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
5669
-      }
5670
-
5671
-      zoom.scale = 1;
5672
-      zoom.currentScale = 1;
5673
-
5674
-      gesture.$slideEl = undefined;
5675
-      gesture.$imageEl = undefined;
5676
-      gesture.$imageWrapEl = undefined;
5677
-    }
5678
-  },
5679
-  // Toggle Zoom
5680
-  toggle(e) {
5681
-    const swiper = this;
5682
-    const zoom = swiper.zoom;
5683
-
5684
-    if (zoom.scale && zoom.scale !== 1) {
5685
-      // Zoom Out
5686
-      zoom.out();
5687
-    } else {
5688
-      // Zoom In
5689
-      zoom.in(e);
5690
-    }
5691
-  },
5692
-  in(e) {
5693
-    const swiper = this;
5694
-
5695
-    const zoom = swiper.zoom;
5696
-    const params = swiper.params.zoom;
5697
-    const { gesture, image } = zoom;
5698
-
5699
-    if (!gesture.$slideEl) {
5700
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5701
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
5702
-      } else {
5703
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5704
-      }
5705
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5706
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5707
-    }
5708
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5709
-
5710
-    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
5711
-
5712
-    let touchX;
5713
-    let touchY;
5714
-    let offsetX;
5715
-    let offsetY;
5716
-    let diffX;
5717
-    let diffY;
5718
-    let translateX;
5719
-    let translateY;
5720
-    let imageWidth;
5721
-    let imageHeight;
5722
-    let scaledWidth;
5723
-    let scaledHeight;
5724
-    let translateMinX;
5725
-    let translateMinY;
5726
-    let translateMaxX;
5727
-    let translateMaxY;
5728
-    let slideWidth;
5729
-    let slideHeight;
5730
-
5731
-    if (typeof image.touchesStart.x === 'undefined' && e) {
5732
-      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
5733
-      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
5734
-    } else {
5735
-      touchX = image.touchesStart.x;
5736
-      touchY = image.touchesStart.y;
5737
-    }
5738
-
5739
-    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5740
-    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5741
-    if (e) {
5742
-      slideWidth = gesture.$slideEl[0].offsetWidth;
5743
-      slideHeight = gesture.$slideEl[0].offsetHeight;
5744
-      offsetX = gesture.$slideEl.offset().left;
5745
-      offsetY = gesture.$slideEl.offset().top;
5746
-      diffX = (offsetX + (slideWidth / 2)) - touchX;
5747
-      diffY = (offsetY + (slideHeight / 2)) - touchY;
5748
-
5749
-      imageWidth = gesture.$imageEl[0].offsetWidth;
5750
-      imageHeight = gesture.$imageEl[0].offsetHeight;
5751
-      scaledWidth = imageWidth * zoom.scale;
5752
-      scaledHeight = imageHeight * zoom.scale;
5753
-
5754
-      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
5755
-      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
5756
-      translateMaxX = -translateMinX;
5757
-      translateMaxY = -translateMinY;
5758
-
5759
-      translateX = diffX * zoom.scale;
5760
-      translateY = diffY * zoom.scale;
5761
-
5762
-      if (translateX < translateMinX) {
5763
-        translateX = translateMinX;
5764
-      }
5765
-      if (translateX > translateMaxX) {
5766
-        translateX = translateMaxX;
5767
-      }
5768
-
5769
-      if (translateY < translateMinY) {
5770
-        translateY = translateMinY;
5771
-      }
5772
-      if (translateY > translateMaxY) {
5773
-        translateY = translateMaxY;
5774
-      }
5775
-    } else {
5776
-      translateX = 0;
5777
-      translateY = 0;
5778
-    }
5779
-    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
5780
-    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5781
-  },
5782
-  out() {
5783
-    const swiper = this;
5784
-
5785
-    const zoom = swiper.zoom;
5786
-    const params = swiper.params.zoom;
5787
-    const { gesture } = zoom;
5788
-
5789
-    if (!gesture.$slideEl) {
5790
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5791
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
5792
-      } else {
5793
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5794
-      }
5795
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5796
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5797
-    }
5798
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5799
-
5800
-    zoom.scale = 1;
5801
-    zoom.currentScale = 1;
5802
-    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
5803
-    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
5804
-    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
5805
-    gesture.$slideEl = undefined;
5806
-  },
5807
-  // Attach/Detach Events
5808
-  enable() {
5809
-    const swiper = this;
5810
-    const zoom = swiper.zoom;
5811
-    if (zoom.enabled) return;
5812
-    zoom.enabled = true;
5813
-
5814
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
5815
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
5816
-
5817
-    const slideSelector = `.${swiper.params.slideClass}`;
5818
-
5819
-    // Scale image
5820
-    if (Support.gestures) {
5821
-      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
5822
-      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
5823
-      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
5824
-    } else if (swiper.touchEvents.start === 'touchstart') {
5825
-      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
5826
-      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
5827
-      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
5828
-      if (swiper.touchEvents.cancel) {
5829
-        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
5830
-      }
5831
-    }
5832
-
5833
-    // Move image
5834
-    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
5835
-  },
5836
-  disable() {
5837
-    const swiper = this;
5838
-    const zoom = swiper.zoom;
5839
-    if (!zoom.enabled) return;
5840
-
5841
-    swiper.zoom.enabled = false;
5842
-
5843
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
5844
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
5845
-
5846
-    const slideSelector = `.${swiper.params.slideClass}`;
5847
-
5848
-    // Scale image
5849
-    if (Support.gestures) {
5850
-      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
5851
-      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
5852
-      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
5853
-    } else if (swiper.touchEvents.start === 'touchstart') {
5854
-      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
5855
-      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
5856
-      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
5857
-      if (swiper.touchEvents.cancel) {
5858
-        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
5859
-      }
5860
-    }
5861
-
5862
-    // Move image
5863
-    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
5864
-  },
5865
-};
5866
-
5867
-var Zoom$1 = {
5868
-  name: 'zoom',
5869
-  params: {
5870
-    zoom: {
5871
-      enabled: false,
5872
-      maxRatio: 3,
5873
-      minRatio: 1,
5874
-      toggle: true,
5875
-      containerClass: 'swiper-zoom-container',
5876
-      zoomedSlideClass: 'swiper-slide-zoomed',
5877
-    },
5878
-  },
5879
-  create() {
5880
-    const swiper = this;
5881
-    const zoom = {
5882
-      enabled: false,
5883
-      scale: 1,
5884
-      currentScale: 1,
5885
-      isScaling: false,
5886
-      gesture: {
5887
-        $slideEl: undefined,
5888
-        slideWidth: undefined,
5889
-        slideHeight: undefined,
5890
-        $imageEl: undefined,
5891
-        $imageWrapEl: undefined,
5892
-        maxRatio: 3,
5893
-      },
5894
-      image: {
5895
-        isTouched: undefined,
5896
-        isMoved: undefined,
5897
-        currentX: undefined,
5898
-        currentY: undefined,
5899
-        minX: undefined,
5900
-        minY: undefined,
5901
-        maxX: undefined,
5902
-        maxY: undefined,
5903
-        width: undefined,
5904
-        height: undefined,
5905
-        startX: undefined,
5906
-        startY: undefined,
5907
-        touchesStart: {},
5908
-        touchesCurrent: {},
5909
-      },
5910
-      velocity: {
5911
-        x: undefined,
5912
-        y: undefined,
5913
-        prevPositionX: undefined,
5914
-        prevPositionY: undefined,
5915
-        prevTime: undefined,
5916
-      },
5917
-    };
5918
-
5919
-    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {
5920
-      zoom[methodName] = Zoom[methodName].bind(swiper);
5921
-    });
5922
-    Utils.extend(swiper, {
5923
-      zoom,
5924
-    });
5925
-
5926
-    let scale = 1;
5927
-    Object.defineProperty(swiper.zoom, 'scale', {
5928
-      get() {
5929
-        return scale;
5930
-      },
5931
-      set(value) {
5932
-        if (scale !== value) {
5933
-          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
5934
-          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
5935
-          swiper.emit('zoomChange', value, imageEl, slideEl);
5936
-        }
5937
-        scale = value;
5938
-      },
5939
-    });
5940
-  },
5941
-  on: {
5942
-    init() {
5943
-      const swiper = this;
5944
-      if (swiper.params.zoom.enabled) {
5945
-        swiper.zoom.enable();
5946
-      }
5947
-    },
5948
-    destroy() {
5949
-      const swiper = this;
5950
-      swiper.zoom.disable();
5951
-    },
5952
-    touchStart(e) {
5953
-      const swiper = this;
5954
-      if (!swiper.zoom.enabled) return;
5955
-      swiper.zoom.onTouchStart(e);
5956
-    },
5957
-    touchEnd(e) {
5958
-      const swiper = this;
5959
-      if (!swiper.zoom.enabled) return;
5960
-      swiper.zoom.onTouchEnd(e);
5961
-    },
5962
-    doubleTap(e) {
5963
-      const swiper = this;
5964
-      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
5965
-        swiper.zoom.toggle(e);
5966
-      }
5967
-    },
5968
-    transitionEnd() {
5969
-      const swiper = this;
5970
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
5971
-        swiper.zoom.onTransitionEnd();
5972
-      }
5973
-    },
5974
-    slideChange() {
5975
-      const swiper = this;
5976
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
5977
-        swiper.zoom.onTransitionEnd();
5978
-      }
5979
-    },
5980
-  },
5981
-};
5982
-
5983
-const Lazy = {
5984
-  loadInSlide(index, loadInDuplicate = true) {
5985
-    const swiper = this;
5986
-    const params = swiper.params.lazy;
5987
-    if (typeof index === 'undefined') return;
5988
-    if (swiper.slides.length === 0) return;
5989
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5990
-
5991
-    const $slideEl = isVirtual
5992
-      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`)
5993
-      : swiper.slides.eq(index);
5994
-
5995
-    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
5996
-    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
5997
-      $images = $images.add($slideEl[0]);
5998
-    }
5999
-    if ($images.length === 0) return;
6000
-
6001
-    $images.each((imageIndex, imageEl) => {
6002
-      const $imageEl = $(imageEl);
6003
-      $imageEl.addClass(params.loadingClass);
6004
-
6005
-      const background = $imageEl.attr('data-background');
6006
-      const src = $imageEl.attr('data-src');
6007
-      const srcset = $imageEl.attr('data-srcset');
6008
-      const sizes = $imageEl.attr('data-sizes');
6009
-      const $pictureEl = $imageEl.parent('picture');
6010
-
6011
-      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {
6012
-        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;
6013
-        if (background) {
6014
-          $imageEl.css('background-image', `url("${background}")`);
6015
-          $imageEl.removeAttr('data-background');
6016
-        } else {
6017
-          if (srcset) {
6018
-            $imageEl.attr('srcset', srcset);
6019
-            $imageEl.removeAttr('data-srcset');
6020
-          }
6021
-          if (sizes) {
6022
-            $imageEl.attr('sizes', sizes);
6023
-            $imageEl.removeAttr('data-sizes');
6024
-          }
6025
-          if ($pictureEl.length) {
6026
-            $pictureEl.children('source').each((sourceIndex, sourceEl) => {
6027
-              const $source = $(sourceEl);
6028
-
6029
-              if ($source.attr('data-srcset')) {
6030
-                $source.attr('srcset', $source.attr('data-srcset'));
6031
-                $source.removeAttr('data-srcset');
6032
-              }
6033
-            });
6034
-          }
6035
-          if (src) {
6036
-            $imageEl.attr('src', src);
6037
-            $imageEl.removeAttr('data-src');
6038
-          }
6039
-        }
6040
-
6041
-        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
6042
-        $slideEl.find(`.${params.preloaderClass}`).remove();
6043
-        if (swiper.params.loop && loadInDuplicate) {
6044
-          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
6045
-          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
6046
-            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
6047
-            swiper.lazy.loadInSlide(originalSlide.index(), false);
6048
-          } else {
6049
-            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
6050
-            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
6051
-          }
6052
-        }
6053
-        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
6054
-        if (swiper.params.autoHeight) {
6055
-          swiper.updateAutoHeight();
6056
-        }
6057
-      });
6058
-
6059
-      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
6060
-    });
6061
-  },
6062
-  load() {
6063
-    const swiper = this;
6064
-    const {
6065
-      $wrapperEl, params: swiperParams, slides, activeIndex,
6066
-    } = swiper;
6067
-    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
6068
-    const params = swiperParams.lazy;
6069
-
6070
-    let slidesPerView = swiperParams.slidesPerView;
6071
-    if (slidesPerView === 'auto') {
6072
-      slidesPerView = 0;
6073
-    }
6074
-
6075
-    function slideExist(index) {
6076
-      if (isVirtual) {
6077
-        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
6078
-          return true;
6079
-        }
6080
-      } else if (slides[index]) return true;
6081
-      return false;
6082
-    }
6083
-
6084
-    function slideIndex(slideEl) {
6085
-      if (isVirtual) {
6086
-        return $(slideEl).attr('data-swiper-slide-index');
6087
-      }
6088
-      return $(slideEl).index();
6089
-    }
6090
-
6091
-    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
6092
-    if (swiper.params.watchSlidesVisibility) {
6093
-      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
6094
-        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
6095
-        swiper.lazy.loadInSlide(index);
6096
-      });
6097
-    } else if (slidesPerView > 1) {
6098
-      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
6099
-        if (slideExist(i)) swiper.lazy.loadInSlide(i);
6100
-      }
6101
-    } else {
6102
-      swiper.lazy.loadInSlide(activeIndex);
6103
-    }
6104
-    if (params.loadPrevNext) {
6105
-      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
6106
-        const amount = params.loadPrevNextAmount;
6107
-        const spv = slidesPerView;
6108
-        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
6109
-        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
6110
-        // Next Slides
6111
-        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
6112
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6113
-        }
6114
-        // Prev Slides
6115
-        for (let i = minIndex; i < activeIndex; i += 1) {
6116
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6117
-        }
6118
-      } else {
6119
-        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
6120
-        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
6121
-
6122
-        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
6123
-        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
6124
-      }
6125
-    }
6126
-  },
6127
-};
6128
-
6129
-var Lazy$1 = {
6130
-  name: 'lazy',
6131
-  params: {
6132
-    lazy: {
6133
-      enabled: false,
6134
-      loadPrevNext: false,
6135
-      loadPrevNextAmount: 1,
6136
-      loadOnTransitionStart: false,
6137
-
6138
-      elementClass: 'swiper-lazy',
6139
-      loadingClass: 'swiper-lazy-loading',
6140
-      loadedClass: 'swiper-lazy-loaded',
6141
-      preloaderClass: 'swiper-lazy-preloader',
6142
-    },
6143
-  },
6144
-  create() {
6145
-    const swiper = this;
6146
-    Utils.extend(swiper, {
6147
-      lazy: {
6148
-        initialImageLoaded: false,
6149
-        load: Lazy.load.bind(swiper),
6150
-        loadInSlide: Lazy.loadInSlide.bind(swiper),
6151
-      },
6152
-    });
6153
-  },
6154
-  on: {
6155
-    beforeInit() {
6156
-      const swiper = this;
6157
-      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
6158
-        swiper.params.preloadImages = false;
6159
-      }
6160
-    },
6161
-    init() {
6162
-      const swiper = this;
6163
-      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
6164
-        swiper.lazy.load();
6165
-      }
6166
-    },
6167
-    scroll() {
6168
-      const swiper = this;
6169
-      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
6170
-        swiper.lazy.load();
6171
-      }
6172
-    },
6173
-    resize() {
6174
-      const swiper = this;
6175
-      if (swiper.params.lazy.enabled) {
6176
-        swiper.lazy.load();
6177
-      }
6178
-    },
6179
-    scrollbarDragMove() {
6180
-      const swiper = this;
6181
-      if (swiper.params.lazy.enabled) {
6182
-        swiper.lazy.load();
6183
-      }
6184
-    },
6185
-    transitionStart() {
6186
-      const swiper = this;
6187
-      if (swiper.params.lazy.enabled) {
6188
-        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
6189
-          swiper.lazy.load();
6190
-        }
6191
-      }
6192
-    },
6193
-    transitionEnd() {
6194
-      const swiper = this;
6195
-      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
6196
-        swiper.lazy.load();
6197
-      }
6198
-    },
6199
-    slideChange() {
6200
-      const swiper = this;
6201
-      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
6202
-        swiper.lazy.load();
6203
-      }
6204
-    },
6205
-  },
6206
-};
6207
-
6208
-/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
6209
-
6210
-const Controller = {
6211
-  LinearSpline: function LinearSpline(x, y) {
6212
-    const binarySearch = (function search() {
6213
-      let maxIndex;
6214
-      let minIndex;
6215
-      let guess;
6216
-      return (array, val) => {
6217
-        minIndex = -1;
6218
-        maxIndex = array.length;
6219
-        while (maxIndex - minIndex > 1) {
6220
-          guess = maxIndex + minIndex >> 1;
6221
-          if (array[guess] <= val) {
6222
-            minIndex = guess;
6223
-          } else {
6224
-            maxIndex = guess;
6225
-          }
6226
-        }
6227
-        return maxIndex;
6228
-      };
6229
-    }());
6230
-    this.x = x;
6231
-    this.y = y;
6232
-    this.lastIndex = x.length - 1;
6233
-    // Given an x value (x2), return the expected y2 value:
6234
-    // (x1,y1) is the known point before given value,
6235
-    // (x3,y3) is the known point after given value.
6236
-    let i1;
6237
-    let i3;
6238
-
6239
-    this.interpolate = function interpolate(x2) {
6240
-      if (!x2) return 0;
6241
-
6242
-      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
6243
-      i3 = binarySearch(this.x, x2);
6244
-      i1 = i3 - 1;
6245
-
6246
-      // We have our indexes i1 & i3, so we can calculate already:
6247
-      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
6248
-      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
6249
-    };
6250
-    return this;
6251
-  },
6252
-  // xxx: for now i will just save one spline function to to
6253
-  getInterpolateFunction(c) {
6254
-    const swiper = this;
6255
-    if (!swiper.controller.spline) {
6256
-      swiper.controller.spline = swiper.params.loop
6257
-        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
6258
-        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
6259
-    }
6260
-  },
6261
-  setTranslate(setTranslate, byController) {
6262
-    const swiper = this;
6263
-    const controlled = swiper.controller.control;
6264
-    let multiplier;
6265
-    let controlledTranslate;
6266
-    function setControlledTranslate(c) {
6267
-      // this will create an Interpolate function based on the snapGrids
6268
-      // x is the Grid of the scrolled scroller and y will be the controlled scroller
6269
-      // it makes sense to create this only once and recall it for the interpolation
6270
-      // the function does a lot of value caching for performance
6271
-      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
6272
-      if (swiper.params.controller.by === 'slide') {
6273
-        swiper.controller.getInterpolateFunction(c);
6274
-        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
6275
-        // but it did not work out
6276
-        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
6277
-      }
6278
-
6279
-      if (!controlledTranslate || swiper.params.controller.by === 'container') {
6280
-        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
6281
-        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
6282
-      }
6283
-
6284
-      if (swiper.params.controller.inverse) {
6285
-        controlledTranslate = c.maxTranslate() - controlledTranslate;
6286
-      }
6287
-      c.updateProgress(controlledTranslate);
6288
-      c.setTranslate(controlledTranslate, swiper);
6289
-      c.updateActiveIndex();
6290
-      c.updateSlidesClasses();
6291
-    }
6292
-    if (Array.isArray(controlled)) {
6293
-      for (let i = 0; i < controlled.length; i += 1) {
6294
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6295
-          setControlledTranslate(controlled[i]);
6296
-        }
6297
-      }
6298
-    } else if (controlled instanceof Swiper && byController !== controlled) {
6299
-      setControlledTranslate(controlled);
6300
-    }
6301
-  },
6302
-  setTransition(duration, byController) {
6303
-    const swiper = this;
6304
-    const controlled = swiper.controller.control;
6305
-    let i;
6306
-    function setControlledTransition(c) {
6307
-      c.setTransition(duration, swiper);
6308
-      if (duration !== 0) {
6309
-        c.transitionStart();
6310
-        if (c.params.autoHeight) {
6311
-          Utils.nextTick(() => {
6312
-            c.updateAutoHeight();
6313
-          });
6314
-        }
6315
-        c.$wrapperEl.transitionEnd(() => {
6316
-          if (!controlled) return;
6317
-          if (c.params.loop && swiper.params.controller.by === 'slide') {
6318
-            c.loopFix();
6319
-          }
6320
-          c.transitionEnd();
6321
-        });
6322
-      }
6323
-    }
6324
-    if (Array.isArray(controlled)) {
6325
-      for (i = 0; i < controlled.length; i += 1) {
6326
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6327
-          setControlledTransition(controlled[i]);
6328
-        }
6329
-      }
6330
-    } else if (controlled instanceof Swiper && byController !== controlled) {
6331
-      setControlledTransition(controlled);
6332
-    }
6333
-  },
6334
-};
6335
-var Controller$1 = {
6336
-  name: 'controller',
6337
-  params: {
6338
-    controller: {
6339
-      control: undefined,
6340
-      inverse: false,
6341
-      by: 'slide', // or 'container'
6342
-    },
6343
-  },
6344
-  create() {
6345
-    const swiper = this;
6346
-    Utils.extend(swiper, {
6347
-      controller: {
6348
-        control: swiper.params.controller.control,
6349
-        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
6350
-        setTranslate: Controller.setTranslate.bind(swiper),
6351
-        setTransition: Controller.setTransition.bind(swiper),
6352
-      },
6353
-    });
6354
-  },
6355
-  on: {
6356
-    update() {
6357
-      const swiper = this;
6358
-      if (!swiper.controller.control) return;
6359
-      if (swiper.controller.spline) {
6360
-        swiper.controller.spline = undefined;
6361
-        delete swiper.controller.spline;
6362
-      }
6363
-    },
6364
-    resize() {
6365
-      const swiper = this;
6366
-      if (!swiper.controller.control) return;
6367
-      if (swiper.controller.spline) {
6368
-        swiper.controller.spline = undefined;
6369
-        delete swiper.controller.spline;
6370
-      }
6371
-    },
6372
-    observerUpdate() {
6373
-      const swiper = this;
6374
-      if (!swiper.controller.control) return;
6375
-      if (swiper.controller.spline) {
6376
-        swiper.controller.spline = undefined;
6377
-        delete swiper.controller.spline;
6378
-      }
6379
-    },
6380
-    setTranslate(translate, byController) {
6381
-      const swiper = this;
6382
-      if (!swiper.controller.control) return;
6383
-      swiper.controller.setTranslate(translate, byController);
6384
-    },
6385
-    setTransition(duration, byController) {
6386
-      const swiper = this;
6387
-      if (!swiper.controller.control) return;
6388
-      swiper.controller.setTransition(duration, byController);
6389
-    },
6390
-  },
6391
-};
6392
-
6393
-const a11y = {
6394
-  makeElFocusable($el) {
6395
-    $el.attr('tabIndex', '0');
6396
-    return $el;
6397
-  },
6398
-  makeElNotFocusable($el) {
6399
-    $el.attr('tabIndex', '-1');
6400
-    return $el;
6401
-  },
6402
-  addElRole($el, role) {
6403
-    $el.attr('role', role);
6404
-    return $el;
6405
-  },
6406
-  addElLabel($el, label) {
6407
-    $el.attr('aria-label', label);
6408
-    return $el;
6409
-  },
6410
-  disableEl($el) {
6411
-    $el.attr('aria-disabled', true);
6412
-    return $el;
6413
-  },
6414
-  enableEl($el) {
6415
-    $el.attr('aria-disabled', false);
6416
-    return $el;
6417
-  },
6418
-  onEnterKey(e) {
6419
-    const swiper = this;
6420
-    const params = swiper.params.a11y;
6421
-    if (e.keyCode !== 13) return;
6422
-    const $targetEl = $(e.target);
6423
-    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
6424
-      if (!(swiper.isEnd && !swiper.params.loop)) {
6425
-        swiper.slideNext();
6426
-      }
6427
-      if (swiper.isEnd) {
6428
-        swiper.a11y.notify(params.lastSlideMessage);
6429
-      } else {
6430
-        swiper.a11y.notify(params.nextSlideMessage);
6431
-      }
6432
-    }
6433
-    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
6434
-      if (!(swiper.isBeginning && !swiper.params.loop)) {
6435
-        swiper.slidePrev();
6436
-      }
6437
-      if (swiper.isBeginning) {
6438
-        swiper.a11y.notify(params.firstSlideMessage);
6439
-      } else {
6440
-        swiper.a11y.notify(params.prevSlideMessage);
6441
-      }
6442
-    }
6443
-    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {
6444
-      $targetEl[0].click();
6445
-    }
6446
-  },
6447
-  notify(message) {
6448
-    const swiper = this;
6449
-    const notification = swiper.a11y.liveRegion;
6450
-    if (notification.length === 0) return;
6451
-    notification.html('');
6452
-    notification.html(message);
6453
-  },
6454
-  updateNavigation() {
6455
-    const swiper = this;
6456
-
6457
-    if (swiper.params.loop || !swiper.navigation) return;
6458
-    const { $nextEl, $prevEl } = swiper.navigation;
6459
-
6460
-    if ($prevEl && $prevEl.length > 0) {
6461
-      if (swiper.isBeginning) {
6462
-        swiper.a11y.disableEl($prevEl);
6463
-        swiper.a11y.makeElNotFocusable($prevEl);
6464
-      } else {
6465
-        swiper.a11y.enableEl($prevEl);
6466
-        swiper.a11y.makeElFocusable($prevEl);
6467
-      }
6468
-    }
6469
-    if ($nextEl && $nextEl.length > 0) {
6470
-      if (swiper.isEnd) {
6471
-        swiper.a11y.disableEl($nextEl);
6472
-        swiper.a11y.makeElNotFocusable($nextEl);
6473
-      } else {
6474
-        swiper.a11y.enableEl($nextEl);
6475
-        swiper.a11y.makeElFocusable($nextEl);
6476
-      }
6477
-    }
6478
-  },
6479
-  updatePagination() {
6480
-    const swiper = this;
6481
-    const params = swiper.params.a11y;
6482
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6483
-      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {
6484
-        const $bulletEl = $(bulletEl);
6485
-        swiper.a11y.makeElFocusable($bulletEl);
6486
-        swiper.a11y.addElRole($bulletEl, 'button');
6487
-        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
6488
-      });
6489
-    }
6490
-  },
6491
-  init() {
6492
-    const swiper = this;
6493
-
6494
-    swiper.$el.append(swiper.a11y.liveRegion);
6495
-
6496
-    // Navigation
6497
-    const params = swiper.params.a11y;
6498
-    let $nextEl;
6499
-    let $prevEl;
6500
-    if (swiper.navigation && swiper.navigation.$nextEl) {
6501
-      $nextEl = swiper.navigation.$nextEl;
6502
-    }
6503
-    if (swiper.navigation && swiper.navigation.$prevEl) {
6504
-      $prevEl = swiper.navigation.$prevEl;
6505
-    }
6506
-    if ($nextEl) {
6507
-      swiper.a11y.makeElFocusable($nextEl);
6508
-      swiper.a11y.addElRole($nextEl, 'button');
6509
-      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
6510
-      $nextEl.on('keydown', swiper.a11y.onEnterKey);
6511
-    }
6512
-    if ($prevEl) {
6513
-      swiper.a11y.makeElFocusable($prevEl);
6514
-      swiper.a11y.addElRole($prevEl, 'button');
6515
-      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
6516
-      $prevEl.on('keydown', swiper.a11y.onEnterKey);
6517
-    }
6518
-
6519
-    // Pagination
6520
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6521
-      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
6522
-    }
6523
-  },
6524
-  destroy() {
6525
-    const swiper = this;
6526
-    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
6527
-
6528
-    let $nextEl;
6529
-    let $prevEl;
6530
-    if (swiper.navigation && swiper.navigation.$nextEl) {
6531
-      $nextEl = swiper.navigation.$nextEl;
6532
-    }
6533
-    if (swiper.navigation && swiper.navigation.$prevEl) {
6534
-      $prevEl = swiper.navigation.$prevEl;
6535
-    }
6536
-    if ($nextEl) {
6537
-      $nextEl.off('keydown', swiper.a11y.onEnterKey);
6538
-    }
6539
-    if ($prevEl) {
6540
-      $prevEl.off('keydown', swiper.a11y.onEnterKey);
6541
-    }
6542
-
6543
-    // Pagination
6544
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6545
-      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
6546
-    }
6547
-  },
6548
-};
6549
-var A11y = {
6550
-  name: 'a11y',
6551
-  params: {
6552
-    a11y: {
6553
-      enabled: true,
6554
-      notificationClass: 'swiper-notification',
6555
-      prevSlideMessage: 'Previous slide',
6556
-      nextSlideMessage: 'Next slide',
6557
-      firstSlideMessage: 'This is the first slide',
6558
-      lastSlideMessage: 'This is the last slide',
6559
-      paginationBulletMessage: 'Go to slide {{index}}',
6560
-    },
6561
-  },
6562
-  create() {
6563
-    const swiper = this;
6564
-    Utils.extend(swiper, {
6565
-      a11y: {
6566
-        liveRegion: $(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`),
6567
-      },
6568
-    });
6569
-    Object.keys(a11y).forEach((methodName) => {
6570
-      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
6571
-    });
6572
-  },
6573
-  on: {
6574
-    init() {
6575
-      const swiper = this;
6576
-      if (!swiper.params.a11y.enabled) return;
6577
-      swiper.a11y.init();
6578
-      swiper.a11y.updateNavigation();
6579
-    },
6580
-    toEdge() {
6581
-      const swiper = this;
6582
-      if (!swiper.params.a11y.enabled) return;
6583
-      swiper.a11y.updateNavigation();
6584
-    },
6585
-    fromEdge() {
6586
-      const swiper = this;
6587
-      if (!swiper.params.a11y.enabled) return;
6588
-      swiper.a11y.updateNavigation();
6589
-    },
6590
-    paginationUpdate() {
6591
-      const swiper = this;
6592
-      if (!swiper.params.a11y.enabled) return;
6593
-      swiper.a11y.updatePagination();
6594
-    },
6595
-    destroy() {
6596
-      const swiper = this;
6597
-      if (!swiper.params.a11y.enabled) return;
6598
-      swiper.a11y.destroy();
6599
-    },
6600
-  },
6601
-};
6602
-
6603
-const History = {
6604
-  init() {
6605
-    const swiper = this;
6606
-    if (!swiper.params.history) return;
6607
-    if (!window.history || !window.history.pushState) {
6608
-      swiper.params.history.enabled = false;
6609
-      swiper.params.hashNavigation.enabled = true;
6610
-      return;
6611
-    }
6612
-    const history = swiper.history;
6613
-    history.initialized = true;
6614
-    history.paths = History.getPathValues();
6615
-    if (!history.paths.key && !history.paths.value) return;
6616
-    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
6617
-    if (!swiper.params.history.replaceState) {
6618
-      window.addEventListener('popstate', swiper.history.setHistoryPopState);
6619
-    }
6620
-  },
6621
-  destroy() {
6622
-    const swiper = this;
6623
-    if (!swiper.params.history.replaceState) {
6624
-      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
6625
-    }
6626
-  },
6627
-  setHistoryPopState() {
6628
-    const swiper = this;
6629
-    swiper.history.paths = History.getPathValues();
6630
-    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
6631
-  },
6632
-  getPathValues() {
6633
-    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');
6634
-    const total = pathArray.length;
6635
-    const key = pathArray[total - 2];
6636
-    const value = pathArray[total - 1];
6637
-    return { key, value };
6638
-  },
6639
-  setHistory(key, index) {
6640
-    const swiper = this;
6641
-    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
6642
-    const slide = swiper.slides.eq(index);
6643
-    let value = History.slugify(slide.attr('data-history'));
6644
-    if (!window.location.pathname.includes(key)) {
6645
-      value = `${key}/${value}`;
6646
-    }
6647
-    const currentState = window.history.state;
6648
-    if (currentState && currentState.value === value) {
6649
-      return;
6650
-    }
6651
-    if (swiper.params.history.replaceState) {
6652
-      window.history.replaceState({ value }, null, value);
6653
-    } else {
6654
-      window.history.pushState({ value }, null, value);
6655
-    }
6656
-  },
6657
-  slugify(text) {
6658
-    return text.toString()
6659
-      .replace(/\s+/g, '-')
6660
-      .replace(/[^\w-]+/g, '')
6661
-      .replace(/--+/g, '-')
6662
-      .replace(/^-+/, '')
6663
-      .replace(/-+$/, '');
6664
-  },
6665
-  scrollToSlide(speed, value, runCallbacks) {
6666
-    const swiper = this;
6667
-    if (value) {
6668
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
6669
-        const slide = swiper.slides.eq(i);
6670
-        const slideHistory = History.slugify(slide.attr('data-history'));
6671
-        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
6672
-          const index = slide.index();
6673
-          swiper.slideTo(index, speed, runCallbacks);
6674
-        }
6675
-      }
6676
-    } else {
6677
-      swiper.slideTo(0, speed, runCallbacks);
6678
-    }
6679
-  },
6680
-};
6681
-
6682
-var History$1 = {
6683
-  name: 'history',
6684
-  params: {
6685
-    history: {
6686
-      enabled: false,
6687
-      replaceState: false,
6688
-      key: 'slides',
6689
-    },
6690
-  },
6691
-  create() {
6692
-    const swiper = this;
6693
-    Utils.extend(swiper, {
6694
-      history: {
6695
-        init: History.init.bind(swiper),
6696
-        setHistory: History.setHistory.bind(swiper),
6697
-        setHistoryPopState: History.setHistoryPopState.bind(swiper),
6698
-        scrollToSlide: History.scrollToSlide.bind(swiper),
6699
-        destroy: History.destroy.bind(swiper),
6700
-      },
6701
-    });
6702
-  },
6703
-  on: {
6704
-    init() {
6705
-      const swiper = this;
6706
-      if (swiper.params.history.enabled) {
6707
-        swiper.history.init();
6708
-      }
6709
-    },
6710
-    destroy() {
6711
-      const swiper = this;
6712
-      if (swiper.params.history.enabled) {
6713
-        swiper.history.destroy();
6714
-      }
6715
-    },
6716
-    transitionEnd() {
6717
-      const swiper = this;
6718
-      if (swiper.history.initialized) {
6719
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
6720
-      }
6721
-    },
6722
-    slideChange() {
6723
-      const swiper = this;
6724
-      if (swiper.history.initialized && swiper.params.cssMode) {
6725
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
6726
-      }
6727
-    },
6728
-  },
6729
-};
6730
-
6731
-const HashNavigation = {
6732
-  onHashCange() {
6733
-    const swiper = this;
6734
-    swiper.emit('hashChange');
6735
-    const newHash = document$1.location.hash.replace('#', '');
6736
-    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
6737
-    if (newHash !== activeSlideHash) {
6738
-      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
6739
-      if (typeof newIndex === 'undefined') return;
6740
-      swiper.slideTo(newIndex);
6741
-    }
6742
-  },
6743
-  setHash() {
6744
-    const swiper = this;
6745
-    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
6746
-    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
6747
-      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));
6748
-      swiper.emit('hashSet');
6749
-    } else {
6750
-      const slide = swiper.slides.eq(swiper.activeIndex);
6751
-      const hash = slide.attr('data-hash') || slide.attr('data-history');
6752
-      document$1.location.hash = hash || '';
6753
-      swiper.emit('hashSet');
6754
-    }
6755
-  },
6756
-  init() {
6757
-    const swiper = this;
6758
-    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;
6759
-    swiper.hashNavigation.initialized = true;
6760
-    const hash = document$1.location.hash.replace('#', '');
6761
-    if (hash) {
6762
-      const speed = 0;
6763
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
6764
-        const slide = swiper.slides.eq(i);
6765
-        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
6766
-        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
6767
-          const index = slide.index();
6768
-          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
6769
-        }
6770
-      }
6771
-    }
6772
-    if (swiper.params.hashNavigation.watchState) {
6773
-      $(window).on('hashchange', swiper.hashNavigation.onHashCange);
6774
-    }
6775
-  },
6776
-  destroy() {
6777
-    const swiper = this;
6778
-    if (swiper.params.hashNavigation.watchState) {
6779
-      $(window).off('hashchange', swiper.hashNavigation.onHashCange);
6780
-    }
6781
-  },
6782
-};
6783
-var HashNavigation$1 = {
6784
-  name: 'hash-navigation',
6785
-  params: {
6786
-    hashNavigation: {
6787
-      enabled: false,
6788
-      replaceState: false,
6789
-      watchState: false,
6790
-    },
6791
-  },
6792
-  create() {
6793
-    const swiper = this;
6794
-    Utils.extend(swiper, {
6795
-      hashNavigation: {
6796
-        initialized: false,
6797
-        init: HashNavigation.init.bind(swiper),
6798
-        destroy: HashNavigation.destroy.bind(swiper),
6799
-        setHash: HashNavigation.setHash.bind(swiper),
6800
-        onHashCange: HashNavigation.onHashCange.bind(swiper),
6801
-      },
6802
-    });
6803
-  },
6804
-  on: {
6805
-    init() {
6806
-      const swiper = this;
6807
-      if (swiper.params.hashNavigation.enabled) {
6808
-        swiper.hashNavigation.init();
6809
-      }
6810
-    },
6811
-    destroy() {
6812
-      const swiper = this;
6813
-      if (swiper.params.hashNavigation.enabled) {
6814
-        swiper.hashNavigation.destroy();
6815
-      }
6816
-    },
6817
-    transitionEnd() {
6818
-      const swiper = this;
6819
-      if (swiper.hashNavigation.initialized) {
6820
-        swiper.hashNavigation.setHash();
6821
-      }
6822
-    },
6823
-    slideChange() {
6824
-      const swiper = this;
6825
-      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
6826
-        swiper.hashNavigation.setHash();
6827
-      }
6828
-    },
6829
-  },
6830
-};
6831
-
6832
-/* eslint no-underscore-dangle: "off" */
6833
-
6834
-const Autoplay = {
6835
-  run() {
6836
-    const swiper = this;
6837
-    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
6838
-    let delay = swiper.params.autoplay.delay;
6839
-    if ($activeSlideEl.attr('data-swiper-autoplay')) {
6840
-      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
6841
-    }
6842
-    clearTimeout(swiper.autoplay.timeout);
6843
-    swiper.autoplay.timeout = Utils.nextTick(() => {
6844
-      if (swiper.params.autoplay.reverseDirection) {
6845
-        if (swiper.params.loop) {
6846
-          swiper.loopFix();
6847
-          swiper.slidePrev(swiper.params.speed, true, true);
6848
-          swiper.emit('autoplay');
6849
-        } else if (!swiper.isBeginning) {
6850
-          swiper.slidePrev(swiper.params.speed, true, true);
6851
-          swiper.emit('autoplay');
6852
-        } else if (!swiper.params.autoplay.stopOnLastSlide) {
6853
-          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
6854
-          swiper.emit('autoplay');
6855
-        } else {
6856
-          swiper.autoplay.stop();
6857
-        }
6858
-      } else if (swiper.params.loop) {
6859
-        swiper.loopFix();
6860
-        swiper.slideNext(swiper.params.speed, true, true);
6861
-        swiper.emit('autoplay');
6862
-      } else if (!swiper.isEnd) {
6863
-        swiper.slideNext(swiper.params.speed, true, true);
6864
-        swiper.emit('autoplay');
6865
-      } else if (!swiper.params.autoplay.stopOnLastSlide) {
6866
-        swiper.slideTo(0, swiper.params.speed, true, true);
6867
-        swiper.emit('autoplay');
6868
-      } else {
6869
-        swiper.autoplay.stop();
6870
-      }
6871
-      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
6872
-    }, delay);
6873
-  },
6874
-  start() {
6875
-    const swiper = this;
6876
-    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
6877
-    if (swiper.autoplay.running) return false;
6878
-    swiper.autoplay.running = true;
6879
-    swiper.emit('autoplayStart');
6880
-    swiper.autoplay.run();
6881
-    return true;
6882
-  },
6883
-  stop() {
6884
-    const swiper = this;
6885
-    if (!swiper.autoplay.running) return false;
6886
-    if (typeof swiper.autoplay.timeout === 'undefined') return false;
6887
-
6888
-    if (swiper.autoplay.timeout) {
6889
-      clearTimeout(swiper.autoplay.timeout);
6890
-      swiper.autoplay.timeout = undefined;
6891
-    }
6892
-    swiper.autoplay.running = false;
6893
-    swiper.emit('autoplayStop');
6894
-    return true;
6895
-  },
6896
-  pause(speed) {
6897
-    const swiper = this;
6898
-    if (!swiper.autoplay.running) return;
6899
-    if (swiper.autoplay.paused) return;
6900
-    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
6901
-    swiper.autoplay.paused = true;
6902
-    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
6903
-      swiper.autoplay.paused = false;
6904
-      swiper.autoplay.run();
6905
-    } else {
6906
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
6907
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
6908
-    }
6909
-  },
6910
-};
6911
-
6912
-var Autoplay$1 = {
6913
-  name: 'autoplay',
6914
-  params: {
6915
-    autoplay: {
6916
-      enabled: false,
6917
-      delay: 3000,
6918
-      waitForTransition: true,
6919
-      disableOnInteraction: true,
6920
-      stopOnLastSlide: false,
6921
-      reverseDirection: false,
6922
-    },
6923
-  },
6924
-  create() {
6925
-    const swiper = this;
6926
-    Utils.extend(swiper, {
6927
-      autoplay: {
6928
-        running: false,
6929
-        paused: false,
6930
-        run: Autoplay.run.bind(swiper),
6931
-        start: Autoplay.start.bind(swiper),
6932
-        stop: Autoplay.stop.bind(swiper),
6933
-        pause: Autoplay.pause.bind(swiper),
6934
-        onVisibilityChange() {
6935
-          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
6936
-            swiper.autoplay.pause();
6937
-          }
6938
-          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
6939
-            swiper.autoplay.run();
6940
-            swiper.autoplay.paused = false;
6941
-          }
6942
-        },
6943
-        onTransitionEnd(e) {
6944
-          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
6945
-          if (e.target !== this) return;
6946
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
6947
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
6948
-          swiper.autoplay.paused = false;
6949
-          if (!swiper.autoplay.running) {
6950
-            swiper.autoplay.stop();
6951
-          } else {
6952
-            swiper.autoplay.run();
6953
-          }
6954
-        },
6955
-      },
6956
-    });
6957
-  },
6958
-  on: {
6959
-    init() {
6960
-      const swiper = this;
6961
-      if (swiper.params.autoplay.enabled) {
6962
-        swiper.autoplay.start();
6963
-        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
6964
-      }
6965
-    },
6966
-    beforeTransitionStart(speed, internal) {
6967
-      const swiper = this;
6968
-      if (swiper.autoplay.running) {
6969
-        if (internal || !swiper.params.autoplay.disableOnInteraction) {
6970
-          swiper.autoplay.pause(speed);
6971
-        } else {
6972
-          swiper.autoplay.stop();
6973
-        }
6974
-      }
6975
-    },
6976
-    sliderFirstMove() {
6977
-      const swiper = this;
6978
-      if (swiper.autoplay.running) {
6979
-        if (swiper.params.autoplay.disableOnInteraction) {
6980
-          swiper.autoplay.stop();
6981
-        } else {
6982
-          swiper.autoplay.pause();
6983
-        }
6984
-      }
6985
-    },
6986
-    touchEnd() {
6987
-      const swiper = this;
6988
-      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
6989
-        swiper.autoplay.run();
6990
-      }
6991
-    },
6992
-    destroy() {
6993
-      const swiper = this;
6994
-      if (swiper.autoplay.running) {
6995
-        swiper.autoplay.stop();
6996
-      }
6997
-      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
6998
-    },
6999
-  },
7000
-};
7001
-
7002
-const Fade = {
7003
-  setTranslate() {
7004
-    const swiper = this;
7005
-    const { slides } = swiper;
7006
-    for (let i = 0; i < slides.length; i += 1) {
7007
-      const $slideEl = swiper.slides.eq(i);
7008
-      const offset = $slideEl[0].swiperSlideOffset;
7009
-      let tx = -offset;
7010
-      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
7011
-      let ty = 0;
7012
-      if (!swiper.isHorizontal()) {
7013
-        ty = tx;
7014
-        tx = 0;
7015
-      }
7016
-      const slideOpacity = swiper.params.fadeEffect.crossFade
7017
-        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
7018
-        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
7019
-      $slideEl
7020
-        .css({
7021
-          opacity: slideOpacity,
7022
-        })
7023
-        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);
7024
-    }
7025
-  },
7026
-  setTransition(duration) {
7027
-    const swiper = this;
7028
-    const { slides, $wrapperEl } = swiper;
7029
-    slides.transition(duration);
7030
-    if (swiper.params.virtualTranslate && duration !== 0) {
7031
-      let eventTriggered = false;
7032
-      slides.transitionEnd(() => {
7033
-        if (eventTriggered) return;
7034
-        if (!swiper || swiper.destroyed) return;
7035
-        eventTriggered = true;
7036
-        swiper.animating = false;
7037
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7038
-        for (let i = 0; i < triggerEvents.length; i += 1) {
7039
-          $wrapperEl.trigger(triggerEvents[i]);
7040
-        }
7041
-      });
7042
-    }
7043
-  },
7044
-};
7045
-
7046
-var EffectFade = {
7047
-  name: 'effect-fade',
7048
-  params: {
7049
-    fadeEffect: {
7050
-      crossFade: false,
7051
-    },
7052
-  },
7053
-  create() {
7054
-    const swiper = this;
7055
-    Utils.extend(swiper, {
7056
-      fadeEffect: {
7057
-        setTranslate: Fade.setTranslate.bind(swiper),
7058
-        setTransition: Fade.setTransition.bind(swiper),
7059
-      },
7060
-    });
7061
-  },
7062
-  on: {
7063
-    beforeInit() {
7064
-      const swiper = this;
7065
-      if (swiper.params.effect !== 'fade') return;
7066
-      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);
7067
-      const overwriteParams = {
7068
-        slidesPerView: 1,
7069
-        slidesPerColumn: 1,
7070
-        slidesPerGroup: 1,
7071
-        watchSlidesProgress: true,
7072
-        spaceBetween: 0,
7073
-        virtualTranslate: true,
7074
-      };
7075
-      Utils.extend(swiper.params, overwriteParams);
7076
-      Utils.extend(swiper.originalParams, overwriteParams);
7077
-    },
7078
-    setTranslate() {
7079
-      const swiper = this;
7080
-      if (swiper.params.effect !== 'fade') return;
7081
-      swiper.fadeEffect.setTranslate();
7082
-    },
7083
-    setTransition(duration) {
7084
-      const swiper = this;
7085
-      if (swiper.params.effect !== 'fade') return;
7086
-      swiper.fadeEffect.setTransition(duration);
7087
-    },
7088
-  },
7089
-};
7090
-
7091
-const Cube = {
7092
-  setTranslate() {
7093
-    const swiper = this;
7094
-    const {
7095
-      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,
7096
-    } = swiper;
7097
-    const params = swiper.params.cubeEffect;
7098
-    const isHorizontal = swiper.isHorizontal();
7099
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7100
-    let wrapperRotate = 0;
7101
-    let $cubeShadowEl;
7102
-    if (params.shadow) {
7103
-      if (isHorizontal) {
7104
-        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
7105
-        if ($cubeShadowEl.length === 0) {
7106
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7107
-          $wrapperEl.append($cubeShadowEl);
7108
-        }
7109
-        $cubeShadowEl.css({ height: `${swiperWidth}px` });
7110
-      } else {
7111
-        $cubeShadowEl = $el.find('.swiper-cube-shadow');
7112
-        if ($cubeShadowEl.length === 0) {
7113
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7114
-          $el.append($cubeShadowEl);
7115
-        }
7116
-      }
7117
-    }
7118
-    for (let i = 0; i < slides.length; i += 1) {
7119
-      const $slideEl = slides.eq(i);
7120
-      let slideIndex = i;
7121
-      if (isVirtual) {
7122
-        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
7123
-      }
7124
-      let slideAngle = slideIndex * 90;
7125
-      let round = Math.floor(slideAngle / 360);
7126
-      if (rtl) {
7127
-        slideAngle = -slideAngle;
7128
-        round = Math.floor(-slideAngle / 360);
7129
-      }
7130
-      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7131
-      let tx = 0;
7132
-      let ty = 0;
7133
-      let tz = 0;
7134
-      if (slideIndex % 4 === 0) {
7135
-        tx = -round * 4 * swiperSize;
7136
-        tz = 0;
7137
-      } else if ((slideIndex - 1) % 4 === 0) {
7138
-        tx = 0;
7139
-        tz = -round * 4 * swiperSize;
7140
-      } else if ((slideIndex - 2) % 4 === 0) {
7141
-        tx = swiperSize + (round * 4 * swiperSize);
7142
-        tz = swiperSize;
7143
-      } else if ((slideIndex - 3) % 4 === 0) {
7144
-        tx = -swiperSize;
7145
-        tz = (3 * swiperSize) + (swiperSize * 4 * round);
7146
-      }
7147
-      if (rtl) {
7148
-        tx = -tx;
7149
-      }
7150
-
7151
-      if (!isHorizontal) {
7152
-        ty = tx;
7153
-        tx = 0;
7154
-      }
7155
-
7156
-      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
7157
-      if (progress <= 1 && progress > -1) {
7158
-        wrapperRotate = (slideIndex * 90) + (progress * 90);
7159
-        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);
7160
-      }
7161
-      $slideEl.transform(transform);
7162
-      if (params.slideShadows) {
7163
-        // Set shadows
7164
-        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7165
-        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7166
-        if (shadowBefore.length === 0) {
7167
-          shadowBefore = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
7168
-          $slideEl.append(shadowBefore);
7169
-        }
7170
-        if (shadowAfter.length === 0) {
7171
-          shadowAfter = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
7172
-          $slideEl.append(shadowAfter);
7173
-        }
7174
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
7175
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
7176
-      }
7177
-    }
7178
-    $wrapperEl.css({
7179
-      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
7180
-      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,
7181
-      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,
7182
-      'transform-origin': `50% 50% -${swiperSize / 2}px`,
7183
-    });
7184
-
7185
-    if (params.shadow) {
7186
-      if (isHorizontal) {
7187
-        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
7188
-      } else {
7189
-        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
7190
-        const multiplier = 1.5 - (
7191
-          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
7192
-          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
7193
-        );
7194
-        const scale1 = params.shadowScale;
7195
-        const scale2 = params.shadowScale / multiplier;
7196
-        const offset = params.shadowOffset;
7197
-        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
7198
-      }
7199
-    }
7200
-    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
7201
-    $wrapperEl
7202
-      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
7203
-  },
7204
-  setTransition(duration) {
7205
-    const swiper = this;
7206
-    const { $el, slides } = swiper;
7207
-    slides
7208
-      .transition(duration)
7209
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7210
-      .transition(duration);
7211
-    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
7212
-      $el.find('.swiper-cube-shadow').transition(duration);
7213
-    }
7214
-  },
7215
-};
7216
-
7217
-var EffectCube = {
7218
-  name: 'effect-cube',
7219
-  params: {
7220
-    cubeEffect: {
7221
-      slideShadows: true,
7222
-      shadow: true,
7223
-      shadowOffset: 20,
7224
-      shadowScale: 0.94,
7225
-    },
7226
-  },
7227
-  create() {
7228
-    const swiper = this;
7229
-    Utils.extend(swiper, {
7230
-      cubeEffect: {
7231
-        setTranslate: Cube.setTranslate.bind(swiper),
7232
-        setTransition: Cube.setTransition.bind(swiper),
7233
-      },
7234
-    });
7235
-  },
7236
-  on: {
7237
-    beforeInit() {
7238
-      const swiper = this;
7239
-      if (swiper.params.effect !== 'cube') return;
7240
-      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);
7241
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7242
-      const overwriteParams = {
7243
-        slidesPerView: 1,
7244
-        slidesPerColumn: 1,
7245
-        slidesPerGroup: 1,
7246
-        watchSlidesProgress: true,
7247
-        resistanceRatio: 0,
7248
-        spaceBetween: 0,
7249
-        centeredSlides: false,
7250
-        virtualTranslate: true,
7251
-      };
7252
-      Utils.extend(swiper.params, overwriteParams);
7253
-      Utils.extend(swiper.originalParams, overwriteParams);
7254
-    },
7255
-    setTranslate() {
7256
-      const swiper = this;
7257
-      if (swiper.params.effect !== 'cube') return;
7258
-      swiper.cubeEffect.setTranslate();
7259
-    },
7260
-    setTransition(duration) {
7261
-      const swiper = this;
7262
-      if (swiper.params.effect !== 'cube') return;
7263
-      swiper.cubeEffect.setTransition(duration);
7264
-    },
7265
-  },
7266
-};
7267
-
7268
-const Flip = {
7269
-  setTranslate() {
7270
-    const swiper = this;
7271
-    const { slides, rtlTranslate: rtl } = swiper;
7272
-    for (let i = 0; i < slides.length; i += 1) {
7273
-      const $slideEl = slides.eq(i);
7274
-      let progress = $slideEl[0].progress;
7275
-      if (swiper.params.flipEffect.limitRotation) {
7276
-        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7277
-      }
7278
-      const offset = $slideEl[0].swiperSlideOffset;
7279
-      const rotate = -180 * progress;
7280
-      let rotateY = rotate;
7281
-      let rotateX = 0;
7282
-      let tx = -offset;
7283
-      let ty = 0;
7284
-      if (!swiper.isHorizontal()) {
7285
-        ty = tx;
7286
-        tx = 0;
7287
-        rotateX = -rotateY;
7288
-        rotateY = 0;
7289
-      } else if (rtl) {
7290
-        rotateY = -rotateY;
7291
-      }
7292
-
7293
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
7294
-
7295
-      if (swiper.params.flipEffect.slideShadows) {
7296
-        // Set shadows
7297
-        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7298
-        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7299
-        if (shadowBefore.length === 0) {
7300
-          shadowBefore = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}"></div>`);
7301
-          $slideEl.append(shadowBefore);
7302
-        }
7303
-        if (shadowAfter.length === 0) {
7304
-          shadowAfter = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}"></div>`);
7305
-          $slideEl.append(shadowAfter);
7306
-        }
7307
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
7308
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
7309
-      }
7310
-      $slideEl
7311
-        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
7312
-    }
7313
-  },
7314
-  setTransition(duration) {
7315
-    const swiper = this;
7316
-    const { slides, activeIndex, $wrapperEl } = swiper;
7317
-    slides
7318
-      .transition(duration)
7319
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7320
-      .transition(duration);
7321
-    if (swiper.params.virtualTranslate && duration !== 0) {
7322
-      let eventTriggered = false;
7323
-      // eslint-disable-next-line
7324
-      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
7325
-        if (eventTriggered) return;
7326
-        if (!swiper || swiper.destroyed) return;
7327
-        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
7328
-        eventTriggered = true;
7329
-        swiper.animating = false;
7330
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7331
-        for (let i = 0; i < triggerEvents.length; i += 1) {
7332
-          $wrapperEl.trigger(triggerEvents[i]);
7333
-        }
7334
-      });
7335
-    }
7336
-  },
7337
-};
7338
-
7339
-var EffectFlip = {
7340
-  name: 'effect-flip',
7341
-  params: {
7342
-    flipEffect: {
7343
-      slideShadows: true,
7344
-      limitRotation: true,
7345
-    },
7346
-  },
7347
-  create() {
7348
-    const swiper = this;
7349
-    Utils.extend(swiper, {
7350
-      flipEffect: {
7351
-        setTranslate: Flip.setTranslate.bind(swiper),
7352
-        setTransition: Flip.setTransition.bind(swiper),
7353
-      },
7354
-    });
7355
-  },
7356
-  on: {
7357
-    beforeInit() {
7358
-      const swiper = this;
7359
-      if (swiper.params.effect !== 'flip') return;
7360
-      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);
7361
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7362
-      const overwriteParams = {
7363
-        slidesPerView: 1,
7364
-        slidesPerColumn: 1,
7365
-        slidesPerGroup: 1,
7366
-        watchSlidesProgress: true,
7367
-        spaceBetween: 0,
7368
-        virtualTranslate: true,
7369
-      };
7370
-      Utils.extend(swiper.params, overwriteParams);
7371
-      Utils.extend(swiper.originalParams, overwriteParams);
7372
-    },
7373
-    setTranslate() {
7374
-      const swiper = this;
7375
-      if (swiper.params.effect !== 'flip') return;
7376
-      swiper.flipEffect.setTranslate();
7377
-    },
7378
-    setTransition(duration) {
7379
-      const swiper = this;
7380
-      if (swiper.params.effect !== 'flip') return;
7381
-      swiper.flipEffect.setTransition(duration);
7382
-    },
7383
-  },
7384
-};
7385
-
7386
-const Coverflow = {
7387
-  setTranslate() {
7388
-    const swiper = this;
7389
-    const {
7390
-      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,
7391
-    } = swiper;
7392
-    const params = swiper.params.coverflowEffect;
7393
-    const isHorizontal = swiper.isHorizontal();
7394
-    const transform = swiper.translate;
7395
-    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
7396
-    const rotate = isHorizontal ? params.rotate : -params.rotate;
7397
-    const translate = params.depth;
7398
-    // Each slide offset from center
7399
-    for (let i = 0, length = slides.length; i < length; i += 1) {
7400
-      const $slideEl = slides.eq(i);
7401
-      const slideSize = slidesSizesGrid[i];
7402
-      const slideOffset = $slideEl[0].swiperSlideOffset;
7403
-      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
7404
-
7405
-      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
7406
-      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
7407
-      // var rotateZ = 0
7408
-      let translateZ = -translate * Math.abs(offsetMultiplier);
7409
-
7410
-      let stretch = params.stretch;
7411
-      // Allow percentage to make a relative stretch for responsive sliders
7412
-      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
7413
-        stretch = ((parseFloat(params.stretch) / 100) * slideSize);
7414
-      }
7415
-      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
7416
-      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
7417
-
7418
-      // Fix for ultra small values
7419
-      if (Math.abs(translateX) < 0.001) translateX = 0;
7420
-      if (Math.abs(translateY) < 0.001) translateY = 0;
7421
-      if (Math.abs(translateZ) < 0.001) translateZ = 0;
7422
-      if (Math.abs(rotateY) < 0.001) rotateY = 0;
7423
-      if (Math.abs(rotateX) < 0.001) rotateX = 0;
7424
-
7425
-      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
7426
-
7427
-      $slideEl.transform(slideTransform);
7428
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
7429
-      if (params.slideShadows) {
7430
-        // Set shadows
7431
-        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7432
-        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7433
-        if ($shadowBeforeEl.length === 0) {
7434
-          $shadowBeforeEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
7435
-          $slideEl.append($shadowBeforeEl);
7436
-        }
7437
-        if ($shadowAfterEl.length === 0) {
7438
-          $shadowAfterEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
7439
-          $slideEl.append($shadowAfterEl);
7440
-        }
7441
-        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
7442
-        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;
7443
-      }
7444
-    }
7445
-
7446
-    // Set correct perspective for IE10
7447
-    if (Support.pointerEvents || Support.prefixedPointerEvents) {
7448
-      const ws = $wrapperEl[0].style;
7449
-      ws.perspectiveOrigin = `${center}px 50%`;
7450
-    }
7451
-  },
7452
-  setTransition(duration) {
7453
-    const swiper = this;
7454
-    swiper.slides
7455
-      .transition(duration)
7456
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7457
-      .transition(duration);
7458
-  },
7459
-};
7460
-
7461
-var EffectCoverflow = {
7462
-  name: 'effect-coverflow',
7463
-  params: {
7464
-    coverflowEffect: {
7465
-      rotate: 50,
7466
-      stretch: 0,
7467
-      depth: 100,
7468
-      modifier: 1,
7469
-      slideShadows: true,
7470
-    },
7471
-  },
7472
-  create() {
7473
-    const swiper = this;
7474
-    Utils.extend(swiper, {
7475
-      coverflowEffect: {
7476
-        setTranslate: Coverflow.setTranslate.bind(swiper),
7477
-        setTransition: Coverflow.setTransition.bind(swiper),
7478
-      },
7479
-    });
7480
-  },
7481
-  on: {
7482
-    beforeInit() {
7483
-      const swiper = this;
7484
-      if (swiper.params.effect !== 'coverflow') return;
7485
-
7486
-      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);
7487
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7488
-
7489
-      swiper.params.watchSlidesProgress = true;
7490
-      swiper.originalParams.watchSlidesProgress = true;
7491
-    },
7492
-    setTranslate() {
7493
-      const swiper = this;
7494
-      if (swiper.params.effect !== 'coverflow') return;
7495
-      swiper.coverflowEffect.setTranslate();
7496
-    },
7497
-    setTransition(duration) {
7498
-      const swiper = this;
7499
-      if (swiper.params.effect !== 'coverflow') return;
7500
-      swiper.coverflowEffect.setTransition(duration);
7501
-    },
7502
-  },
7503
-};
7504
-
7505
-const Thumbs = {
7506
-  init() {
7507
-    const swiper = this;
7508
-    const { thumbs: thumbsParams } = swiper.params;
7509
-    const SwiperClass = swiper.constructor;
7510
-    if (thumbsParams.swiper instanceof SwiperClass) {
7511
-      swiper.thumbs.swiper = thumbsParams.swiper;
7512
-      Utils.extend(swiper.thumbs.swiper.originalParams, {
7513
-        watchSlidesProgress: true,
7514
-        slideToClickedSlide: false,
7515
-      });
7516
-      Utils.extend(swiper.thumbs.swiper.params, {
7517
-        watchSlidesProgress: true,
7518
-        slideToClickedSlide: false,
7519
-      });
7520
-    } else if (Utils.isObject(thumbsParams.swiper)) {
7521
-      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
7522
-        watchSlidesVisibility: true,
7523
-        watchSlidesProgress: true,
7524
-        slideToClickedSlide: false,
7525
-      }));
7526
-      swiper.thumbs.swiperCreated = true;
7527
-    }
7528
-    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
7529
-    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
7530
-  },
7531
-  onThumbClick() {
7532
-    const swiper = this;
7533
-    const thumbsSwiper = swiper.thumbs.swiper;
7534
-    if (!thumbsSwiper) return;
7535
-    const clickedIndex = thumbsSwiper.clickedIndex;
7536
-    const clickedSlide = thumbsSwiper.clickedSlide;
7537
-    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
7538
-    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
7539
-    let slideToIndex;
7540
-    if (thumbsSwiper.params.loop) {
7541
-      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
7542
-    } else {
7543
-      slideToIndex = clickedIndex;
7544
-    }
7545
-    if (swiper.params.loop) {
7546
-      let currentIndex = swiper.activeIndex;
7547
-      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
7548
-        swiper.loopFix();
7549
-        // eslint-disable-next-line
7550
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
7551
-        currentIndex = swiper.activeIndex;
7552
-      }
7553
-      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
7554
-      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
7555
-      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;
7556
-      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;
7557
-      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;
7558
-      else slideToIndex = prevIndex;
7559
-    }
7560
-    swiper.slideTo(slideToIndex);
7561
-  },
7562
-  update(initial) {
7563
-    const swiper = this;
7564
-    const thumbsSwiper = swiper.thumbs.swiper;
7565
-    if (!thumbsSwiper) return;
7566
-
7567
-    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
7568
-      ? thumbsSwiper.slidesPerViewDynamic()
7569
-      : thumbsSwiper.params.slidesPerView;
7570
-
7571
-    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
7572
-    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
7573
-    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
7574
-      let currentThumbsIndex = thumbsSwiper.activeIndex;
7575
-      let newThumbsIndex;
7576
-      let direction;
7577
-      if (thumbsSwiper.params.loop) {
7578
-        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
7579
-          thumbsSwiper.loopFix();
7580
-          // eslint-disable-next-line
7581
-          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
7582
-          currentThumbsIndex = thumbsSwiper.activeIndex;
7583
-        }
7584
-        // Find actual thumbs index to slide to
7585
-        const prevThumbsIndex = thumbsSwiper.slides
7586
-          .eq(currentThumbsIndex)
7587
-          .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
7588
-          .index();
7589
-        const nextThumbsIndex = thumbsSwiper.slides
7590
-          .eq(currentThumbsIndex)
7591
-          .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
7592
-          .index();
7593
-        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;
7594
-        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;
7595
-        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;
7596
-        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;
7597
-        else newThumbsIndex = prevThumbsIndex;
7598
-        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
7599
-      } else {
7600
-        newThumbsIndex = swiper.realIndex;
7601
-        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
7602
-      }
7603
-      if (useOffset) {
7604
-        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
7605
-      }
7606
-
7607
-      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
7608
-        if (thumbsSwiper.params.centeredSlides) {
7609
-          if (newThumbsIndex > currentThumbsIndex) {
7610
-            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
7611
-          } else {
7612
-            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
7613
-          }
7614
-        } else if (newThumbsIndex > currentThumbsIndex) {
7615
-          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
7616
-        }
7617
-        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
7618
-      }
7619
-    }
7620
-
7621
-    // Activate thumbs
7622
-    let thumbsToActivate = 1;
7623
-    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
7624
-
7625
-    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
7626
-      thumbsToActivate = swiper.params.slidesPerView;
7627
-    }
7628
-
7629
-    if (!swiper.params.thumbs.multipleActiveThumbs) {
7630
-      thumbsToActivate = 1;
7631
-    }
7632
-
7633
-    thumbsToActivate = Math.floor(thumbsToActivate);
7634
-
7635
-    thumbsSwiper.slides.removeClass(thumbActiveClass);
7636
-    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
7637
-      for (let i = 0; i < thumbsToActivate; i += 1) {
7638
-        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
7639
-      }
7640
-    } else {
7641
-      for (let i = 0; i < thumbsToActivate; i += 1) {
7642
-        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
7643
-      }
7644
-    }
7645
-  },
7646
-};
7647
-var Thumbs$1 = {
7648
-  name: 'thumbs',
7649
-  params: {
7650
-    thumbs: {
7651
-      swiper: null,
7652
-      multipleActiveThumbs: true,
7653
-      autoScrollOffset: 0,
7654
-      slideThumbActiveClass: 'swiper-slide-thumb-active',
7655
-      thumbsContainerClass: 'swiper-container-thumbs',
7656
-    },
7657
-  },
7658
-  create() {
7659
-    const swiper = this;
7660
-    Utils.extend(swiper, {
7661
-      thumbs: {
7662
-        swiper: null,
7663
-        init: Thumbs.init.bind(swiper),
7664
-        update: Thumbs.update.bind(swiper),
7665
-        onThumbClick: Thumbs.onThumbClick.bind(swiper),
7666
-      },
7667
-    });
7668
-  },
7669
-  on: {
7670
-    beforeInit() {
7671
-      const swiper = this;
7672
-      const { thumbs } = swiper.params;
7673
-      if (!thumbs || !thumbs.swiper) return;
7674
-      swiper.thumbs.init();
7675
-      swiper.thumbs.update(true);
7676
-    },
7677
-    slideChange() {
7678
-      const swiper = this;
7679
-      if (!swiper.thumbs.swiper) return;
7680
-      swiper.thumbs.update();
7681
-    },
7682
-    update() {
7683
-      const swiper = this;
7684
-      if (!swiper.thumbs.swiper) return;
7685
-      swiper.thumbs.update();
7686
-    },
7687
-    resize() {
7688
-      const swiper = this;
7689
-      if (!swiper.thumbs.swiper) return;
7690
-      swiper.thumbs.update();
7691
-    },
7692
-    observerUpdate() {
7693
-      const swiper = this;
7694
-      if (!swiper.thumbs.swiper) return;
7695
-      swiper.thumbs.update();
7696
-    },
7697
-    setTransition(duration) {
7698
-      const swiper = this;
7699
-      const thumbsSwiper = swiper.thumbs.swiper;
7700
-      if (!thumbsSwiper) return;
7701
-      thumbsSwiper.setTransition(duration);
7702
-    },
7703
-    beforeDestroy() {
7704
-      const swiper = this;
7705
-      const thumbsSwiper = swiper.thumbs.swiper;
7706
-      if (!thumbsSwiper) return;
7707
-      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
7708
-        thumbsSwiper.destroy();
7709
-      }
7710
-    },
7711
-  },
7712
-};
7713
-
7714
-// Swiper Class
7715
-
7716
-const components = [
7717
-  Device$1,
7718
-  Support$1,
7719
-  Browser$1,
7720
-  Resize,
7721
-  Observer$1,
7722
-  Virtual$1,
7723
-  Keyboard$1,
7724
-  Mousewheel$1,
7725
-  Navigation$1,
7726
-  Pagination$1,
7727
-  Scrollbar$1,
7728
-  Parallax$1,
7729
-  Zoom$1,
7730
-  Lazy$1,
7731
-  Controller$1,
7732
-  A11y,
7733
-  History$1,
7734
-  HashNavigation$1,
7735
-  Autoplay$1,
7736
-  EffectFade,
7737
-  EffectCube,
7738
-  EffectFlip,
7739
-  EffectCoverflow,
7740
-  Thumbs$1
7741
-];
7742
-
7743
-if (typeof Swiper.use === 'undefined') {
7744
-  Swiper.use = Swiper.Class.use;
7745
-  Swiper.installModule = Swiper.Class.installModule;
7746
-}
7747
-
7748
-Swiper.use(components);
7749
-
7750
-export default Swiper;
7751
-//# sourceMappingURL=swiper.esm.bundle.js.map
7752 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"file":"swiper.esm.bundle.js.map","sources":["../src/utils/dom.js","../src/utils/utils.js","../src/utils/support.js","../src/utils/class.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/utils/device.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/modules/device/device.js","../src/modules/support/support.js","../src/utils/browser.js","../src/modules/browser/browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["import {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n  return {\n    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup = groupIndex === 0\n          ? params.slidesPerGroup\n          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n","export default function (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((index, slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                || (slideAfter > 1 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n","export default function () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n  return (-this.snapGrid[0]);\n}\n","export default function () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n\n  const {\n    params,\n    wrapperEl,\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n","export default function (duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n","export default function () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n  const platform = window.navigator.platform;\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!(window.cordova || window.phonegap),\n    phonegap: !!(window.cordova || window.phonegap),\n    electron: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  if (!ipad\n    && macos\n    && Support.touch\n    && (\n      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n      || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n      || (screenWidth === 768 && screenHeight === 1024) // other\n    )\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron;\n  if (device.desktop) {\n    device.electron = electron;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement\n      && $(document.activeElement).is(data.formElements)\n      && document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n","export default function (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n  attachEvents,\n  detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params, $el,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n    }\n\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n","export default function () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","export default function () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages,\n};\n","\nfunction checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    swiper.navigation.update();\n  }\n}\n\nexport default { checkOverflow };\n","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n","import Support from '../../utils/support';\n\nexport default {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nexport default {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nexport default {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n    } else {\n      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (kc === 34 || kc === 40) swiper.slideNext();\n      if (kc === 33 || kc === 38) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nexport default {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document.implementation\n    && document.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: Utils.now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents = lastEventBeforeSnap\n        && newEvent.time < lastEventBeforeSnap.time + 500\n        && newEvent.delta <= lastEventBeforeSnap.delta\n        && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + (delta * params.sensitivity);\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15\n              && newEvent.time - firstEvent.time < 500\n              && firstEvent.delta - newEvent.delta >= 1\n              && newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nexport default {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        animateSlider: Mousewheel.animateSlider.bind(swiper),\n        releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n        lastScrollTime: Utils.now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nexport default {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n      && swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n    }\n    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const {\n      $el,\n      dragSize,\n      trackSize,\n      dragStartPos,\n    } = scrollbar;\n\n    let positionRatio;\n    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nexport default {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nexport default {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n};\n\nexport default {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nexport default {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nexport default {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nexport default {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nexport default {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    swiper.emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nexport default {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nexport default {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onVisibilityChange() {\n          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n            swiper.autoplay.pause();\n          }\n          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n            swiper.autoplay.run();\n            swiper.autoplay.paused = false;\n          }\n        },\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd() {\n      const swiper = this;\n      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nexport default {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n      }\n      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nexport default {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nexport default {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n  Device,\n  Support,\n  Browser,\n  Resize,\n  Observer,\n  //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["transition","transitionEnd","document","checkOverflow","Device","Support","Browser","Observer","Virtual"],"mappings":"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"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,7733 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';
14
-import { window, document as document$1 } from 'ssr-window';
15
-
16
-const Methods = {
17
-  addClass,
18
-  removeClass,
19
-  hasClass,
20
-  toggleClass,
21
-  attr,
22
-  removeAttr,
23
-  data,
24
-  transform,
25
-  transition: transition$1,
26
-  on,
27
-  off,
28
-  trigger,
29
-  transitionEnd: transitionEnd$1,
30
-  outerWidth,
31
-  outerHeight,
32
-  offset,
33
-  css,
34
-  each,
35
-  html,
36
-  text,
37
-  is,
38
-  index,
39
-  eq,
40
-  append,
41
-  prepend,
42
-  next,
43
-  nextAll,
44
-  prev,
45
-  prevAll,
46
-  parent,
47
-  parents,
48
-  closest,
49
-  find,
50
-  children,
51
-  filter,
52
-  remove,
53
-  add,
54
-  styles,
55
-};
56
-
57
-Object.keys(Methods).forEach((methodName) => {
58
-  $.fn[methodName] = $.fn[methodName] || Methods[methodName];
59
-});
60
-
61
-const Utils = {
62
-  deleteProps(obj) {
63
-    const object = obj;
64
-    Object.keys(object).forEach((key) => {
65
-      try {
66
-        object[key] = null;
67
-      } catch (e) {
68
-        // no getter for object
69
-      }
70
-      try {
71
-        delete object[key];
72
-      } catch (e) {
73
-        // something got wrong
74
-      }
75
-    });
76
-  },
77
-  nextTick(callback, delay = 0) {
78
-    return setTimeout(callback, delay);
79
-  },
80
-  now() {
81
-    return Date.now();
82
-  },
83
-  getTranslate(el, axis = 'x') {
84
-    let matrix;
85
-    let curTransform;
86
-    let transformMatrix;
87
-
88
-    const curStyle = window.getComputedStyle(el, null);
89
-
90
-    if (window.WebKitCSSMatrix) {
91
-      curTransform = curStyle.transform || curStyle.webkitTransform;
92
-      if (curTransform.split(',').length > 6) {
93
-        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');
94
-      }
95
-      // Some old versions of Webkit choke when 'none' is passed; pass
96
-      // empty string instead in this case
97
-      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
98
-    } else {
99
-      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
100
-      matrix = transformMatrix.toString().split(',');
101
-    }
102
-
103
-    if (axis === 'x') {
104
-      // Latest Chrome and webkits Fix
105
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
106
-      // Crazy IE10 Matrix
107
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
108
-      // Normal Browsers
109
-      else curTransform = parseFloat(matrix[4]);
110
-    }
111
-    if (axis === 'y') {
112
-      // Latest Chrome and webkits Fix
113
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
114
-      // Crazy IE10 Matrix
115
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
116
-      // Normal Browsers
117
-      else curTransform = parseFloat(matrix[5]);
118
-    }
119
-    return curTransform || 0;
120
-  },
121
-  parseUrlQuery(url) {
122
-    const query = {};
123
-    let urlToParse = url || window.location.href;
124
-    let i;
125
-    let params;
126
-    let param;
127
-    let length;
128
-    if (typeof urlToParse === 'string' && urlToParse.length) {
129
-      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
130
-      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');
131
-      length = params.length;
132
-
133
-      for (i = 0; i < length; i += 1) {
134
-        param = params[i].replace(/#\S+/g, '').split('=');
135
-        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
136
-      }
137
-    }
138
-    return query;
139
-  },
140
-  isObject(o) {
141
-    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
142
-  },
143
-  extend(...args) {
144
-    const to = Object(args[0]);
145
-    for (let i = 1; i < args.length; i += 1) {
146
-      const nextSource = args[i];
147
-      if (nextSource !== undefined && nextSource !== null) {
148
-        const keysArray = Object.keys(Object(nextSource));
149
-        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
150
-          const nextKey = keysArray[nextIndex];
151
-          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
152
-          if (desc !== undefined && desc.enumerable) {
153
-            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
154
-              Utils.extend(to[nextKey], nextSource[nextKey]);
155
-            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
156
-              to[nextKey] = {};
157
-              Utils.extend(to[nextKey], nextSource[nextKey]);
158
-            } else {
159
-              to[nextKey] = nextSource[nextKey];
160
-            }
161
-          }
162
-        }
163
-      }
164
-    }
165
-    return to;
166
-  },
167
-};
168
-
169
-const Support = (function Support() {
170
-  return {
171
-    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)),
172
-
173
-    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,
174
-
175
-    observer: (function checkObserver() {
176
-      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);
177
-    }()),
178
-
179
-    passiveListener: (function checkPassiveListener() {
180
-      let supportsPassive = false;
181
-      try {
182
-        const opts = Object.defineProperty({}, 'passive', {
183
-          // eslint-disable-next-line
184
-          get() {
185
-            supportsPassive = true;
186
-          },
187
-        });
188
-        window.addEventListener('testPassiveListener', null, opts);
189
-      } catch (e) {
190
-        // No support
191
-      }
192
-      return supportsPassive;
193
-    }()),
194
-
195
-    gestures: (function checkGestures() {
196
-      return 'ongesturestart' in window;
197
-    }()),
198
-  };
199
-}());
200
-
201
-class SwiperClass {
202
-  constructor(params = {}) {
203
-    const self = this;
204
-    self.params = params;
205
-
206
-    // Events
207
-    self.eventsListeners = {};
208
-
209
-    if (self.params && self.params.on) {
210
-      Object.keys(self.params.on).forEach((eventName) => {
211
-        self.on(eventName, self.params.on[eventName]);
212
-      });
213
-    }
214
-  }
215
-
216
-  on(events, handler, priority) {
217
-    const self = this;
218
-    if (typeof handler !== 'function') return self;
219
-    const method = priority ? 'unshift' : 'push';
220
-    events.split(' ').forEach((event) => {
221
-      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
222
-      self.eventsListeners[event][method](handler);
223
-    });
224
-    return self;
225
-  }
226
-
227
-  once(events, handler, priority) {
228
-    const self = this;
229
-    if (typeof handler !== 'function') return self;
230
-    function onceHandler(...args) {
231
-      self.off(events, onceHandler);
232
-      if (onceHandler.f7proxy) {
233
-        delete onceHandler.f7proxy;
234
-      }
235
-      handler.apply(self, args);
236
-    }
237
-    onceHandler.f7proxy = handler;
238
-    return self.on(events, onceHandler, priority);
239
-  }
240
-
241
-  off(events, handler) {
242
-    const self = this;
243
-    if (!self.eventsListeners) return self;
244
-    events.split(' ').forEach((event) => {
245
-      if (typeof handler === 'undefined') {
246
-        self.eventsListeners[event] = [];
247
-      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
248
-        self.eventsListeners[event].forEach((eventHandler, index) => {
249
-          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
250
-            self.eventsListeners[event].splice(index, 1);
251
-          }
252
-        });
253
-      }
254
-    });
255
-    return self;
256
-  }
257
-
258
-  emit(...args) {
259
-    const self = this;
260
-    if (!self.eventsListeners) return self;
261
-    let events;
262
-    let data;
263
-    let context;
264
-    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
265
-      events = args[0];
266
-      data = args.slice(1, args.length);
267
-      context = self;
268
-    } else {
269
-      events = args[0].events;
270
-      data = args[0].data;
271
-      context = args[0].context || self;
272
-    }
273
-    const eventsArray = Array.isArray(events) ? events : events.split(' ');
274
-    eventsArray.forEach((event) => {
275
-      if (self.eventsListeners && self.eventsListeners[event]) {
276
-        const handlers = [];
277
-        self.eventsListeners[event].forEach((eventHandler) => {
278
-          handlers.push(eventHandler);
279
-        });
280
-        handlers.forEach((eventHandler) => {
281
-          eventHandler.apply(context, data);
282
-        });
283
-      }
284
-    });
285
-    return self;
286
-  }
287
-
288
-  useModulesParams(instanceParams) {
289
-    const instance = this;
290
-    if (!instance.modules) return;
291
-    Object.keys(instance.modules).forEach((moduleName) => {
292
-      const module = instance.modules[moduleName];
293
-      // Extend params
294
-      if (module.params) {
295
-        Utils.extend(instanceParams, module.params);
296
-      }
297
-    });
298
-  }
299
-
300
-  useModules(modulesParams = {}) {
301
-    const instance = this;
302
-    if (!instance.modules) return;
303
-    Object.keys(instance.modules).forEach((moduleName) => {
304
-      const module = instance.modules[moduleName];
305
-      const moduleParams = modulesParams[moduleName] || {};
306
-      // Extend instance methods and props
307
-      if (module.instance) {
308
-        Object.keys(module.instance).forEach((modulePropName) => {
309
-          const moduleProp = module.instance[modulePropName];
310
-          if (typeof moduleProp === 'function') {
311
-            instance[modulePropName] = moduleProp.bind(instance);
312
-          } else {
313
-            instance[modulePropName] = moduleProp;
314
-          }
315
-        });
316
-      }
317
-      // Add event listeners
318
-      if (module.on && instance.on) {
319
-        Object.keys(module.on).forEach((moduleEventName) => {
320
-          instance.on(moduleEventName, module.on[moduleEventName]);
321
-        });
322
-      }
323
-
324
-      // Module create callback
325
-      if (module.create) {
326
-        module.create.bind(instance)(moduleParams);
327
-      }
328
-    });
329
-  }
330
-
331
-  static set components(components) {
332
-    const Class = this;
333
-    if (!Class.use) return;
334
-    Class.use(components);
335
-  }
336
-
337
-  static installModule(module, ...params) {
338
-    const Class = this;
339
-    if (!Class.prototype.modules) Class.prototype.modules = {};
340
-    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);
341
-    Class.prototype.modules[name] = module;
342
-    // Prototype
343
-    if (module.proto) {
344
-      Object.keys(module.proto).forEach((key) => {
345
-        Class.prototype[key] = module.proto[key];
346
-      });
347
-    }
348
-    // Class
349
-    if (module.static) {
350
-      Object.keys(module.static).forEach((key) => {
351
-        Class[key] = module.static[key];
352
-      });
353
-    }
354
-    // Callback
355
-    if (module.install) {
356
-      module.install.apply(Class, params);
357
-    }
358
-    return Class;
359
-  }
360
-
361
-  static use(module, ...params) {
362
-    const Class = this;
363
-    if (Array.isArray(module)) {
364
-      module.forEach((m) => Class.installModule(m));
365
-      return Class;
366
-    }
367
-    return Class.installModule(module, ...params);
368
-  }
369
-}
370
-
371
-function updateSize () {
372
-  const swiper = this;
373
-  let width;
374
-  let height;
375
-  const $el = swiper.$el;
376
-  if (typeof swiper.params.width !== 'undefined') {
377
-    width = swiper.params.width;
378
-  } else {
379
-    width = $el[0].clientWidth;
380
-  }
381
-  if (typeof swiper.params.height !== 'undefined') {
382
-    height = swiper.params.height;
383
-  } else {
384
-    height = $el[0].clientHeight;
385
-  }
386
-  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
387
-    return;
388
-  }
389
-
390
-  // Subtract paddings
391
-  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
392
-  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
393
-
394
-  Utils.extend(swiper, {
395
-    width,
396
-    height,
397
-    size: swiper.isHorizontal() ? width : height,
398
-  });
399
-}
400
-
401
-function updateSlides () {
402
-  const swiper = this;
403
-  const params = swiper.params;
404
-
405
-  const {
406
-    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
407
-  } = swiper;
408
-  const isVirtual = swiper.virtual && params.virtual.enabled;
409
-  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
410
-  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
411
-  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
412
-  let snapGrid = [];
413
-  const slidesGrid = [];
414
-  const slidesSizesGrid = [];
415
-
416
-  function slidesForMargin(slideIndex) {
417
-    if (!params.cssMode) return true;
418
-    if (slideIndex === slides.length - 1) {
419
-      return false;
420
-    }
421
-    return true;
422
-  }
423
-
424
-  let offsetBefore = params.slidesOffsetBefore;
425
-  if (typeof offsetBefore === 'function') {
426
-    offsetBefore = params.slidesOffsetBefore.call(swiper);
427
-  }
428
-
429
-  let offsetAfter = params.slidesOffsetAfter;
430
-  if (typeof offsetAfter === 'function') {
431
-    offsetAfter = params.slidesOffsetAfter.call(swiper);
432
-  }
433
-
434
-  const previousSnapGridLength = swiper.snapGrid.length;
435
-  const previousSlidesGridLength = swiper.snapGrid.length;
436
-
437
-  let spaceBetween = params.spaceBetween;
438
-  let slidePosition = -offsetBefore;
439
-  let prevSlideSize = 0;
440
-  let index = 0;
441
-  if (typeof swiperSize === 'undefined') {
442
-    return;
443
-  }
444
-  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
445
-    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
446
-  }
447
-
448
-  swiper.virtualSize = -spaceBetween;
449
-
450
-  // reset margins
451
-  if (rtl) slides.css({ marginLeft: '', marginTop: '' });
452
-  else slides.css({ marginRight: '', marginBottom: '' });
453
-
454
-  let slidesNumberEvenToRows;
455
-  if (params.slidesPerColumn > 1) {
456
-    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
457
-      slidesNumberEvenToRows = slidesLength;
458
-    } else {
459
-      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
460
-    }
461
-    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
462
-      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
463
-    }
464
-  }
465
-
466
-  // Calc slides
467
-  let slideSize;
468
-  const slidesPerColumn = params.slidesPerColumn;
469
-  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
470
-  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
471
-  for (let i = 0; i < slidesLength; i += 1) {
472
-    slideSize = 0;
473
-    const slide = slides.eq(i);
474
-    if (params.slidesPerColumn > 1) {
475
-      // Set slides order
476
-      let newSlideOrderIndex;
477
-      let column;
478
-      let row;
479
-      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
480
-        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
481
-        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
482
-        const columnsInGroup = groupIndex === 0
483
-          ? params.slidesPerGroup
484
-          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
485
-        row = Math.floor(slideIndexInGroup / columnsInGroup);
486
-        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
487
-
488
-        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
489
-        slide
490
-          .css({
491
-            '-webkit-box-ordinal-group': newSlideOrderIndex,
492
-            '-moz-box-ordinal-group': newSlideOrderIndex,
493
-            '-ms-flex-order': newSlideOrderIndex,
494
-            '-webkit-order': newSlideOrderIndex,
495
-            order: newSlideOrderIndex,
496
-          });
497
-      } else if (params.slidesPerColumnFill === 'column') {
498
-        column = Math.floor(i / slidesPerColumn);
499
-        row = i - (column * slidesPerColumn);
500
-        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
501
-          row += 1;
502
-          if (row >= slidesPerColumn) {
503
-            row = 0;
504
-            column += 1;
505
-          }
506
-        }
507
-      } else {
508
-        row = Math.floor(i / slidesPerRow);
509
-        column = i - (row * slidesPerRow);
510
-      }
511
-      slide.css(
512
-        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,
513
-        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)
514
-      );
515
-    }
516
-    if (slide.css('display') === 'none') continue; // eslint-disable-line
517
-
518
-    if (params.slidesPerView === 'auto') {
519
-      const slideStyles = window.getComputedStyle(slide[0], null);
520
-      const currentTransform = slide[0].style.transform;
521
-      const currentWebKitTransform = slide[0].style.webkitTransform;
522
-      if (currentTransform) {
523
-        slide[0].style.transform = 'none';
524
-      }
525
-      if (currentWebKitTransform) {
526
-        slide[0].style.webkitTransform = 'none';
527
-      }
528
-      if (params.roundLengths) {
529
-        slideSize = swiper.isHorizontal()
530
-          ? slide.outerWidth(true)
531
-          : slide.outerHeight(true);
532
-      } else {
533
-        // eslint-disable-next-line
534
-        if (swiper.isHorizontal()) {
535
-          const width = parseFloat(slideStyles.getPropertyValue('width'));
536
-          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
537
-          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
538
-          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
539
-          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
540
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
541
-          if (boxSizing && boxSizing === 'border-box') {
542
-            slideSize = width + marginLeft + marginRight;
543
-          } else {
544
-            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
545
-          }
546
-        } else {
547
-          const height = parseFloat(slideStyles.getPropertyValue('height'));
548
-          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
549
-          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
550
-          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
551
-          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
552
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
553
-          if (boxSizing && boxSizing === 'border-box') {
554
-            slideSize = height + marginTop + marginBottom;
555
-          } else {
556
-            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
557
-          }
558
-        }
559
-      }
560
-      if (currentTransform) {
561
-        slide[0].style.transform = currentTransform;
562
-      }
563
-      if (currentWebKitTransform) {
564
-        slide[0].style.webkitTransform = currentWebKitTransform;
565
-      }
566
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
567
-    } else {
568
-      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
569
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
570
-
571
-      if (slides[i]) {
572
-        if (swiper.isHorizontal()) {
573
-          slides[i].style.width = `${slideSize}px`;
574
-        } else {
575
-          slides[i].style.height = `${slideSize}px`;
576
-        }
577
-      }
578
-    }
579
-    if (slides[i]) {
580
-      slides[i].swiperSlideSize = slideSize;
581
-    }
582
-    slidesSizesGrid.push(slideSize);
583
-
584
-
585
-    if (params.centeredSlides) {
586
-      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
587
-      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
588
-      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
589
-      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
590
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
591
-      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
592
-      slidesGrid.push(slidePosition);
593
-    } else {
594
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
595
-      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
596
-      slidesGrid.push(slidePosition);
597
-      slidePosition = slidePosition + slideSize + spaceBetween;
598
-    }
599
-
600
-    swiper.virtualSize += slideSize + spaceBetween;
601
-
602
-    prevSlideSize = slideSize;
603
-
604
-    index += 1;
605
-  }
606
-  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
607
-  let newSlidesGrid;
608
-
609
-  if (
610
-    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
611
-    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
612
-  }
613
-  if (params.setWrapperSize) {
614
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
615
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
616
-  }
617
-
618
-  if (params.slidesPerColumn > 1) {
619
-    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
620
-    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
621
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
622
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
623
-    if (params.centeredSlides) {
624
-      newSlidesGrid = [];
625
-      for (let i = 0; i < snapGrid.length; i += 1) {
626
-        let slidesGridItem = snapGrid[i];
627
-        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
628
-        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
629
-      }
630
-      snapGrid = newSlidesGrid;
631
-    }
632
-  }
633
-
634
-  // Remove last grid elements depending on width
635
-  if (!params.centeredSlides) {
636
-    newSlidesGrid = [];
637
-    for (let i = 0; i < snapGrid.length; i += 1) {
638
-      let slidesGridItem = snapGrid[i];
639
-      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
640
-      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
641
-        newSlidesGrid.push(slidesGridItem);
642
-      }
643
-    }
644
-    snapGrid = newSlidesGrid;
645
-    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
646
-      snapGrid.push(swiper.virtualSize - swiperSize);
647
-    }
648
-  }
649
-  if (snapGrid.length === 0) snapGrid = [0];
650
-
651
-  if (params.spaceBetween !== 0) {
652
-    if (swiper.isHorizontal()) {
653
-      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });
654
-      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });
655
-    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });
656
-  }
657
-
658
-  if (params.centeredSlides && params.centeredSlidesBounds) {
659
-    let allSlidesSize = 0;
660
-    slidesSizesGrid.forEach((slideSizeValue) => {
661
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
662
-    });
663
-    allSlidesSize -= params.spaceBetween;
664
-    const maxSnap = allSlidesSize - swiperSize;
665
-    snapGrid = snapGrid.map((snap) => {
666
-      if (snap < 0) return -offsetBefore;
667
-      if (snap > maxSnap) return maxSnap + offsetAfter;
668
-      return snap;
669
-    });
670
-  }
671
-
672
-  if (params.centerInsufficientSlides) {
673
-    let allSlidesSize = 0;
674
-    slidesSizesGrid.forEach((slideSizeValue) => {
675
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
676
-    });
677
-    allSlidesSize -= params.spaceBetween;
678
-    if (allSlidesSize < swiperSize) {
679
-      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
680
-      snapGrid.forEach((snap, snapIndex) => {
681
-        snapGrid[snapIndex] = snap - allSlidesOffset;
682
-      });
683
-      slidesGrid.forEach((snap, snapIndex) => {
684
-        slidesGrid[snapIndex] = snap + allSlidesOffset;
685
-      });
686
-    }
687
-  }
688
-
689
-  Utils.extend(swiper, {
690
-    slides,
691
-    snapGrid,
692
-    slidesGrid,
693
-    slidesSizesGrid,
694
-  });
695
-
696
-  if (slidesLength !== previousSlidesLength) {
697
-    swiper.emit('slidesLengthChange');
698
-  }
699
-  if (snapGrid.length !== previousSnapGridLength) {
700
-    if (swiper.params.watchOverflow) swiper.checkOverflow();
701
-    swiper.emit('snapGridLengthChange');
702
-  }
703
-  if (slidesGrid.length !== previousSlidesGridLength) {
704
-    swiper.emit('slidesGridLengthChange');
705
-  }
706
-
707
-  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
708
-    swiper.updateSlidesOffset();
709
-  }
710
-}
711
-
712
-function updateAutoHeight (speed) {
713
-  const swiper = this;
714
-  const activeSlides = [];
715
-  let newHeight = 0;
716
-  let i;
717
-  if (typeof speed === 'number') {
718
-    swiper.setTransition(speed);
719
-  } else if (speed === true) {
720
-    swiper.setTransition(swiper.params.speed);
721
-  }
722
-  // Find slides currently in view
723
-  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
724
-    if (swiper.params.centeredSlides) {
725
-      swiper.visibleSlides.each((index, slide) => {
726
-        activeSlides.push(slide);
727
-      });
728
-    } else {
729
-      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
730
-        const index = swiper.activeIndex + i;
731
-        if (index > swiper.slides.length) break;
732
-        activeSlides.push(swiper.slides.eq(index)[0]);
733
-      }
734
-    }
735
-  } else {
736
-    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
737
-  }
738
-
739
-  // Find new height from highest slide in view
740
-  for (i = 0; i < activeSlides.length; i += 1) {
741
-    if (typeof activeSlides[i] !== 'undefined') {
742
-      const height = activeSlides[i].offsetHeight;
743
-      newHeight = height > newHeight ? height : newHeight;
744
-    }
745
-  }
746
-
747
-  // Update Height
748
-  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);
749
-}
750
-
751
-function updateSlidesOffset () {
752
-  const swiper = this;
753
-  const slides = swiper.slides;
754
-  for (let i = 0; i < slides.length; i += 1) {
755
-    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
756
-  }
757
-}
758
-
759
-function updateSlidesProgress (translate = (this && this.translate) || 0) {
760
-  const swiper = this;
761
-  const params = swiper.params;
762
-
763
-  const { slides, rtlTranslate: rtl } = swiper;
764
-
765
-  if (slides.length === 0) return;
766
-  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
767
-
768
-  let offsetCenter = -translate;
769
-  if (rtl) offsetCenter = translate;
770
-
771
-  // Visible Slides
772
-  slides.removeClass(params.slideVisibleClass);
773
-
774
-  swiper.visibleSlidesIndexes = [];
775
-  swiper.visibleSlides = [];
776
-
777
-  for (let i = 0; i < slides.length; i += 1) {
778
-    const slide = slides[i];
779
-    const slideProgress = (
780
-      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
781
-    ) / (slide.swiperSlideSize + params.spaceBetween);
782
-    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
783
-      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);
784
-      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
785
-      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
786
-                || (slideAfter > 1 && slideAfter <= swiper.size)
787
-                || (slideBefore <= 0 && slideAfter >= swiper.size);
788
-      if (isVisible) {
789
-        swiper.visibleSlides.push(slide);
790
-        swiper.visibleSlidesIndexes.push(i);
791
-        slides.eq(i).addClass(params.slideVisibleClass);
792
-      }
793
-    }
794
-    slide.progress = rtl ? -slideProgress : slideProgress;
795
-  }
796
-  swiper.visibleSlides = $(swiper.visibleSlides);
797
-}
798
-
799
-function updateProgress (translate) {
800
-  const swiper = this;
801
-  if (typeof translate === 'undefined') {
802
-    const multiplier = swiper.rtlTranslate ? -1 : 1;
803
-    // eslint-disable-next-line
804
-    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
805
-  }
806
-  const params = swiper.params;
807
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
808
-  let { progress, isBeginning, isEnd } = swiper;
809
-  const wasBeginning = isBeginning;
810
-  const wasEnd = isEnd;
811
-  if (translatesDiff === 0) {
812
-    progress = 0;
813
-    isBeginning = true;
814
-    isEnd = true;
815
-  } else {
816
-    progress = (translate - swiper.minTranslate()) / (translatesDiff);
817
-    isBeginning = progress <= 0;
818
-    isEnd = progress >= 1;
819
-  }
820
-  Utils.extend(swiper, {
821
-    progress,
822
-    isBeginning,
823
-    isEnd,
824
-  });
825
-
826
-  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);
827
-
828
-  if (isBeginning && !wasBeginning) {
829
-    swiper.emit('reachBeginning toEdge');
830
-  }
831
-  if (isEnd && !wasEnd) {
832
-    swiper.emit('reachEnd toEdge');
833
-  }
834
-  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
835
-    swiper.emit('fromEdge');
836
-  }
837
-
838
-  swiper.emit('progress', progress);
839
-}
840
-
841
-function updateSlidesClasses () {
842
-  const swiper = this;
843
-
844
-  const {
845
-    slides, params, $wrapperEl, activeIndex, realIndex,
846
-  } = swiper;
847
-  const isVirtual = swiper.virtual && params.virtual.enabled;
848
-
849
-  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
850
-
851
-  let activeSlide;
852
-  if (isVirtual) {
853
-    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
854
-  } else {
855
-    activeSlide = slides.eq(activeIndex);
856
-  }
857
-
858
-  // Active classes
859
-  activeSlide.addClass(params.slideActiveClass);
860
-
861
-  if (params.loop) {
862
-    // Duplicate to all looped slides
863
-    if (activeSlide.hasClass(params.slideDuplicateClass)) {
864
-      $wrapperEl
865
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`)
866
-        .addClass(params.slideDuplicateActiveClass);
867
-    } else {
868
-      $wrapperEl
869
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`)
870
-        .addClass(params.slideDuplicateActiveClass);
871
-    }
872
-  }
873
-  // Next Slide
874
-  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
875
-  if (params.loop && nextSlide.length === 0) {
876
-    nextSlide = slides.eq(0);
877
-    nextSlide.addClass(params.slideNextClass);
878
-  }
879
-  // Prev Slide
880
-  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
881
-  if (params.loop && prevSlide.length === 0) {
882
-    prevSlide = slides.eq(-1);
883
-    prevSlide.addClass(params.slidePrevClass);
884
-  }
885
-  if (params.loop) {
886
-    // Duplicate to all looped slides
887
-    if (nextSlide.hasClass(params.slideDuplicateClass)) {
888
-      $wrapperEl
889
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
890
-        .addClass(params.slideDuplicateNextClass);
891
-    } else {
892
-      $wrapperEl
893
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
894
-        .addClass(params.slideDuplicateNextClass);
895
-    }
896
-    if (prevSlide.hasClass(params.slideDuplicateClass)) {
897
-      $wrapperEl
898
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
899
-        .addClass(params.slideDuplicatePrevClass);
900
-    } else {
901
-      $wrapperEl
902
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
903
-        .addClass(params.slideDuplicatePrevClass);
904
-    }
905
-  }
906
-}
907
-
908
-function updateActiveIndex (newActiveIndex) {
909
-  const swiper = this;
910
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
911
-  const {
912
-    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,
913
-  } = swiper;
914
-  let activeIndex = newActiveIndex;
915
-  let snapIndex;
916
-  if (typeof activeIndex === 'undefined') {
917
-    for (let i = 0; i < slidesGrid.length; i += 1) {
918
-      if (typeof slidesGrid[i + 1] !== 'undefined') {
919
-        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
920
-          activeIndex = i;
921
-        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
922
-          activeIndex = i + 1;
923
-        }
924
-      } else if (translate >= slidesGrid[i]) {
925
-        activeIndex = i;
926
-      }
927
-    }
928
-    // Normalize slideIndex
929
-    if (params.normalizeSlideIndex) {
930
-      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
931
-    }
932
-  }
933
-  if (snapGrid.indexOf(translate) >= 0) {
934
-    snapIndex = snapGrid.indexOf(translate);
935
-  } else {
936
-    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
937
-    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
938
-  }
939
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
940
-  if (activeIndex === previousIndex) {
941
-    if (snapIndex !== previousSnapIndex) {
942
-      swiper.snapIndex = snapIndex;
943
-      swiper.emit('snapIndexChange');
944
-    }
945
-    return;
946
-  }
947
-
948
-  // Get real index
949
-  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
950
-
951
-  Utils.extend(swiper, {
952
-    snapIndex,
953
-    realIndex,
954
-    previousIndex,
955
-    activeIndex,
956
-  });
957
-  swiper.emit('activeIndexChange');
958
-  swiper.emit('snapIndexChange');
959
-  if (previousRealIndex !== realIndex) {
960
-    swiper.emit('realIndexChange');
961
-  }
962
-  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
963
-    swiper.emit('slideChange');
964
-  }
965
-}
966
-
967
-function updateClickedSlide (e) {
968
-  const swiper = this;
969
-  const params = swiper.params;
970
-  const slide = $(e.target).closest(`.${params.slideClass}`)[0];
971
-  let slideFound = false;
972
-  if (slide) {
973
-    for (let i = 0; i < swiper.slides.length; i += 1) {
974
-      if (swiper.slides[i] === slide) slideFound = true;
975
-    }
976
-  }
977
-
978
-  if (slide && slideFound) {
979
-    swiper.clickedSlide = slide;
980
-    if (swiper.virtual && swiper.params.virtual.enabled) {
981
-      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
982
-    } else {
983
-      swiper.clickedIndex = $(slide).index();
984
-    }
985
-  } else {
986
-    swiper.clickedSlide = undefined;
987
-    swiper.clickedIndex = undefined;
988
-    return;
989
-  }
990
-  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
991
-    swiper.slideToClickedSlide();
992
-  }
993
-}
994
-
995
-var update = {
996
-  updateSize,
997
-  updateSlides,
998
-  updateAutoHeight,
999
-  updateSlidesOffset,
1000
-  updateSlidesProgress,
1001
-  updateProgress,
1002
-  updateSlidesClasses,
1003
-  updateActiveIndex,
1004
-  updateClickedSlide,
1005
-};
1006
-
1007
-function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {
1008
-  const swiper = this;
1009
-
1010
-  const {
1011
-    params, rtlTranslate: rtl, translate, $wrapperEl,
1012
-  } = swiper;
1013
-
1014
-  if (params.virtualTranslate) {
1015
-    return rtl ? -translate : translate;
1016
-  }
1017
-  if (params.cssMode) {
1018
-    return translate;
1019
-  }
1020
-
1021
-  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
1022
-  if (rtl) currentTranslate = -currentTranslate;
1023
-
1024
-  return currentTranslate || 0;
1025
-}
1026
-
1027
-function setTranslate (translate, byController) {
1028
-  const swiper = this;
1029
-  const {
1030
-    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,
1031
-  } = swiper;
1032
-  let x = 0;
1033
-  let y = 0;
1034
-  const z = 0;
1035
-
1036
-  if (swiper.isHorizontal()) {
1037
-    x = rtl ? -translate : translate;
1038
-  } else {
1039
-    y = translate;
1040
-  }
1041
-
1042
-  if (params.roundLengths) {
1043
-    x = Math.floor(x);
1044
-    y = Math.floor(y);
1045
-  }
1046
-
1047
-  if (params.cssMode) {
1048
-    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
1049
-  } else if (!params.virtualTranslate) {
1050
-    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
1051
-  }
1052
-  swiper.previousTranslate = swiper.translate;
1053
-  swiper.translate = swiper.isHorizontal() ? x : y;
1054
-
1055
-  // Check if we need to update progress
1056
-  let newProgress;
1057
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1058
-  if (translatesDiff === 0) {
1059
-    newProgress = 0;
1060
-  } else {
1061
-    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
1062
-  }
1063
-  if (newProgress !== progress) {
1064
-    swiper.updateProgress(translate);
1065
-  }
1066
-
1067
-  swiper.emit('setTranslate', swiper.translate, byController);
1068
-}
1069
-
1070
-function minTranslate () {
1071
-  return (-this.snapGrid[0]);
1072
-}
1073
-
1074
-function maxTranslate () {
1075
-  return (-this.snapGrid[this.snapGrid.length - 1]);
1076
-}
1077
-
1078
-function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1079
-  const swiper = this;
1080
-
1081
-  const {
1082
-    params,
1083
-    wrapperEl,
1084
-  } = swiper;
1085
-
1086
-  if (swiper.animating && params.preventInteractionOnTransition) {
1087
-    return false;
1088
-  }
1089
-
1090
-  const minTranslate = swiper.minTranslate();
1091
-  const maxTranslate = swiper.maxTranslate();
1092
-  let newTranslate;
1093
-  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
1094
-  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
1095
-  else newTranslate = translate;
1096
-
1097
-  // Update progress
1098
-  swiper.updateProgress(newTranslate);
1099
-
1100
-  if (params.cssMode) {
1101
-    const isH = swiper.isHorizontal();
1102
-    if (speed === 0) {
1103
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1104
-    } else {
1105
-      // eslint-disable-next-line
1106
-      if (wrapperEl.scrollTo) {
1107
-        wrapperEl.scrollTo({
1108
-          [isH ? 'left' : 'top']: -newTranslate,
1109
-          behavior: 'smooth',
1110
-        });
1111
-      } else {
1112
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
1113
-      }
1114
-    }
1115
-    return true;
1116
-  }
1117
-
1118
-  if (speed === 0) {
1119
-    swiper.setTransition(0);
1120
-    swiper.setTranslate(newTranslate);
1121
-    if (runCallbacks) {
1122
-      swiper.emit('beforeTransitionStart', speed, internal);
1123
-      swiper.emit('transitionEnd');
1124
-    }
1125
-  } else {
1126
-    swiper.setTransition(speed);
1127
-    swiper.setTranslate(newTranslate);
1128
-    if (runCallbacks) {
1129
-      swiper.emit('beforeTransitionStart', speed, internal);
1130
-      swiper.emit('transitionStart');
1131
-    }
1132
-    if (!swiper.animating) {
1133
-      swiper.animating = true;
1134
-      if (!swiper.onTranslateToWrapperTransitionEnd) {
1135
-        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
1136
-          if (!swiper || swiper.destroyed) return;
1137
-          if (e.target !== this) return;
1138
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1139
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1140
-          swiper.onTranslateToWrapperTransitionEnd = null;
1141
-          delete swiper.onTranslateToWrapperTransitionEnd;
1142
-          if (runCallbacks) {
1143
-            swiper.emit('transitionEnd');
1144
-          }
1145
-        };
1146
-      }
1147
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
1148
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
1149
-    }
1150
-  }
1151
-
1152
-  return true;
1153
-}
1154
-
1155
-var translate = {
1156
-  getTranslate,
1157
-  setTranslate,
1158
-  minTranslate,
1159
-  maxTranslate,
1160
-  translateTo,
1161
-};
1162
-
1163
-function setTransition (duration, byController) {
1164
-  const swiper = this;
1165
-
1166
-  if (!swiper.params.cssMode) {
1167
-    swiper.$wrapperEl.transition(duration);
1168
-  }
1169
-
1170
-  swiper.emit('setTransition', duration, byController);
1171
-}
1172
-
1173
-function transitionStart (runCallbacks = true, direction) {
1174
-  const swiper = this;
1175
-  const { activeIndex, params, previousIndex } = swiper;
1176
-  if (params.cssMode) return;
1177
-  if (params.autoHeight) {
1178
-    swiper.updateAutoHeight();
1179
-  }
1180
-
1181
-  let dir = direction;
1182
-  if (!dir) {
1183
-    if (activeIndex > previousIndex) dir = 'next';
1184
-    else if (activeIndex < previousIndex) dir = 'prev';
1185
-    else dir = 'reset';
1186
-  }
1187
-
1188
-  swiper.emit('transitionStart');
1189
-
1190
-  if (runCallbacks && activeIndex !== previousIndex) {
1191
-    if (dir === 'reset') {
1192
-      swiper.emit('slideResetTransitionStart');
1193
-      return;
1194
-    }
1195
-    swiper.emit('slideChangeTransitionStart');
1196
-    if (dir === 'next') {
1197
-      swiper.emit('slideNextTransitionStart');
1198
-    } else {
1199
-      swiper.emit('slidePrevTransitionStart');
1200
-    }
1201
-  }
1202
-}
1203
-
1204
-function transitionEnd (runCallbacks = true, direction) {
1205
-  const swiper = this;
1206
-  const { activeIndex, previousIndex, params } = swiper;
1207
-  swiper.animating = false;
1208
-  if (params.cssMode) return;
1209
-  swiper.setTransition(0);
1210
-
1211
-  let dir = direction;
1212
-  if (!dir) {
1213
-    if (activeIndex > previousIndex) dir = 'next';
1214
-    else if (activeIndex < previousIndex) dir = 'prev';
1215
-    else dir = 'reset';
1216
-  }
1217
-
1218
-  swiper.emit('transitionEnd');
1219
-
1220
-  if (runCallbacks && activeIndex !== previousIndex) {
1221
-    if (dir === 'reset') {
1222
-      swiper.emit('slideResetTransitionEnd');
1223
-      return;
1224
-    }
1225
-    swiper.emit('slideChangeTransitionEnd');
1226
-    if (dir === 'next') {
1227
-      swiper.emit('slideNextTransitionEnd');
1228
-    } else {
1229
-      swiper.emit('slidePrevTransitionEnd');
1230
-    }
1231
-  }
1232
-}
1233
-
1234
-var transition = {
1235
-  setTransition,
1236
-  transitionStart,
1237
-  transitionEnd,
1238
-};
1239
-
1240
-function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
1241
-  const swiper = this;
1242
-  let slideIndex = index;
1243
-  if (slideIndex < 0) slideIndex = 0;
1244
-
1245
-  const {
1246
-    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,
1247
-  } = swiper;
1248
-  if (swiper.animating && params.preventInteractionOnTransition) {
1249
-    return false;
1250
-  }
1251
-
1252
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
1253
-  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
1254
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
1255
-
1256
-  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
1257
-    swiper.emit('beforeSlideChangeStart');
1258
-  }
1259
-
1260
-  const translate = -snapGrid[snapIndex];
1261
-
1262
-  // Update progress
1263
-  swiper.updateProgress(translate);
1264
-
1265
-  // Normalize slideIndex
1266
-  if (params.normalizeSlideIndex) {
1267
-    for (let i = 0; i < slidesGrid.length; i += 1) {
1268
-      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
1269
-        slideIndex = i;
1270
-      }
1271
-    }
1272
-  }
1273
-  // Directions locks
1274
-  if (swiper.initialized && slideIndex !== activeIndex) {
1275
-    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
1276
-      return false;
1277
-    }
1278
-    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
1279
-      if ((activeIndex || 0) !== slideIndex) return false;
1280
-    }
1281
-  }
1282
-
1283
-  let direction;
1284
-  if (slideIndex > activeIndex) direction = 'next';
1285
-  else if (slideIndex < activeIndex) direction = 'prev';
1286
-  else direction = 'reset';
1287
-
1288
-
1289
-  // Update Index
1290
-  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
1291
-    swiper.updateActiveIndex(slideIndex);
1292
-    // Update Height
1293
-    if (params.autoHeight) {
1294
-      swiper.updateAutoHeight();
1295
-    }
1296
-    swiper.updateSlidesClasses();
1297
-    if (params.effect !== 'slide') {
1298
-      swiper.setTranslate(translate);
1299
-    }
1300
-    if (direction !== 'reset') {
1301
-      swiper.transitionStart(runCallbacks, direction);
1302
-      swiper.transitionEnd(runCallbacks, direction);
1303
-    }
1304
-    return false;
1305
-  }
1306
-  if (params.cssMode) {
1307
-    const isH = swiper.isHorizontal();
1308
-    let t = -translate;
1309
-    if (rtl) {
1310
-      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
1311
-    }
1312
-    if (speed === 0) {
1313
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1314
-    } else {
1315
-      // eslint-disable-next-line
1316
-      if (wrapperEl.scrollTo) {
1317
-        wrapperEl.scrollTo({
1318
-          [isH ? 'left' : 'top']: t,
1319
-          behavior: 'smooth',
1320
-        });
1321
-      } else {
1322
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
1323
-      }
1324
-    }
1325
-    return true;
1326
-  }
1327
-
1328
-  if (speed === 0) {
1329
-    swiper.setTransition(0);
1330
-    swiper.setTranslate(translate);
1331
-    swiper.updateActiveIndex(slideIndex);
1332
-    swiper.updateSlidesClasses();
1333
-    swiper.emit('beforeTransitionStart', speed, internal);
1334
-    swiper.transitionStart(runCallbacks, direction);
1335
-    swiper.transitionEnd(runCallbacks, direction);
1336
-  } else {
1337
-    swiper.setTransition(speed);
1338
-    swiper.setTranslate(translate);
1339
-    swiper.updateActiveIndex(slideIndex);
1340
-    swiper.updateSlidesClasses();
1341
-    swiper.emit('beforeTransitionStart', speed, internal);
1342
-    swiper.transitionStart(runCallbacks, direction);
1343
-    if (!swiper.animating) {
1344
-      swiper.animating = true;
1345
-      if (!swiper.onSlideToWrapperTransitionEnd) {
1346
-        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
1347
-          if (!swiper || swiper.destroyed) return;
1348
-          if (e.target !== this) return;
1349
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1350
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
1351
-          swiper.onSlideToWrapperTransitionEnd = null;
1352
-          delete swiper.onSlideToWrapperTransitionEnd;
1353
-          swiper.transitionEnd(runCallbacks, direction);
1354
-        };
1355
-      }
1356
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
1357
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
1358
-    }
1359
-  }
1360
-
1361
-  return true;
1362
-}
1363
-
1364
-function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
1365
-  const swiper = this;
1366
-  let newIndex = index;
1367
-  if (swiper.params.loop) {
1368
-    newIndex += swiper.loopedSlides;
1369
-  }
1370
-
1371
-  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
1372
-}
1373
-
1374
-/* eslint no-unused-vars: "off" */
1375
-function slideNext (speed = this.params.speed, runCallbacks = true, internal) {
1376
-  const swiper = this;
1377
-  const { params, animating } = swiper;
1378
-  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
1379
-  if (params.loop) {
1380
-    if (animating) return false;
1381
-    swiper.loopFix();
1382
-    // eslint-disable-next-line
1383
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
1384
-  }
1385
-  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
1386
-}
1387
-
1388
-/* eslint no-unused-vars: "off" */
1389
-function slidePrev (speed = this.params.speed, runCallbacks = true, internal) {
1390
-  const swiper = this;
1391
-  const {
1392
-    params, animating, snapGrid, slidesGrid, rtlTranslate,
1393
-  } = swiper;
1394
-
1395
-  if (params.loop) {
1396
-    if (animating) return false;
1397
-    swiper.loopFix();
1398
-    // eslint-disable-next-line
1399
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
1400
-  }
1401
-  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
1402
-  function normalize(val) {
1403
-    if (val < 0) return -Math.floor(Math.abs(val));
1404
-    return Math.floor(val);
1405
-  }
1406
-  const normalizedTranslate = normalize(translate);
1407
-  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
1408
-  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
1409
-
1410
-  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
1411
-  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
1412
-  if (typeof prevSnap === 'undefined' && params.cssMode) {
1413
-    snapGrid.forEach((snap) => {
1414
-      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
1415
-    });
1416
-  }
1417
-  let prevIndex;
1418
-  if (typeof prevSnap !== 'undefined') {
1419
-    prevIndex = slidesGrid.indexOf(prevSnap);
1420
-    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
1421
-  }
1422
-  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
1423
-}
1424
-
1425
-/* eslint no-unused-vars: "off" */
1426
-function slideReset (speed = this.params.speed, runCallbacks = true, internal) {
1427
-  const swiper = this;
1428
-  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
1429
-}
1430
-
1431
-/* eslint no-unused-vars: "off" */
1432
-function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
1433
-  const swiper = this;
1434
-  let index = swiper.activeIndex;
1435
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
1436
-  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
1437
-
1438
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1439
-
1440
-  if (translate >= swiper.snapGrid[snapIndex]) {
1441
-    // The current translate is on or after the current snap index, so the choice
1442
-    // is between the current index and the one after it.
1443
-    const currentSnap = swiper.snapGrid[snapIndex];
1444
-    const nextSnap = swiper.snapGrid[snapIndex + 1];
1445
-    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
1446
-      index += swiper.params.slidesPerGroup;
1447
-    }
1448
-  } else {
1449
-    // The current translate is before the current snap index, so the choice
1450
-    // is between the current index and the one before it.
1451
-    const prevSnap = swiper.snapGrid[snapIndex - 1];
1452
-    const currentSnap = swiper.snapGrid[snapIndex];
1453
-    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {
1454
-      index -= swiper.params.slidesPerGroup;
1455
-    }
1456
-  }
1457
-  index = Math.max(index, 0);
1458
-  index = Math.min(index, swiper.slidesGrid.length - 1);
1459
-
1460
-  return swiper.slideTo(index, speed, runCallbacks, internal);
1461
-}
1462
-
1463
-function slideToClickedSlide () {
1464
-  const swiper = this;
1465
-  const { params, $wrapperEl } = swiper;
1466
-
1467
-  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
1468
-  let slideToIndex = swiper.clickedIndex;
1469
-  let realIndex;
1470
-  if (params.loop) {
1471
-    if (swiper.animating) return;
1472
-    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
1473
-    if (params.centeredSlides) {
1474
-      if (
1475
-        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
1476
-        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
1477
-      ) {
1478
-        swiper.loopFix();
1479
-        slideToIndex = $wrapperEl
1480
-          .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
1481
-          .eq(0)
1482
-          .index();
1483
-
1484
-        Utils.nextTick(() => {
1485
-          swiper.slideTo(slideToIndex);
1486
-        });
1487
-      } else {
1488
-        swiper.slideTo(slideToIndex);
1489
-      }
1490
-    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
1491
-      swiper.loopFix();
1492
-      slideToIndex = $wrapperEl
1493
-        .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
1494
-        .eq(0)
1495
-        .index();
1496
-
1497
-      Utils.nextTick(() => {
1498
-        swiper.slideTo(slideToIndex);
1499
-      });
1500
-    } else {
1501
-      swiper.slideTo(slideToIndex);
1502
-    }
1503
-  } else {
1504
-    swiper.slideTo(slideToIndex);
1505
-  }
1506
-}
1507
-
1508
-var slide = {
1509
-  slideTo,
1510
-  slideToLoop,
1511
-  slideNext,
1512
-  slidePrev,
1513
-  slideReset,
1514
-  slideToClosest,
1515
-  slideToClickedSlide,
1516
-};
1517
-
1518
-function loopCreate () {
1519
-  const swiper = this;
1520
-  const { params, $wrapperEl } = swiper;
1521
-  // Remove duplicated slides
1522
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
1523
-
1524
-  let slides = $wrapperEl.children(`.${params.slideClass}`);
1525
-
1526
-  if (params.loopFillGroupWithBlank) {
1527
-    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
1528
-    if (blankSlidesNum !== params.slidesPerGroup) {
1529
-      for (let i = 0; i < blankSlidesNum; i += 1) {
1530
-        const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
1531
-        $wrapperEl.append(blankNode);
1532
-      }
1533
-      slides = $wrapperEl.children(`.${params.slideClass}`);
1534
-    }
1535
-  }
1536
-
1537
-  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
1538
-
1539
-  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
1540
-  swiper.loopedSlides += params.loopAdditionalSlides;
1541
-  if (swiper.loopedSlides > slides.length) {
1542
-    swiper.loopedSlides = slides.length;
1543
-  }
1544
-
1545
-  const prependSlides = [];
1546
-  const appendSlides = [];
1547
-  slides.each((index, el) => {
1548
-    const slide = $(el);
1549
-    if (index < swiper.loopedSlides) appendSlides.push(el);
1550
-    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);
1551
-    slide.attr('data-swiper-slide-index', index);
1552
-  });
1553
-  for (let i = 0; i < appendSlides.length; i += 1) {
1554
-    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
1555
-  }
1556
-  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
1557
-    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
1558
-  }
1559
-}
1560
-
1561
-function loopFix () {
1562
-  const swiper = this;
1563
-
1564
-  swiper.emit('beforeLoopFix');
1565
-
1566
-  const {
1567
-    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,
1568
-  } = swiper;
1569
-  let newIndex;
1570
-  swiper.allowSlidePrev = true;
1571
-  swiper.allowSlideNext = true;
1572
-
1573
-  const snapTranslate = -snapGrid[activeIndex];
1574
-  const diff = snapTranslate - swiper.getTranslate();
1575
-
1576
-  // Fix For Negative Oversliding
1577
-  if (activeIndex < loopedSlides) {
1578
-    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
1579
-    newIndex += loopedSlides;
1580
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
1581
-    if (slideChanged && diff !== 0) {
1582
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
1583
-    }
1584
-  } else if (activeIndex >= slides.length - loopedSlides) {
1585
-    // Fix For Positive Oversliding
1586
-    newIndex = -slides.length + activeIndex + loopedSlides;
1587
-    newIndex += loopedSlides;
1588
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
1589
-    if (slideChanged && diff !== 0) {
1590
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
1591
-    }
1592
-  }
1593
-  swiper.allowSlidePrev = allowSlidePrev;
1594
-  swiper.allowSlideNext = allowSlideNext;
1595
-
1596
-  swiper.emit('loopFix');
1597
-}
1598
-
1599
-function loopDestroy () {
1600
-  const swiper = this;
1601
-  const { $wrapperEl, params, slides } = swiper;
1602
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
1603
-  slides.removeAttr('data-swiper-slide-index');
1604
-}
1605
-
1606
-var loop = {
1607
-  loopCreate,
1608
-  loopFix,
1609
-  loopDestroy,
1610
-};
1611
-
1612
-function setGrabCursor (moving) {
1613
-  const swiper = this;
1614
-  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
1615
-  const el = swiper.el;
1616
-  el.style.cursor = 'move';
1617
-  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
1618
-  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
1619
-  el.style.cursor = moving ? 'grabbing' : 'grab';
1620
-}
1621
-
1622
-function unsetGrabCursor () {
1623
-  const swiper = this;
1624
-  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
1625
-  swiper.el.style.cursor = '';
1626
-}
1627
-
1628
-var grabCursor = {
1629
-  setGrabCursor,
1630
-  unsetGrabCursor,
1631
-};
1632
-
1633
-function appendSlide (slides) {
1634
-  const swiper = this;
1635
-  const { $wrapperEl, params } = swiper;
1636
-  if (params.loop) {
1637
-    swiper.loopDestroy();
1638
-  }
1639
-  if (typeof slides === 'object' && 'length' in slides) {
1640
-    for (let i = 0; i < slides.length; i += 1) {
1641
-      if (slides[i]) $wrapperEl.append(slides[i]);
1642
-    }
1643
-  } else {
1644
-    $wrapperEl.append(slides);
1645
-  }
1646
-  if (params.loop) {
1647
-    swiper.loopCreate();
1648
-  }
1649
-  if (!(params.observer && Support.observer)) {
1650
-    swiper.update();
1651
-  }
1652
-}
1653
-
1654
-function prependSlide (slides) {
1655
-  const swiper = this;
1656
-  const { params, $wrapperEl, activeIndex } = swiper;
1657
-
1658
-  if (params.loop) {
1659
-    swiper.loopDestroy();
1660
-  }
1661
-  let newActiveIndex = activeIndex + 1;
1662
-  if (typeof slides === 'object' && 'length' in slides) {
1663
-    for (let i = 0; i < slides.length; i += 1) {
1664
-      if (slides[i]) $wrapperEl.prepend(slides[i]);
1665
-    }
1666
-    newActiveIndex = activeIndex + slides.length;
1667
-  } else {
1668
-    $wrapperEl.prepend(slides);
1669
-  }
1670
-  if (params.loop) {
1671
-    swiper.loopCreate();
1672
-  }
1673
-  if (!(params.observer && Support.observer)) {
1674
-    swiper.update();
1675
-  }
1676
-  swiper.slideTo(newActiveIndex, 0, false);
1677
-}
1678
-
1679
-function addSlide (index, slides) {
1680
-  const swiper = this;
1681
-  const { $wrapperEl, params, activeIndex } = swiper;
1682
-  let activeIndexBuffer = activeIndex;
1683
-  if (params.loop) {
1684
-    activeIndexBuffer -= swiper.loopedSlides;
1685
-    swiper.loopDestroy();
1686
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
1687
-  }
1688
-  const baseLength = swiper.slides.length;
1689
-  if (index <= 0) {
1690
-    swiper.prependSlide(slides);
1691
-    return;
1692
-  }
1693
-  if (index >= baseLength) {
1694
-    swiper.appendSlide(slides);
1695
-    return;
1696
-  }
1697
-  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
1698
-
1699
-  const slidesBuffer = [];
1700
-  for (let i = baseLength - 1; i >= index; i -= 1) {
1701
-    const currentSlide = swiper.slides.eq(i);
1702
-    currentSlide.remove();
1703
-    slidesBuffer.unshift(currentSlide);
1704
-  }
1705
-
1706
-  if (typeof slides === 'object' && 'length' in slides) {
1707
-    for (let i = 0; i < slides.length; i += 1) {
1708
-      if (slides[i]) $wrapperEl.append(slides[i]);
1709
-    }
1710
-    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
1711
-  } else {
1712
-    $wrapperEl.append(slides);
1713
-  }
1714
-
1715
-  for (let i = 0; i < slidesBuffer.length; i += 1) {
1716
-    $wrapperEl.append(slidesBuffer[i]);
1717
-  }
1718
-
1719
-  if (params.loop) {
1720
-    swiper.loopCreate();
1721
-  }
1722
-  if (!(params.observer && Support.observer)) {
1723
-    swiper.update();
1724
-  }
1725
-  if (params.loop) {
1726
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
1727
-  } else {
1728
-    swiper.slideTo(newActiveIndex, 0, false);
1729
-  }
1730
-}
1731
-
1732
-function removeSlide (slidesIndexes) {
1733
-  const swiper = this;
1734
-  const { params, $wrapperEl, activeIndex } = swiper;
1735
-
1736
-  let activeIndexBuffer = activeIndex;
1737
-  if (params.loop) {
1738
-    activeIndexBuffer -= swiper.loopedSlides;
1739
-    swiper.loopDestroy();
1740
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
1741
-  }
1742
-  let newActiveIndex = activeIndexBuffer;
1743
-  let indexToRemove;
1744
-
1745
-  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
1746
-    for (let i = 0; i < slidesIndexes.length; i += 1) {
1747
-      indexToRemove = slidesIndexes[i];
1748
-      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
1749
-      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
1750
-    }
1751
-    newActiveIndex = Math.max(newActiveIndex, 0);
1752
-  } else {
1753
-    indexToRemove = slidesIndexes;
1754
-    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
1755
-    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
1756
-    newActiveIndex = Math.max(newActiveIndex, 0);
1757
-  }
1758
-
1759
-  if (params.loop) {
1760
-    swiper.loopCreate();
1761
-  }
1762
-
1763
-  if (!(params.observer && Support.observer)) {
1764
-    swiper.update();
1765
-  }
1766
-  if (params.loop) {
1767
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
1768
-  } else {
1769
-    swiper.slideTo(newActiveIndex, 0, false);
1770
-  }
1771
-}
1772
-
1773
-function removeAllSlides () {
1774
-  const swiper = this;
1775
-
1776
-  const slidesIndexes = [];
1777
-  for (let i = 0; i < swiper.slides.length; i += 1) {
1778
-    slidesIndexes.push(i);
1779
-  }
1780
-  swiper.removeSlide(slidesIndexes);
1781
-}
1782
-
1783
-var manipulation = {
1784
-  appendSlide,
1785
-  prependSlide,
1786
-  addSlide,
1787
-  removeSlide,
1788
-  removeAllSlides,
1789
-};
1790
-
1791
-const Device = (function Device() {
1792
-  const platform = window.navigator.platform;
1793
-  const ua = window.navigator.userAgent;
1794
-
1795
-  const device = {
1796
-    ios: false,
1797
-    android: false,
1798
-    androidChrome: false,
1799
-    desktop: false,
1800
-    iphone: false,
1801
-    ipod: false,
1802
-    ipad: false,
1803
-    edge: false,
1804
-    ie: false,
1805
-    firefox: false,
1806
-    macos: false,
1807
-    windows: false,
1808
-    cordova: !!(window.cordova || window.phonegap),
1809
-    phonegap: !!(window.cordova || window.phonegap),
1810
-    electron: false,
1811
-  };
1812
-
1813
-  const screenWidth = window.screen.width;
1814
-  const screenHeight = window.screen.height;
1815
-
1816
-  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1817
-  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1818
-  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1819
-  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1820
-  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
1821
-  const edge = ua.indexOf('Edge/') >= 0;
1822
-  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
1823
-  const windows = platform === 'Win32';
1824
-  const electron = ua.toLowerCase().indexOf('electron') >= 0;
1825
-  let macos = platform === 'MacIntel';
1826
-
1827
-  // iPadOs 13 fix
1828
-  if (!ipad
1829
-    && macos
1830
-    && Support.touch
1831
-    && (
1832
-      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
1833
-      || (screenWidth === 834 && screenHeight === 1194) // Pro 11
1834
-      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
1835
-      || (screenWidth === 768 && screenHeight === 1024) // other
1836
-    )
1837
-  ) {
1838
-    ipad = ua.match(/(Version)\/([\d.]+)/);
1839
-    macos = false;
1840
-  }
1841
-
1842
-  device.ie = ie;
1843
-  device.edge = edge;
1844
-  device.firefox = firefox;
1845
-
1846
-  // Android
1847
-  if (android && !windows) {
1848
-    device.os = 'android';
1849
-    device.osVersion = android[2];
1850
-    device.android = true;
1851
-    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
1852
-  }
1853
-  if (ipad || iphone || ipod) {
1854
-    device.os = 'ios';
1855
-    device.ios = true;
1856
-  }
1857
-  // iOS
1858
-  if (iphone && !ipod) {
1859
-    device.osVersion = iphone[2].replace(/_/g, '.');
1860
-    device.iphone = true;
1861
-  }
1862
-  if (ipad) {
1863
-    device.osVersion = ipad[2].replace(/_/g, '.');
1864
-    device.ipad = true;
1865
-  }
1866
-  if (ipod) {
1867
-    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
1868
-    device.ipod = true;
1869
-  }
1870
-  // iOS 8+ changed UA
1871
-  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
1872
-    if (device.osVersion.split('.')[0] === '10') {
1873
-      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
1874
-    }
1875
-  }
1876
-
1877
-  // Webview
1878
-  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))
1879
-    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);
1880
-  device.webview = device.webView;
1881
-  device.standalone = device.webView;
1882
-
1883
-  // Desktop
1884
-  device.desktop = !(device.ios || device.android) || electron;
1885
-  if (device.desktop) {
1886
-    device.electron = electron;
1887
-    device.macos = macos;
1888
-    device.windows = windows;
1889
-    if (device.macos) {
1890
-      device.os = 'macos';
1891
-    }
1892
-    if (device.windows) {
1893
-      device.os = 'windows';
1894
-    }
1895
-  }
1896
-
1897
-  // Pixel Ratio
1898
-  device.pixelRatio = window.devicePixelRatio || 1;
1899
-
1900
-  // Export object
1901
-  return device;
1902
-}());
1903
-
1904
-function onTouchStart (event) {
1905
-  const swiper = this;
1906
-  const data = swiper.touchEventsData;
1907
-  const { params, touches } = swiper;
1908
-
1909
-  if (swiper.animating && params.preventInteractionOnTransition) {
1910
-    return;
1911
-  }
1912
-  let e = event;
1913
-  if (e.originalEvent) e = e.originalEvent;
1914
-  const $targetEl = $(e.target);
1915
-
1916
-  if (params.touchEventsTarget === 'wrapper') {
1917
-    if (!$targetEl.closest(swiper.wrapperEl).length) return;
1918
-  }
1919
-  data.isTouchEvent = e.type === 'touchstart';
1920
-  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
1921
-  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
1922
-  if (data.isTouched && data.isMoved) return;
1923
-  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
1924
-    swiper.allowClick = true;
1925
-    return;
1926
-  }
1927
-  if (params.swipeHandler) {
1928
-    if (!$targetEl.closest(params.swipeHandler)[0]) return;
1929
-  }
1930
-
1931
-  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
1932
-  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
1933
-  const startX = touches.currentX;
1934
-  const startY = touches.currentY;
1935
-
1936
-  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
1937
-
1938
-  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
1939
-  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
1940
-  if (
1941
-    edgeSwipeDetection
1942
-    && ((startX <= edgeSwipeThreshold)
1943
-    || (startX >= window.screen.width - edgeSwipeThreshold))
1944
-  ) {
1945
-    return;
1946
-  }
1947
-
1948
-  Utils.extend(data, {
1949
-    isTouched: true,
1950
-    isMoved: false,
1951
-    allowTouchCallbacks: true,
1952
-    isScrolling: undefined,
1953
-    startMoving: undefined,
1954
-  });
1955
-
1956
-  touches.startX = startX;
1957
-  touches.startY = startY;
1958
-  data.touchStartTime = Utils.now();
1959
-  swiper.allowClick = true;
1960
-  swiper.updateSize();
1961
-  swiper.swipeDirection = undefined;
1962
-  if (params.threshold > 0) data.allowThresholdMove = false;
1963
-  if (e.type !== 'touchstart') {
1964
-    let preventDefault = true;
1965
-    if ($targetEl.is(data.formElements)) preventDefault = false;
1966
-    if (
1967
-      document$1.activeElement
1968
-      && $(document$1.activeElement).is(data.formElements)
1969
-      && document$1.activeElement !== $targetEl[0]
1970
-    ) {
1971
-      document$1.activeElement.blur();
1972
-    }
1973
-
1974
-    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
1975
-    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
1976
-      e.preventDefault();
1977
-    }
1978
-  }
1979
-  swiper.emit('touchStart', e);
1980
-}
1981
-
1982
-function onTouchMove (event) {
1983
-  const swiper = this;
1984
-  const data = swiper.touchEventsData;
1985
-  const { params, touches, rtlTranslate: rtl } = swiper;
1986
-  let e = event;
1987
-  if (e.originalEvent) e = e.originalEvent;
1988
-  if (!data.isTouched) {
1989
-    if (data.startMoving && data.isScrolling) {
1990
-      swiper.emit('touchMoveOpposite', e);
1991
-    }
1992
-    return;
1993
-  }
1994
-  if (data.isTouchEvent && e.type !== 'touchmove') return;
1995
-  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
1996
-  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
1997
-  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
1998
-  if (e.preventedByNestedSwiper) {
1999
-    touches.startX = pageX;
2000
-    touches.startY = pageY;
2001
-    return;
2002
-  }
2003
-  if (!swiper.allowTouchMove) {
2004
-    // isMoved = true;
2005
-    swiper.allowClick = false;
2006
-    if (data.isTouched) {
2007
-      Utils.extend(touches, {
2008
-        startX: pageX,
2009
-        startY: pageY,
2010
-        currentX: pageX,
2011
-        currentY: pageY,
2012
-      });
2013
-      data.touchStartTime = Utils.now();
2014
-    }
2015
-    return;
2016
-  }
2017
-  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2018
-    if (swiper.isVertical()) {
2019
-      // Vertical
2020
-      if (
2021
-        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
2022
-        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
2023
-      ) {
2024
-        data.isTouched = false;
2025
-        data.isMoved = false;
2026
-        return;
2027
-      }
2028
-    } else if (
2029
-      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
2030
-      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
2031
-    ) {
2032
-      return;
2033
-    }
2034
-  }
2035
-  if (data.isTouchEvent && document$1.activeElement) {
2036
-    if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {
2037
-      data.isMoved = true;
2038
-      swiper.allowClick = false;
2039
-      return;
2040
-    }
2041
-  }
2042
-  if (data.allowTouchCallbacks) {
2043
-    swiper.emit('touchMove', e);
2044
-  }
2045
-  if (e.targetTouches && e.targetTouches.length > 1) return;
2046
-
2047
-  touches.currentX = pageX;
2048
-  touches.currentY = pageY;
2049
-
2050
-  const diffX = touches.currentX - touches.startX;
2051
-  const diffY = touches.currentY - touches.startY;
2052
-  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;
2053
-
2054
-  if (typeof data.isScrolling === 'undefined') {
2055
-    let touchAngle;
2056
-    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
2057
-      data.isScrolling = false;
2058
-    } else {
2059
-      // eslint-disable-next-line
2060
-      if ((diffX * diffX) + (diffY * diffY) >= 25) {
2061
-        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
2062
-        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
2063
-      }
2064
-    }
2065
-  }
2066
-  if (data.isScrolling) {
2067
-    swiper.emit('touchMoveOpposite', e);
2068
-  }
2069
-  if (typeof data.startMoving === 'undefined') {
2070
-    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2071
-      data.startMoving = true;
2072
-    }
2073
-  }
2074
-  if (data.isScrolling) {
2075
-    data.isTouched = false;
2076
-    return;
2077
-  }
2078
-  if (!data.startMoving) {
2079
-    return;
2080
-  }
2081
-  swiper.allowClick = false;
2082
-  if (!params.cssMode && e.cancelable) {
2083
-    e.preventDefault();
2084
-  }
2085
-  if (params.touchMoveStopPropagation && !params.nested) {
2086
-    e.stopPropagation();
2087
-  }
2088
-
2089
-  if (!data.isMoved) {
2090
-    if (params.loop) {
2091
-      swiper.loopFix();
2092
-    }
2093
-    data.startTranslate = swiper.getTranslate();
2094
-    swiper.setTransition(0);
2095
-    if (swiper.animating) {
2096
-      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
2097
-    }
2098
-    data.allowMomentumBounce = false;
2099
-    // Grab Cursor
2100
-    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2101
-      swiper.setGrabCursor(true);
2102
-    }
2103
-    swiper.emit('sliderFirstMove', e);
2104
-  }
2105
-  swiper.emit('sliderMove', e);
2106
-  data.isMoved = true;
2107
-
2108
-  let diff = swiper.isHorizontal() ? diffX : diffY;
2109
-  touches.diff = diff;
2110
-
2111
-  diff *= params.touchRatio;
2112
-  if (rtl) diff = -diff;
2113
-
2114
-  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
2115
-  data.currentTranslate = diff + data.startTranslate;
2116
-
2117
-  let disableParentSwiper = true;
2118
-  let resistanceRatio = params.resistanceRatio;
2119
-  if (params.touchReleaseOnEdges) {
2120
-    resistanceRatio = 0;
2121
-  }
2122
-  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
2123
-    disableParentSwiper = false;
2124
-    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);
2125
-  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
2126
-    disableParentSwiper = false;
2127
-    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);
2128
-  }
2129
-
2130
-  if (disableParentSwiper) {
2131
-    e.preventedByNestedSwiper = true;
2132
-  }
2133
-
2134
-  // Directions locks
2135
-  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
2136
-    data.currentTranslate = data.startTranslate;
2137
-  }
2138
-  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
2139
-    data.currentTranslate = data.startTranslate;
2140
-  }
2141
-
2142
-
2143
-  // Threshold
2144
-  if (params.threshold > 0) {
2145
-    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2146
-      if (!data.allowThresholdMove) {
2147
-        data.allowThresholdMove = true;
2148
-        touches.startX = touches.currentX;
2149
-        touches.startY = touches.currentY;
2150
-        data.currentTranslate = data.startTranslate;
2151
-        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2152
-        return;
2153
-      }
2154
-    } else {
2155
-      data.currentTranslate = data.startTranslate;
2156
-      return;
2157
-    }
2158
-  }
2159
-
2160
-  if (!params.followFinger || params.cssMode) return;
2161
-
2162
-  // Update active index in free mode
2163
-  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
2164
-    swiper.updateActiveIndex();
2165
-    swiper.updateSlidesClasses();
2166
-  }
2167
-  if (params.freeMode) {
2168
-    // Velocity
2169
-    if (data.velocities.length === 0) {
2170
-      data.velocities.push({
2171
-        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
2172
-        time: data.touchStartTime,
2173
-      });
2174
-    }
2175
-    data.velocities.push({
2176
-      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
2177
-      time: Utils.now(),
2178
-    });
2179
-  }
2180
-  // Update progress
2181
-  swiper.updateProgress(data.currentTranslate);
2182
-  // Update translate
2183
-  swiper.setTranslate(data.currentTranslate);
2184
-}
2185
-
2186
-function onTouchEnd (event) {
2187
-  const swiper = this;
2188
-  const data = swiper.touchEventsData;
2189
-
2190
-  const {
2191
-    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,
2192
-  } = swiper;
2193
-  let e = event;
2194
-  if (e.originalEvent) e = e.originalEvent;
2195
-  if (data.allowTouchCallbacks) {
2196
-    swiper.emit('touchEnd', e);
2197
-  }
2198
-  data.allowTouchCallbacks = false;
2199
-  if (!data.isTouched) {
2200
-    if (data.isMoved && params.grabCursor) {
2201
-      swiper.setGrabCursor(false);
2202
-    }
2203
-    data.isMoved = false;
2204
-    data.startMoving = false;
2205
-    return;
2206
-  }
2207
-  // Return Grab Cursor
2208
-  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2209
-    swiper.setGrabCursor(false);
2210
-  }
2211
-
2212
-  // Time diff
2213
-  const touchEndTime = Utils.now();
2214
-  const timeDiff = touchEndTime - data.touchStartTime;
2215
-
2216
-  // Tap, doubleTap, Click
2217
-  if (swiper.allowClick) {
2218
-    swiper.updateClickedSlide(e);
2219
-    swiper.emit('tap click', e);
2220
-    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
2221
-      swiper.emit('doubleTap doubleClick', e);
2222
-    }
2223
-  }
2224
-
2225
-  data.lastClickTime = Utils.now();
2226
-  Utils.nextTick(() => {
2227
-    if (!swiper.destroyed) swiper.allowClick = true;
2228
-  });
2229
-
2230
-  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
2231
-    data.isTouched = false;
2232
-    data.isMoved = false;
2233
-    data.startMoving = false;
2234
-    return;
2235
-  }
2236
-  data.isTouched = false;
2237
-  data.isMoved = false;
2238
-  data.startMoving = false;
2239
-
2240
-  let currentPos;
2241
-  if (params.followFinger) {
2242
-    currentPos = rtl ? swiper.translate : -swiper.translate;
2243
-  } else {
2244
-    currentPos = -data.currentTranslate;
2245
-  }
2246
-
2247
-  if (params.cssMode) {
2248
-    return;
2249
-  }
2250
-
2251
-  if (params.freeMode) {
2252
-    if (currentPos < -swiper.minTranslate()) {
2253
-      swiper.slideTo(swiper.activeIndex);
2254
-      return;
2255
-    }
2256
-    if (currentPos > -swiper.maxTranslate()) {
2257
-      if (swiper.slides.length < snapGrid.length) {
2258
-        swiper.slideTo(snapGrid.length - 1);
2259
-      } else {
2260
-        swiper.slideTo(swiper.slides.length - 1);
2261
-      }
2262
-      return;
2263
-    }
2264
-
2265
-    if (params.freeModeMomentum) {
2266
-      if (data.velocities.length > 1) {
2267
-        const lastMoveEvent = data.velocities.pop();
2268
-        const velocityEvent = data.velocities.pop();
2269
-
2270
-        const distance = lastMoveEvent.position - velocityEvent.position;
2271
-        const time = lastMoveEvent.time - velocityEvent.time;
2272
-        swiper.velocity = distance / time;
2273
-        swiper.velocity /= 2;
2274
-        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
2275
-          swiper.velocity = 0;
2276
-        }
2277
-        // this implies that the user stopped moving a finger then released.
2278
-        // There would be no events with distance zero, so the last event is stale.
2279
-        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
2280
-          swiper.velocity = 0;
2281
-        }
2282
-      } else {
2283
-        swiper.velocity = 0;
2284
-      }
2285
-      swiper.velocity *= params.freeModeMomentumVelocityRatio;
2286
-
2287
-      data.velocities.length = 0;
2288
-      let momentumDuration = 1000 * params.freeModeMomentumRatio;
2289
-      const momentumDistance = swiper.velocity * momentumDuration;
2290
-
2291
-      let newPosition = swiper.translate + momentumDistance;
2292
-      if (rtl) newPosition = -newPosition;
2293
-
2294
-      let doBounce = false;
2295
-      let afterBouncePosition;
2296
-      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
2297
-      let needsLoopFix;
2298
-      if (newPosition < swiper.maxTranslate()) {
2299
-        if (params.freeModeMomentumBounce) {
2300
-          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
2301
-            newPosition = swiper.maxTranslate() - bounceAmount;
2302
-          }
2303
-          afterBouncePosition = swiper.maxTranslate();
2304
-          doBounce = true;
2305
-          data.allowMomentumBounce = true;
2306
-        } else {
2307
-          newPosition = swiper.maxTranslate();
2308
-        }
2309
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
2310
-      } else if (newPosition > swiper.minTranslate()) {
2311
-        if (params.freeModeMomentumBounce) {
2312
-          if (newPosition - swiper.minTranslate() > bounceAmount) {
2313
-            newPosition = swiper.minTranslate() + bounceAmount;
2314
-          }
2315
-          afterBouncePosition = swiper.minTranslate();
2316
-          doBounce = true;
2317
-          data.allowMomentumBounce = true;
2318
-        } else {
2319
-          newPosition = swiper.minTranslate();
2320
-        }
2321
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
2322
-      } else if (params.freeModeSticky) {
2323
-        let nextSlide;
2324
-        for (let j = 0; j < snapGrid.length; j += 1) {
2325
-          if (snapGrid[j] > -newPosition) {
2326
-            nextSlide = j;
2327
-            break;
2328
-          }
2329
-        }
2330
-
2331
-        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
2332
-          newPosition = snapGrid[nextSlide];
2333
-        } else {
2334
-          newPosition = snapGrid[nextSlide - 1];
2335
-        }
2336
-        newPosition = -newPosition;
2337
-      }
2338
-      if (needsLoopFix) {
2339
-        swiper.once('transitionEnd', () => {
2340
-          swiper.loopFix();
2341
-        });
2342
-      }
2343
-      // Fix duration
2344
-      if (swiper.velocity !== 0) {
2345
-        if (rtl) {
2346
-          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
2347
-        } else {
2348
-          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
2349
-        }
2350
-        if (params.freeModeSticky) {
2351
-          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
2352
-          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
2353
-          // It's easy to see this when simulating touch with mouse events. To fix this,
2354
-          // limit single-slide swipes to the default slide duration. This also has the
2355
-          // nice side effect of matching slide speed if the user stopped moving before
2356
-          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
2357
-          // For faster swipes, also apply limits (albeit higher ones).
2358
-          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
2359
-          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
2360
-          if (moveDistance < currentSlideSize) {
2361
-            momentumDuration = params.speed;
2362
-          } else if (moveDistance < 2 * currentSlideSize) {
2363
-            momentumDuration = params.speed * 1.5;
2364
-          } else {
2365
-            momentumDuration = params.speed * 2.5;
2366
-          }
2367
-        }
2368
-      } else if (params.freeModeSticky) {
2369
-        swiper.slideToClosest();
2370
-        return;
2371
-      }
2372
-
2373
-      if (params.freeModeMomentumBounce && doBounce) {
2374
-        swiper.updateProgress(afterBouncePosition);
2375
-        swiper.setTransition(momentumDuration);
2376
-        swiper.setTranslate(newPosition);
2377
-        swiper.transitionStart(true, swiper.swipeDirection);
2378
-        swiper.animating = true;
2379
-        $wrapperEl.transitionEnd(() => {
2380
-          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
2381
-          swiper.emit('momentumBounce');
2382
-          swiper.setTransition(params.speed);
2383
-          setTimeout(() => {
2384
-            swiper.setTranslate(afterBouncePosition);
2385
-            $wrapperEl.transitionEnd(() => {
2386
-              if (!swiper || swiper.destroyed) return;
2387
-              swiper.transitionEnd();
2388
-            });
2389
-          }, 0);
2390
-        });
2391
-      } else if (swiper.velocity) {
2392
-        swiper.updateProgress(newPosition);
2393
-        swiper.setTransition(momentumDuration);
2394
-        swiper.setTranslate(newPosition);
2395
-        swiper.transitionStart(true, swiper.swipeDirection);
2396
-        if (!swiper.animating) {
2397
-          swiper.animating = true;
2398
-          $wrapperEl.transitionEnd(() => {
2399
-            if (!swiper || swiper.destroyed) return;
2400
-            swiper.transitionEnd();
2401
-          });
2402
-        }
2403
-      } else {
2404
-        swiper.updateProgress(newPosition);
2405
-      }
2406
-
2407
-      swiper.updateActiveIndex();
2408
-      swiper.updateSlidesClasses();
2409
-    } else if (params.freeModeSticky) {
2410
-      swiper.slideToClosest();
2411
-      return;
2412
-    }
2413
-
2414
-    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
2415
-      swiper.updateProgress();
2416
-      swiper.updateActiveIndex();
2417
-      swiper.updateSlidesClasses();
2418
-    }
2419
-    return;
2420
-  }
2421
-
2422
-  // Find current slide
2423
-  let stopIndex = 0;
2424
-  let groupSize = swiper.slidesSizesGrid[0];
2425
-  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
2426
-    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
2427
-    if (typeof slidesGrid[i + increment] !== 'undefined') {
2428
-      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
2429
-        stopIndex = i;
2430
-        groupSize = slidesGrid[i + increment] - slidesGrid[i];
2431
-      }
2432
-    } else if (currentPos >= slidesGrid[i]) {
2433
-      stopIndex = i;
2434
-      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
2435
-    }
2436
-  }
2437
-
2438
-  // Find current slide size
2439
-  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
2440
-  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
2441
-
2442
-  if (timeDiff > params.longSwipesMs) {
2443
-    // Long touches
2444
-    if (!params.longSwipes) {
2445
-      swiper.slideTo(swiper.activeIndex);
2446
-      return;
2447
-    }
2448
-    if (swiper.swipeDirection === 'next') {
2449
-      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);
2450
-      else swiper.slideTo(stopIndex);
2451
-    }
2452
-    if (swiper.swipeDirection === 'prev') {
2453
-      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);
2454
-      else swiper.slideTo(stopIndex);
2455
-    }
2456
-  } else {
2457
-    // Short swipes
2458
-    if (!params.shortSwipes) {
2459
-      swiper.slideTo(swiper.activeIndex);
2460
-      return;
2461
-    }
2462
-    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
2463
-    if (!isNavButtonTarget) {
2464
-      if (swiper.swipeDirection === 'next') {
2465
-        swiper.slideTo(stopIndex + increment);
2466
-      }
2467
-      if (swiper.swipeDirection === 'prev') {
2468
-        swiper.slideTo(stopIndex);
2469
-      }
2470
-    } else if (e.target === swiper.navigation.nextEl) {
2471
-      swiper.slideTo(stopIndex + increment);
2472
-    } else {
2473
-      swiper.slideTo(stopIndex);
2474
-    }
2475
-  }
2476
-}
2477
-
2478
-function onResize () {
2479
-  const swiper = this;
2480
-
2481
-  const { params, el } = swiper;
2482
-
2483
-  if (el && el.offsetWidth === 0) return;
2484
-
2485
-  // Breakpoints
2486
-  if (params.breakpoints) {
2487
-    swiper.setBreakpoint();
2488
-  }
2489
-
2490
-  // Save locks
2491
-  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;
2492
-
2493
-  // Disable locks on resize
2494
-  swiper.allowSlideNext = true;
2495
-  swiper.allowSlidePrev = true;
2496
-
2497
-  swiper.updateSize();
2498
-  swiper.updateSlides();
2499
-
2500
-  swiper.updateSlidesClasses();
2501
-  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
2502
-    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
2503
-  } else {
2504
-    swiper.slideTo(swiper.activeIndex, 0, false, true);
2505
-  }
2506
-
2507
-  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
2508
-    swiper.autoplay.run();
2509
-  }
2510
-  // Return locks after resize
2511
-  swiper.allowSlidePrev = allowSlidePrev;
2512
-  swiper.allowSlideNext = allowSlideNext;
2513
-
2514
-  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
2515
-    swiper.checkOverflow();
2516
-  }
2517
-}
2518
-
2519
-function onClick (e) {
2520
-  const swiper = this;
2521
-  if (!swiper.allowClick) {
2522
-    if (swiper.params.preventClicks) e.preventDefault();
2523
-    if (swiper.params.preventClicksPropagation && swiper.animating) {
2524
-      e.stopPropagation();
2525
-      e.stopImmediatePropagation();
2526
-    }
2527
-  }
2528
-}
2529
-
2530
-function onScroll () {
2531
-  const swiper = this;
2532
-  const { wrapperEl, rtlTranslate } = swiper;
2533
-  swiper.previousTranslate = swiper.translate;
2534
-  if (swiper.isHorizontal()) {
2535
-    if (rtlTranslate) {
2536
-      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
2537
-    } else {
2538
-      swiper.translate = -wrapperEl.scrollLeft;
2539
-    }
2540
-  } else {
2541
-    swiper.translate = -wrapperEl.scrollTop;
2542
-  }
2543
-  // eslint-disable-next-line
2544
-  if (swiper.translate === -0) swiper.translate = 0;
2545
-
2546
-  swiper.updateActiveIndex();
2547
-  swiper.updateSlidesClasses();
2548
-
2549
-  let newProgress;
2550
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2551
-  if (translatesDiff === 0) {
2552
-    newProgress = 0;
2553
-  } else {
2554
-    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
2555
-  }
2556
-  if (newProgress !== swiper.progress) {
2557
-    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
2558
-  }
2559
-
2560
-  swiper.emit('setTranslate', swiper.translate, false);
2561
-}
2562
-
2563
-let dummyEventAttached = false;
2564
-function dummyEventListener() {}
2565
-
2566
-function attachEvents() {
2567
-  const swiper = this;
2568
-  const {
2569
-    params, touchEvents, el, wrapperEl,
2570
-  } = swiper;
2571
-
2572
-  swiper.onTouchStart = onTouchStart.bind(swiper);
2573
-  swiper.onTouchMove = onTouchMove.bind(swiper);
2574
-  swiper.onTouchEnd = onTouchEnd.bind(swiper);
2575
-  if (params.cssMode) {
2576
-    swiper.onScroll = onScroll.bind(swiper);
2577
-  }
2578
-
2579
-  swiper.onClick = onClick.bind(swiper);
2580
-
2581
-  const capture = !!params.nested;
2582
-
2583
-  // Touch Events
2584
-  if (!Support.touch && Support.pointerEvents) {
2585
-    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
2586
-    document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
2587
-    document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
2588
-  } else {
2589
-    if (Support.touch) {
2590
-      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
2591
-      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
2592
-      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
2593
-      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
2594
-      if (touchEvents.cancel) {
2595
-        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
2596
-      }
2597
-      if (!dummyEventAttached) {
2598
-        document$1.addEventListener('touchstart', dummyEventListener);
2599
-        dummyEventAttached = true;
2600
-      }
2601
-    }
2602
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
2603
-      el.addEventListener('mousedown', swiper.onTouchStart, false);
2604
-      document$1.addEventListener('mousemove', swiper.onTouchMove, capture);
2605
-      document$1.addEventListener('mouseup', swiper.onTouchEnd, false);
2606
-    }
2607
-  }
2608
-  // Prevent Links Clicks
2609
-  if (params.preventClicks || params.preventClicksPropagation) {
2610
-    el.addEventListener('click', swiper.onClick, true);
2611
-  }
2612
-  if (params.cssMode) {
2613
-    wrapperEl.addEventListener('scroll', swiper.onScroll);
2614
-  }
2615
-
2616
-  // Resize handler
2617
-  if (params.updateOnWindowResize) {
2618
-    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
2619
-  } else {
2620
-    swiper.on('observerUpdate', onResize, true);
2621
-  }
2622
-}
2623
-
2624
-function detachEvents() {
2625
-  const swiper = this;
2626
-
2627
-  const {
2628
-    params, touchEvents, el, wrapperEl,
2629
-  } = swiper;
2630
-
2631
-  const capture = !!params.nested;
2632
-
2633
-  // Touch Events
2634
-  if (!Support.touch && Support.pointerEvents) {
2635
-    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
2636
-    document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
2637
-    document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
2638
-  } else {
2639
-    if (Support.touch) {
2640
-      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
2641
-      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
2642
-      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
2643
-      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
2644
-      if (touchEvents.cancel) {
2645
-        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
2646
-      }
2647
-    }
2648
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
2649
-      el.removeEventListener('mousedown', swiper.onTouchStart, false);
2650
-      document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);
2651
-      document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);
2652
-    }
2653
-  }
2654
-  // Prevent Links Clicks
2655
-  if (params.preventClicks || params.preventClicksPropagation) {
2656
-    el.removeEventListener('click', swiper.onClick, true);
2657
-  }
2658
-
2659
-  if (params.cssMode) {
2660
-    wrapperEl.removeEventListener('scroll', swiper.onScroll);
2661
-  }
2662
-
2663
-  // Resize handler
2664
-  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
2665
-}
2666
-
2667
-var events = {
2668
-  attachEvents,
2669
-  detachEvents,
2670
-};
2671
-
2672
-function setBreakpoint () {
2673
-  const swiper = this;
2674
-  const {
2675
-    activeIndex, initialized, loopedSlides = 0, params, $el,
2676
-  } = swiper;
2677
-  const breakpoints = params.breakpoints;
2678
-  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;
2679
-
2680
-  // Get breakpoint for window width and update parameters
2681
-  const breakpoint = swiper.getBreakpoint(breakpoints);
2682
-
2683
-  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
2684
-    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
2685
-    if (breakpointOnlyParams) {
2686
-      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {
2687
-        const paramValue = breakpointOnlyParams[param];
2688
-        if (typeof paramValue === 'undefined') return;
2689
-        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
2690
-          breakpointOnlyParams[param] = 'auto';
2691
-        } else if (param === 'slidesPerView') {
2692
-          breakpointOnlyParams[param] = parseFloat(paramValue);
2693
-        } else {
2694
-          breakpointOnlyParams[param] = parseInt(paramValue, 10);
2695
-        }
2696
-      });
2697
-    }
2698
-
2699
-    const breakpointParams = breakpointOnlyParams || swiper.originalParams;
2700
-    const wasMultiRow = params.slidesPerColumn > 1;
2701
-    const isMultiRow = breakpointParams.slidesPerColumn > 1;
2702
-    if (wasMultiRow && !isMultiRow) {
2703
-      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);
2704
-    } else if (!wasMultiRow && isMultiRow) {
2705
-      $el.addClass(`${params.containerModifierClass}multirow`);
2706
-      if (breakpointParams.slidesPerColumnFill === 'column') {
2707
-        $el.addClass(`${params.containerModifierClass}multirow-column`);
2708
-      }
2709
-    }
2710
-
2711
-    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
2712
-    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
2713
-
2714
-    if (directionChanged && initialized) {
2715
-      swiper.changeDirection();
2716
-    }
2717
-
2718
-    Utils.extend(swiper.params, breakpointParams);
2719
-
2720
-    Utils.extend(swiper, {
2721
-      allowTouchMove: swiper.params.allowTouchMove,
2722
-      allowSlideNext: swiper.params.allowSlideNext,
2723
-      allowSlidePrev: swiper.params.allowSlidePrev,
2724
-    });
2725
-
2726
-    swiper.currentBreakpoint = breakpoint;
2727
-
2728
-    if (needsReLoop && initialized) {
2729
-      swiper.loopDestroy();
2730
-      swiper.loopCreate();
2731
-      swiper.updateSlides();
2732
-      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
2733
-    }
2734
-
2735
-    swiper.emit('breakpoint', breakpointParams);
2736
-  }
2737
-}
2738
-
2739
-function getBreakpoint (breakpoints) {
2740
-  // Get breakpoint for window width
2741
-  if (!breakpoints) return undefined;
2742
-  let breakpoint = false;
2743
-
2744
-  const points = Object.keys(breakpoints).map((point) => {
2745
-    if (typeof point === 'string' && point.indexOf('@') === 0) {
2746
-      const minRatio = parseFloat(point.substr(1));
2747
-      const value = window.innerHeight * minRatio;
2748
-      return { value, point };
2749
-    }
2750
-    return { value: point, point };
2751
-  });
2752
-
2753
-  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
2754
-  for (let i = 0; i < points.length; i += 1) {
2755
-    const { point, value } = points[i];
2756
-    if (value <= window.innerWidth) {
2757
-      breakpoint = point;
2758
-    }
2759
-  }
2760
-  return breakpoint || 'max';
2761
-}
2762
-
2763
-var breakpoints = { setBreakpoint, getBreakpoint };
2764
-
2765
-function addClasses () {
2766
-  const swiper = this;
2767
-  const {
2768
-    classNames, params, rtl, $el,
2769
-  } = swiper;
2770
-  const suffixes = [];
2771
-
2772
-  suffixes.push('initialized');
2773
-  suffixes.push(params.direction);
2774
-
2775
-  if (params.freeMode) {
2776
-    suffixes.push('free-mode');
2777
-  }
2778
-  if (params.autoHeight) {
2779
-    suffixes.push('autoheight');
2780
-  }
2781
-  if (rtl) {
2782
-    suffixes.push('rtl');
2783
-  }
2784
-  if (params.slidesPerColumn > 1) {
2785
-    suffixes.push('multirow');
2786
-    if (params.slidesPerColumnFill === 'column') {
2787
-      suffixes.push('multirow-column');
2788
-    }
2789
-  }
2790
-  if (Device.android) {
2791
-    suffixes.push('android');
2792
-  }
2793
-  if (Device.ios) {
2794
-    suffixes.push('ios');
2795
-  }
2796
-
2797
-  if (params.cssMode) {
2798
-    suffixes.push('css-mode');
2799
-  }
2800
-
2801
-  suffixes.forEach((suffix) => {
2802
-    classNames.push(params.containerModifierClass + suffix);
2803
-  });
2804
-
2805
-  $el.addClass(classNames.join(' '));
2806
-}
2807
-
2808
-function removeClasses () {
2809
-  const swiper = this;
2810
-  const { $el, classNames } = swiper;
2811
-
2812
-  $el.removeClass(classNames.join(' '));
2813
-}
2814
-
2815
-var classes = { addClasses, removeClasses };
2816
-
2817
-function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
2818
-  let image;
2819
-  function onReady() {
2820
-    if (callback) callback();
2821
-  }
2822
-  const isPicture = $(imageEl).parent('picture')[0];
2823
-
2824
-  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
2825
-    if (src) {
2826
-      image = new window.Image();
2827
-      image.onload = onReady;
2828
-      image.onerror = onReady;
2829
-      if (sizes) {
2830
-        image.sizes = sizes;
2831
-      }
2832
-      if (srcset) {
2833
-        image.srcset = srcset;
2834
-      }
2835
-      if (src) {
2836
-        image.src = src;
2837
-      }
2838
-    } else {
2839
-      onReady();
2840
-    }
2841
-  } else {
2842
-    // image already loaded...
2843
-    onReady();
2844
-  }
2845
-}
2846
-
2847
-function preloadImages () {
2848
-  const swiper = this;
2849
-  swiper.imagesToLoad = swiper.$el.find('img');
2850
-  function onReady() {
2851
-    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
2852
-    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
2853
-    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
2854
-      if (swiper.params.updateOnImagesReady) swiper.update();
2855
-      swiper.emit('imagesReady');
2856
-    }
2857
-  }
2858
-  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
2859
-    const imageEl = swiper.imagesToLoad[i];
2860
-    swiper.loadImage(
2861
-      imageEl,
2862
-      imageEl.currentSrc || imageEl.getAttribute('src'),
2863
-      imageEl.srcset || imageEl.getAttribute('srcset'),
2864
-      imageEl.sizes || imageEl.getAttribute('sizes'),
2865
-      true,
2866
-      onReady
2867
-    );
2868
-  }
2869
-}
2870
-
2871
-var images = {
2872
-  loadImage,
2873
-  preloadImages,
2874
-};
2875
-
2876
-function checkOverflow() {
2877
-  const swiper = this;
2878
-  const params = swiper.params;
2879
-  const wasLocked = swiper.isLocked;
2880
-  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
2881
-
2882
-  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
2883
-    swiper.isLocked = lastSlidePosition <= swiper.size;
2884
-  } else {
2885
-    swiper.isLocked = swiper.snapGrid.length === 1;
2886
-  }
2887
-
2888
-  swiper.allowSlideNext = !swiper.isLocked;
2889
-  swiper.allowSlidePrev = !swiper.isLocked;
2890
-
2891
-  // events
2892
-  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
2893
-
2894
-  if (wasLocked && wasLocked !== swiper.isLocked) {
2895
-    swiper.isEnd = false;
2896
-    swiper.navigation.update();
2897
-  }
2898
-}
2899
-
2900
-var checkOverflow$1 = { checkOverflow };
2901
-
2902
-var defaults = {
2903
-  init: true,
2904
-  direction: 'horizontal',
2905
-  touchEventsTarget: 'container',
2906
-  initialSlide: 0,
2907
-  speed: 300,
2908
-  cssMode: false,
2909
-  updateOnWindowResize: true,
2910
-  //
2911
-  preventInteractionOnTransition: false,
2912
-
2913
-  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
2914
-  edgeSwipeDetection: false,
2915
-  edgeSwipeThreshold: 20,
2916
-
2917
-  // Free mode
2918
-  freeMode: false,
2919
-  freeModeMomentum: true,
2920
-  freeModeMomentumRatio: 1,
2921
-  freeModeMomentumBounce: true,
2922
-  freeModeMomentumBounceRatio: 1,
2923
-  freeModeMomentumVelocityRatio: 1,
2924
-  freeModeSticky: false,
2925
-  freeModeMinimumVelocity: 0.02,
2926
-
2927
-  // Autoheight
2928
-  autoHeight: false,
2929
-
2930
-  // Set wrapper width
2931
-  setWrapperSize: false,
2932
-
2933
-  // Virtual Translate
2934
-  virtualTranslate: false,
2935
-
2936
-  // Effects
2937
-  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
2938
-
2939
-  // Breakpoints
2940
-  breakpoints: undefined,
2941
-
2942
-  // Slides grid
2943
-  spaceBetween: 0,
2944
-  slidesPerView: 1,
2945
-  slidesPerColumn: 1,
2946
-  slidesPerColumnFill: 'column',
2947
-  slidesPerGroup: 1,
2948
-  slidesPerGroupSkip: 0,
2949
-  centeredSlides: false,
2950
-  centeredSlidesBounds: false,
2951
-  slidesOffsetBefore: 0, // in px
2952
-  slidesOffsetAfter: 0, // in px
2953
-  normalizeSlideIndex: true,
2954
-  centerInsufficientSlides: false,
2955
-
2956
-  // Disable swiper and hide navigation when container not overflow
2957
-  watchOverflow: false,
2958
-
2959
-  // Round length
2960
-  roundLengths: false,
2961
-
2962
-  // Touches
2963
-  touchRatio: 1,
2964
-  touchAngle: 45,
2965
-  simulateTouch: true,
2966
-  shortSwipes: true,
2967
-  longSwipes: true,
2968
-  longSwipesRatio: 0.5,
2969
-  longSwipesMs: 300,
2970
-  followFinger: true,
2971
-  allowTouchMove: true,
2972
-  threshold: 0,
2973
-  touchMoveStopPropagation: false,
2974
-  touchStartPreventDefault: true,
2975
-  touchStartForcePreventDefault: false,
2976
-  touchReleaseOnEdges: false,
2977
-
2978
-  // Unique Navigation Elements
2979
-  uniqueNavElements: true,
2980
-
2981
-  // Resistance
2982
-  resistance: true,
2983
-  resistanceRatio: 0.85,
2984
-
2985
-  // Progress
2986
-  watchSlidesProgress: false,
2987
-  watchSlidesVisibility: false,
2988
-
2989
-  // Cursor
2990
-  grabCursor: false,
2991
-
2992
-  // Clicks
2993
-  preventClicks: true,
2994
-  preventClicksPropagation: true,
2995
-  slideToClickedSlide: false,
2996
-
2997
-  // Images
2998
-  preloadImages: true,
2999
-  updateOnImagesReady: true,
3000
-
3001
-  // loop
3002
-  loop: false,
3003
-  loopAdditionalSlides: 0,
3004
-  loopedSlides: null,
3005
-  loopFillGroupWithBlank: false,
3006
-
3007
-  // Swiping/no swiping
3008
-  allowSlidePrev: true,
3009
-  allowSlideNext: true,
3010
-  swipeHandler: null, // '.swipe-handler',
3011
-  noSwiping: true,
3012
-  noSwipingClass: 'swiper-no-swiping',
3013
-  noSwipingSelector: null,
3014
-
3015
-  // Passive Listeners
3016
-  passiveListeners: true,
3017
-
3018
-  // NS
3019
-  containerModifierClass: 'swiper-container-', // NEW
3020
-  slideClass: 'swiper-slide',
3021
-  slideBlankClass: 'swiper-slide-invisible-blank',
3022
-  slideActiveClass: 'swiper-slide-active',
3023
-  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
3024
-  slideVisibleClass: 'swiper-slide-visible',
3025
-  slideDuplicateClass: 'swiper-slide-duplicate',
3026
-  slideNextClass: 'swiper-slide-next',
3027
-  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
3028
-  slidePrevClass: 'swiper-slide-prev',
3029
-  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
3030
-  wrapperClass: 'swiper-wrapper',
3031
-
3032
-  // Callbacks
3033
-  runCallbacksOnInit: true,
3034
-};
3035
-
3036
-/* eslint no-param-reassign: "off" */
3037
-
3038
-const prototypes = {
3039
-  update,
3040
-  translate,
3041
-  transition,
3042
-  slide,
3043
-  loop,
3044
-  grabCursor,
3045
-  manipulation,
3046
-  events,
3047
-  breakpoints,
3048
-  checkOverflow: checkOverflow$1,
3049
-  classes,
3050
-  images,
3051
-};
3052
-
3053
-const extendedDefaults = {};
3054
-
3055
-class Swiper extends SwiperClass {
3056
-  constructor(...args) {
3057
-    let el;
3058
-    let params;
3059
-    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
3060
-      params = args[0];
3061
-    } else {
3062
-      [el, params] = args;
3063
-    }
3064
-    if (!params) params = {};
3065
-
3066
-    params = Utils.extend({}, params);
3067
-    if (el && !params.el) params.el = el;
3068
-
3069
-    super(params);
3070
-
3071
-    Object.keys(prototypes).forEach((prototypeGroup) => {
3072
-      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
3073
-        if (!Swiper.prototype[protoMethod]) {
3074
-          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3075
-        }
3076
-      });
3077
-    });
3078
-
3079
-    // Swiper Instance
3080
-    const swiper = this;
3081
-    if (typeof swiper.modules === 'undefined') {
3082
-      swiper.modules = {};
3083
-    }
3084
-    Object.keys(swiper.modules).forEach((moduleName) => {
3085
-      const module = swiper.modules[moduleName];
3086
-      if (module.params) {
3087
-        const moduleParamName = Object.keys(module.params)[0];
3088
-        const moduleParams = module.params[moduleParamName];
3089
-        if (typeof moduleParams !== 'object' || moduleParams === null) return;
3090
-        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
3091
-        if (params[moduleParamName] === true) {
3092
-          params[moduleParamName] = { enabled: true };
3093
-        }
3094
-        if (
3095
-          typeof params[moduleParamName] === 'object'
3096
-          && !('enabled' in params[moduleParamName])
3097
-        ) {
3098
-          params[moduleParamName].enabled = true;
3099
-        }
3100
-        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
3101
-      }
3102
-    });
3103
-
3104
-    // Extend defaults with modules params
3105
-    const swiperParams = Utils.extend({}, defaults);
3106
-    swiper.useModulesParams(swiperParams);
3107
-
3108
-    // Extend defaults with passed params
3109
-    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
3110
-    swiper.originalParams = Utils.extend({}, swiper.params);
3111
-    swiper.passedParams = Utils.extend({}, params);
3112
-
3113
-    // Save Dom lib
3114
-    swiper.$ = $;
3115
-
3116
-    // Find el
3117
-    const $el = $(swiper.params.el);
3118
-    el = $el[0];
3119
-
3120
-    if (!el) {
3121
-      return undefined;
3122
-    }
3123
-
3124
-    if ($el.length > 1) {
3125
-      const swipers = [];
3126
-      $el.each((index, containerEl) => {
3127
-        const newParams = Utils.extend({}, params, { el: containerEl });
3128
-        swipers.push(new Swiper(newParams));
3129
-      });
3130
-      return swipers;
3131
-    }
3132
-
3133
-    el.swiper = swiper;
3134
-    $el.data('swiper', swiper);
3135
-
3136
-    // Find Wrapper
3137
-    let $wrapperEl;
3138
-    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
3139
-      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));
3140
-      // Children needs to return slot items
3141
-      $wrapperEl.children = (options) => $el.children(options);
3142
-    } else {
3143
-      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);
3144
-    }
3145
-    // Extend Swiper
3146
-    Utils.extend(swiper, {
3147
-      $el,
3148
-      el,
3149
-      $wrapperEl,
3150
-      wrapperEl: $wrapperEl[0],
3151
-
3152
-      // Classes
3153
-      classNames: [],
3154
-
3155
-      // Slides
3156
-      slides: $(),
3157
-      slidesGrid: [],
3158
-      snapGrid: [],
3159
-      slidesSizesGrid: [],
3160
-
3161
-      // isDirection
3162
-      isHorizontal() {
3163
-        return swiper.params.direction === 'horizontal';
3164
-      },
3165
-      isVertical() {
3166
-        return swiper.params.direction === 'vertical';
3167
-      },
3168
-      // RTL
3169
-      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3170
-      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3171
-      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
3172
-
3173
-      // Indexes
3174
-      activeIndex: 0,
3175
-      realIndex: 0,
3176
-
3177
-      //
3178
-      isBeginning: true,
3179
-      isEnd: false,
3180
-
3181
-      // Props
3182
-      translate: 0,
3183
-      previousTranslate: 0,
3184
-      progress: 0,
3185
-      velocity: 0,
3186
-      animating: false,
3187
-
3188
-      // Locks
3189
-      allowSlideNext: swiper.params.allowSlideNext,
3190
-      allowSlidePrev: swiper.params.allowSlidePrev,
3191
-
3192
-      // Touch Events
3193
-      touchEvents: (function touchEvents() {
3194
-        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
3195
-        let desktop = ['mousedown', 'mousemove', 'mouseup'];
3196
-        if (Support.pointerEvents) {
3197
-          desktop = ['pointerdown', 'pointermove', 'pointerup'];
3198
-        }
3199
-        swiper.touchEventsTouch = {
3200
-          start: touch[0],
3201
-          move: touch[1],
3202
-          end: touch[2],
3203
-          cancel: touch[3],
3204
-        };
3205
-        swiper.touchEventsDesktop = {
3206
-          start: desktop[0],
3207
-          move: desktop[1],
3208
-          end: desktop[2],
3209
-        };
3210
-        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
3211
-      }()),
3212
-      touchEventsData: {
3213
-        isTouched: undefined,
3214
-        isMoved: undefined,
3215
-        allowTouchCallbacks: undefined,
3216
-        touchStartTime: undefined,
3217
-        isScrolling: undefined,
3218
-        currentTranslate: undefined,
3219
-        startTranslate: undefined,
3220
-        allowThresholdMove: undefined,
3221
-        // Form elements to match
3222
-        formElements: 'input, select, option, textarea, button, video, label',
3223
-        // Last click time
3224
-        lastClickTime: Utils.now(),
3225
-        clickTimeout: undefined,
3226
-        // Velocities
3227
-        velocities: [],
3228
-        allowMomentumBounce: undefined,
3229
-        isTouchEvent: undefined,
3230
-        startMoving: undefined,
3231
-      },
3232
-
3233
-      // Clicks
3234
-      allowClick: true,
3235
-
3236
-      // Touches
3237
-      allowTouchMove: swiper.params.allowTouchMove,
3238
-
3239
-      touches: {
3240
-        startX: 0,
3241
-        startY: 0,
3242
-        currentX: 0,
3243
-        currentY: 0,
3244
-        diff: 0,
3245
-      },
3246
-
3247
-      // Images
3248
-      imagesToLoad: [],
3249
-      imagesLoaded: 0,
3250
-
3251
-    });
3252
-
3253
-    // Install Modules
3254
-    swiper.useModules();
3255
-
3256
-    // Init
3257
-    if (swiper.params.init) {
3258
-      swiper.init();
3259
-    }
3260
-
3261
-    // Return app instance
3262
-    return swiper;
3263
-  }
3264
-
3265
-  slidesPerViewDynamic() {
3266
-    const swiper = this;
3267
-    const {
3268
-      params, slides, slidesGrid, size: swiperSize, activeIndex,
3269
-    } = swiper;
3270
-    let spv = 1;
3271
-    if (params.centeredSlides) {
3272
-      let slideSize = slides[activeIndex].swiperSlideSize;
3273
-      let breakLoop;
3274
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
3275
-        if (slides[i] && !breakLoop) {
3276
-          slideSize += slides[i].swiperSlideSize;
3277
-          spv += 1;
3278
-          if (slideSize > swiperSize) breakLoop = true;
3279
-        }
3280
-      }
3281
-      for (let i = activeIndex - 1; i >= 0; i -= 1) {
3282
-        if (slides[i] && !breakLoop) {
3283
-          slideSize += slides[i].swiperSlideSize;
3284
-          spv += 1;
3285
-          if (slideSize > swiperSize) breakLoop = true;
3286
-        }
3287
-      }
3288
-    } else {
3289
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
3290
-        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
3291
-          spv += 1;
3292
-        }
3293
-      }
3294
-    }
3295
-    return spv;
3296
-  }
3297
-
3298
-  update() {
3299
-    const swiper = this;
3300
-    if (!swiper || swiper.destroyed) return;
3301
-    const { snapGrid, params } = swiper;
3302
-    // Breakpoints
3303
-    if (params.breakpoints) {
3304
-      swiper.setBreakpoint();
3305
-    }
3306
-    swiper.updateSize();
3307
-    swiper.updateSlides();
3308
-    swiper.updateProgress();
3309
-    swiper.updateSlidesClasses();
3310
-
3311
-    function setTranslate() {
3312
-      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
3313
-      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
3314
-      swiper.setTranslate(newTranslate);
3315
-      swiper.updateActiveIndex();
3316
-      swiper.updateSlidesClasses();
3317
-    }
3318
-    let translated;
3319
-    if (swiper.params.freeMode) {
3320
-      setTranslate();
3321
-      if (swiper.params.autoHeight) {
3322
-        swiper.updateAutoHeight();
3323
-      }
3324
-    } else {
3325
-      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3326
-        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3327
-      } else {
3328
-        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
3329
-      }
3330
-      if (!translated) {
3331
-        setTranslate();
3332
-      }
3333
-    }
3334
-    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
3335
-      swiper.checkOverflow();
3336
-    }
3337
-    swiper.emit('update');
3338
-  }
3339
-
3340
-  changeDirection(newDirection, needUpdate = true) {
3341
-    const swiper = this;
3342
-    const currentDirection = swiper.params.direction;
3343
-    if (!newDirection) {
3344
-      // eslint-disable-next-line
3345
-      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
3346
-    }
3347
-    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
3348
-      return swiper;
3349
-    }
3350
-
3351
-    swiper.$el
3352
-      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)
3353
-      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);
3354
-
3355
-    swiper.params.direction = newDirection;
3356
-
3357
-    swiper.slides.each((slideIndex, slideEl) => {
3358
-      if (newDirection === 'vertical') {
3359
-        slideEl.style.width = '';
3360
-      } else {
3361
-        slideEl.style.height = '';
3362
-      }
3363
-    });
3364
-
3365
-    swiper.emit('changeDirection');
3366
-    if (needUpdate) swiper.update();
3367
-
3368
-    return swiper;
3369
-  }
3370
-
3371
-  init() {
3372
-    const swiper = this;
3373
-    if (swiper.initialized) return;
3374
-
3375
-    swiper.emit('beforeInit');
3376
-
3377
-    // Set breakpoint
3378
-    if (swiper.params.breakpoints) {
3379
-      swiper.setBreakpoint();
3380
-    }
3381
-
3382
-    // Add Classes
3383
-    swiper.addClasses();
3384
-
3385
-    // Create loop
3386
-    if (swiper.params.loop) {
3387
-      swiper.loopCreate();
3388
-    }
3389
-
3390
-    // Update size
3391
-    swiper.updateSize();
3392
-
3393
-    // Update slides
3394
-    swiper.updateSlides();
3395
-
3396
-    if (swiper.params.watchOverflow) {
3397
-      swiper.checkOverflow();
3398
-    }
3399
-
3400
-    // Set Grab Cursor
3401
-    if (swiper.params.grabCursor) {
3402
-      swiper.setGrabCursor();
3403
-    }
3404
-
3405
-    if (swiper.params.preloadImages) {
3406
-      swiper.preloadImages();
3407
-    }
3408
-
3409
-    // Slide To Initial Slide
3410
-    if (swiper.params.loop) {
3411
-      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
3412
-    } else {
3413
-      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
3414
-    }
3415
-
3416
-    // Attach events
3417
-    swiper.attachEvents();
3418
-
3419
-    // Init Flag
3420
-    swiper.initialized = true;
3421
-
3422
-    // Emit
3423
-    swiper.emit('init');
3424
-  }
3425
-
3426
-  destroy(deleteInstance = true, cleanStyles = true) {
3427
-    const swiper = this;
3428
-    const {
3429
-      params, $el, $wrapperEl, slides,
3430
-    } = swiper;
3431
-
3432
-    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
3433
-      return null;
3434
-    }
3435
-
3436
-    swiper.emit('beforeDestroy');
3437
-
3438
-    // Init Flag
3439
-    swiper.initialized = false;
3440
-
3441
-    // Detach events
3442
-    swiper.detachEvents();
3443
-
3444
-    // Destroy loop
3445
-    if (params.loop) {
3446
-      swiper.loopDestroy();
3447
-    }
3448
-
3449
-    // Cleanup styles
3450
-    if (cleanStyles) {
3451
-      swiper.removeClasses();
3452
-      $el.removeAttr('style');
3453
-      $wrapperEl.removeAttr('style');
3454
-      if (slides && slides.length) {
3455
-        slides
3456
-          .removeClass([
3457
-            params.slideVisibleClass,
3458
-            params.slideActiveClass,
3459
-            params.slideNextClass,
3460
-            params.slidePrevClass,
3461
-          ].join(' '))
3462
-          .removeAttr('style')
3463
-          .removeAttr('data-swiper-slide-index');
3464
-      }
3465
-    }
3466
-
3467
-    swiper.emit('destroy');
3468
-
3469
-    // Detach emitter events
3470
-    Object.keys(swiper.eventsListeners).forEach((eventName) => {
3471
-      swiper.off(eventName);
3472
-    });
3473
-
3474
-    if (deleteInstance !== false) {
3475
-      swiper.$el[0].swiper = null;
3476
-      swiper.$el.data('swiper', null);
3477
-      Utils.deleteProps(swiper);
3478
-    }
3479
-    swiper.destroyed = true;
3480
-
3481
-    return null;
3482
-  }
3483
-
3484
-  static extendDefaults(newDefaults) {
3485
-    Utils.extend(extendedDefaults, newDefaults);
3486
-  }
3487
-
3488
-  static get extendedDefaults() {
3489
-    return extendedDefaults;
3490
-  }
3491
-
3492
-  static get defaults() {
3493
-    return defaults;
3494
-  }
3495
-
3496
-  static get Class() {
3497
-    return SwiperClass;
3498
-  }
3499
-
3500
-  static get $() {
3501
-    return $;
3502
-  }
3503
-}
3504
-
3505
-var Device$1 = {
3506
-  name: 'device',
3507
-  proto: {
3508
-    device: Device,
3509
-  },
3510
-  static: {
3511
-    device: Device,
3512
-  },
3513
-};
3514
-
3515
-var Support$1 = {
3516
-  name: 'support',
3517
-  proto: {
3518
-    support: Support,
3519
-  },
3520
-  static: {
3521
-    support: Support,
3522
-  },
3523
-};
3524
-
3525
-const Browser = (function Browser() {
3526
-  function isSafari() {
3527
-    const ua = window.navigator.userAgent.toLowerCase();
3528
-    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
3529
-  }
3530
-  return {
3531
-    isEdge: !!window.navigator.userAgent.match(/Edge/g),
3532
-    isSafari: isSafari(),
3533
-    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),
3534
-  };
3535
-}());
3536
-
3537
-var Browser$1 = {
3538
-  name: 'browser',
3539
-  proto: {
3540
-    browser: Browser,
3541
-  },
3542
-  static: {
3543
-    browser: Browser,
3544
-  },
3545
-};
3546
-
3547
-var Resize = {
3548
-  name: 'resize',
3549
-  create() {
3550
-    const swiper = this;
3551
-    Utils.extend(swiper, {
3552
-      resize: {
3553
-        resizeHandler() {
3554
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
3555
-          swiper.emit('beforeResize');
3556
-          swiper.emit('resize');
3557
-        },
3558
-        orientationChangeHandler() {
3559
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
3560
-          swiper.emit('orientationchange');
3561
-        },
3562
-      },
3563
-    });
3564
-  },
3565
-  on: {
3566
-    init() {
3567
-      const swiper = this;
3568
-      // Emit resize
3569
-      window.addEventListener('resize', swiper.resize.resizeHandler);
3570
-
3571
-      // Emit orientationchange
3572
-      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
3573
-    },
3574
-    destroy() {
3575
-      const swiper = this;
3576
-      window.removeEventListener('resize', swiper.resize.resizeHandler);
3577
-      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
3578
-    },
3579
-  },
3580
-};
3581
-
3582
-const Observer = {
3583
-  func: window.MutationObserver || window.WebkitMutationObserver,
3584
-  attach(target, options = {}) {
3585
-    const swiper = this;
3586
-
3587
-    const ObserverFunc = Observer.func;
3588
-    const observer = new ObserverFunc((mutations) => {
3589
-      // The observerUpdate event should only be triggered
3590
-      // once despite the number of mutations.  Additional
3591
-      // triggers are redundant and are very costly
3592
-      if (mutations.length === 1) {
3593
-        swiper.emit('observerUpdate', mutations[0]);
3594
-        return;
3595
-      }
3596
-      const observerUpdate = function observerUpdate() {
3597
-        swiper.emit('observerUpdate', mutations[0]);
3598
-      };
3599
-
3600
-      if (window.requestAnimationFrame) {
3601
-        window.requestAnimationFrame(observerUpdate);
3602
-      } else {
3603
-        window.setTimeout(observerUpdate, 0);
3604
-      }
3605
-    });
3606
-
3607
-    observer.observe(target, {
3608
-      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
3609
-      childList: typeof options.childList === 'undefined' ? true : options.childList,
3610
-      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
3611
-    });
3612
-
3613
-    swiper.observer.observers.push(observer);
3614
-  },
3615
-  init() {
3616
-    const swiper = this;
3617
-    if (!Support.observer || !swiper.params.observer) return;
3618
-    if (swiper.params.observeParents) {
3619
-      const containerParents = swiper.$el.parents();
3620
-      for (let i = 0; i < containerParents.length; i += 1) {
3621
-        swiper.observer.attach(containerParents[i]);
3622
-      }
3623
-    }
3624
-    // Observe container
3625
-    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
3626
-
3627
-    // Observe wrapper
3628
-    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
3629
-  },
3630
-  destroy() {
3631
-    const swiper = this;
3632
-    swiper.observer.observers.forEach((observer) => {
3633
-      observer.disconnect();
3634
-    });
3635
-    swiper.observer.observers = [];
3636
-  },
3637
-};
3638
-
3639
-var Observer$1 = {
3640
-  name: 'observer',
3641
-  params: {
3642
-    observer: false,
3643
-    observeParents: false,
3644
-    observeSlideChildren: false,
3645
-  },
3646
-  create() {
3647
-    const swiper = this;
3648
-    Utils.extend(swiper, {
3649
-      observer: {
3650
-        init: Observer.init.bind(swiper),
3651
-        attach: Observer.attach.bind(swiper),
3652
-        destroy: Observer.destroy.bind(swiper),
3653
-        observers: [],
3654
-      },
3655
-    });
3656
-  },
3657
-  on: {
3658
-    init() {
3659
-      const swiper = this;
3660
-      swiper.observer.init();
3661
-    },
3662
-    destroy() {
3663
-      const swiper = this;
3664
-      swiper.observer.destroy();
3665
-    },
3666
-  },
3667
-};
3668
-
3669
-const Virtual = {
3670
-  update(force) {
3671
-    const swiper = this;
3672
-    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
3673
-    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
3674
-    const {
3675
-      from: previousFrom,
3676
-      to: previousTo,
3677
-      slides,
3678
-      slidesGrid: previousSlidesGrid,
3679
-      renderSlide,
3680
-      offset: previousOffset,
3681
-    } = swiper.virtual;
3682
-    swiper.updateActiveIndex();
3683
-    const activeIndex = swiper.activeIndex || 0;
3684
-
3685
-    let offsetProp;
3686
-    if (swiper.rtlTranslate) offsetProp = 'right';
3687
-    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
3688
-
3689
-    let slidesAfter;
3690
-    let slidesBefore;
3691
-    if (centeredSlides) {
3692
-      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
3693
-      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
3694
-    } else {
3695
-      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
3696
-      slidesBefore = slidesPerGroup + addSlidesAfter;
3697
-    }
3698
-    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
3699
-    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
3700
-    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
3701
-
3702
-    Utils.extend(swiper.virtual, {
3703
-      from,
3704
-      to,
3705
-      offset,
3706
-      slidesGrid: swiper.slidesGrid,
3707
-    });
3708
-
3709
-    function onRendered() {
3710
-      swiper.updateSlides();
3711
-      swiper.updateProgress();
3712
-      swiper.updateSlidesClasses();
3713
-      if (swiper.lazy && swiper.params.lazy.enabled) {
3714
-        swiper.lazy.load();
3715
-      }
3716
-    }
3717
-
3718
-    if (previousFrom === from && previousTo === to && !force) {
3719
-      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
3720
-        swiper.slides.css(offsetProp, `${offset}px`);
3721
-      }
3722
-      swiper.updateProgress();
3723
-      return;
3724
-    }
3725
-    if (swiper.params.virtual.renderExternal) {
3726
-      swiper.params.virtual.renderExternal.call(swiper, {
3727
-        offset,
3728
-        from,
3729
-        to,
3730
-        slides: (function getSlides() {
3731
-          const slidesToRender = [];
3732
-          for (let i = from; i <= to; i += 1) {
3733
-            slidesToRender.push(slides[i]);
3734
-          }
3735
-          return slidesToRender;
3736
-        }()),
3737
-      });
3738
-      onRendered();
3739
-      return;
3740
-    }
3741
-    const prependIndexes = [];
3742
-    const appendIndexes = [];
3743
-    if (force) {
3744
-      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
3745
-    } else {
3746
-      for (let i = previousFrom; i <= previousTo; i += 1) {
3747
-        if (i < from || i > to) {
3748
-          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
3749
-        }
3750
-      }
3751
-    }
3752
-    for (let i = 0; i < slides.length; i += 1) {
3753
-      if (i >= from && i <= to) {
3754
-        if (typeof previousTo === 'undefined' || force) {
3755
-          appendIndexes.push(i);
3756
-        } else {
3757
-          if (i > previousTo) appendIndexes.push(i);
3758
-          if (i < previousFrom) prependIndexes.push(i);
3759
-        }
3760
-      }
3761
-    }
3762
-    appendIndexes.forEach((index) => {
3763
-      swiper.$wrapperEl.append(renderSlide(slides[index], index));
3764
-    });
3765
-    prependIndexes.sort((a, b) => b - a).forEach((index) => {
3766
-      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
3767
-    });
3768
-    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
3769
-    onRendered();
3770
-  },
3771
-  renderSlide(slide, index) {
3772
-    const swiper = this;
3773
-    const params = swiper.params.virtual;
3774
-    if (params.cache && swiper.virtual.cache[index]) {
3775
-      return swiper.virtual.cache[index];
3776
-    }
3777
-    const $slideEl = params.renderSlide
3778
-      ? $(params.renderSlide.call(swiper, slide, index))
3779
-      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
3780
-    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
3781
-    if (params.cache) swiper.virtual.cache[index] = $slideEl;
3782
-    return $slideEl;
3783
-  },
3784
-  appendSlide(slides) {
3785
-    const swiper = this;
3786
-    if (typeof slides === 'object' && 'length' in slides) {
3787
-      for (let i = 0; i < slides.length; i += 1) {
3788
-        if (slides[i]) swiper.virtual.slides.push(slides[i]);
3789
-      }
3790
-    } else {
3791
-      swiper.virtual.slides.push(slides);
3792
-    }
3793
-    swiper.virtual.update(true);
3794
-  },
3795
-  prependSlide(slides) {
3796
-    const swiper = this;
3797
-    const activeIndex = swiper.activeIndex;
3798
-    let newActiveIndex = activeIndex + 1;
3799
-    let numberOfNewSlides = 1;
3800
-
3801
-    if (Array.isArray(slides)) {
3802
-      for (let i = 0; i < slides.length; i += 1) {
3803
-        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
3804
-      }
3805
-      newActiveIndex = activeIndex + slides.length;
3806
-      numberOfNewSlides = slides.length;
3807
-    } else {
3808
-      swiper.virtual.slides.unshift(slides);
3809
-    }
3810
-    if (swiper.params.virtual.cache) {
3811
-      const cache = swiper.virtual.cache;
3812
-      const newCache = {};
3813
-      Object.keys(cache).forEach((cachedIndex) => {
3814
-        const $cachedEl = cache[cachedIndex];
3815
-        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
3816
-        if (cachedElIndex) {
3817
-          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
3818
-        }
3819
-        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
3820
-      });
3821
-      swiper.virtual.cache = newCache;
3822
-    }
3823
-    swiper.virtual.update(true);
3824
-    swiper.slideTo(newActiveIndex, 0);
3825
-  },
3826
-  removeSlide(slidesIndexes) {
3827
-    const swiper = this;
3828
-    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
3829
-    let activeIndex = swiper.activeIndex;
3830
-    if (Array.isArray(slidesIndexes)) {
3831
-      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
3832
-        swiper.virtual.slides.splice(slidesIndexes[i], 1);
3833
-        if (swiper.params.virtual.cache) {
3834
-          delete swiper.virtual.cache[slidesIndexes[i]];
3835
-        }
3836
-        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
3837
-        activeIndex = Math.max(activeIndex, 0);
3838
-      }
3839
-    } else {
3840
-      swiper.virtual.slides.splice(slidesIndexes, 1);
3841
-      if (swiper.params.virtual.cache) {
3842
-        delete swiper.virtual.cache[slidesIndexes];
3843
-      }
3844
-      if (slidesIndexes < activeIndex) activeIndex -= 1;
3845
-      activeIndex = Math.max(activeIndex, 0);
3846
-    }
3847
-    swiper.virtual.update(true);
3848
-    swiper.slideTo(activeIndex, 0);
3849
-  },
3850
-  removeAllSlides() {
3851
-    const swiper = this;
3852
-    swiper.virtual.slides = [];
3853
-    if (swiper.params.virtual.cache) {
3854
-      swiper.virtual.cache = {};
3855
-    }
3856
-    swiper.virtual.update(true);
3857
-    swiper.slideTo(0, 0);
3858
-  },
3859
-};
3860
-
3861
-var virtual = {
3862
-  name: 'virtual',
3863
-  params: {
3864
-    virtual: {
3865
-      enabled: false,
3866
-      slides: [],
3867
-      cache: true,
3868
-      renderSlide: null,
3869
-      renderExternal: null,
3870
-      addSlidesBefore: 0,
3871
-      addSlidesAfter: 0,
3872
-    },
3873
-  },
3874
-  create() {
3875
-    const swiper = this;
3876
-    Utils.extend(swiper, {
3877
-      virtual: {
3878
-        update: Virtual.update.bind(swiper),
3879
-        appendSlide: Virtual.appendSlide.bind(swiper),
3880
-        prependSlide: Virtual.prependSlide.bind(swiper),
3881
-        removeSlide: Virtual.removeSlide.bind(swiper),
3882
-        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
3883
-        renderSlide: Virtual.renderSlide.bind(swiper),
3884
-        slides: swiper.params.virtual.slides,
3885
-        cache: {},
3886
-      },
3887
-    });
3888
-  },
3889
-  on: {
3890
-    beforeInit() {
3891
-      const swiper = this;
3892
-      if (!swiper.params.virtual.enabled) return;
3893
-      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
3894
-      const overwriteParams = {
3895
-        watchSlidesProgress: true,
3896
-      };
3897
-      Utils.extend(swiper.params, overwriteParams);
3898
-      Utils.extend(swiper.originalParams, overwriteParams);
3899
-
3900
-      if (!swiper.params.initialSlide) {
3901
-        swiper.virtual.update();
3902
-      }
3903
-    },
3904
-    setTranslate() {
3905
-      const swiper = this;
3906
-      if (!swiper.params.virtual.enabled) return;
3907
-      swiper.virtual.update();
3908
-    },
3909
-  },
3910
-};
3911
-
3912
-const Keyboard = {
3913
-  handle(event) {
3914
-    const swiper = this;
3915
-    const { rtlTranslate: rtl } = swiper;
3916
-    let e = event;
3917
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
3918
-    const kc = e.keyCode || e.charCode;
3919
-    // Directions locks
3920
-    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
3921
-      return false;
3922
-    }
3923
-    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
3924
-      return false;
3925
-    }
3926
-    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
3927
-      return undefined;
3928
-    }
3929
-    if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {
3930
-      return undefined;
3931
-    }
3932
-    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
3933
-      let inView = false;
3934
-      // Check that swiper should be inside of visible area of window
3935
-      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
3936
-        return undefined;
3937
-      }
3938
-      const windowWidth = window.innerWidth;
3939
-      const windowHeight = window.innerHeight;
3940
-      const swiperOffset = swiper.$el.offset();
3941
-      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
3942
-      const swiperCoord = [
3943
-        [swiperOffset.left, swiperOffset.top],
3944
-        [swiperOffset.left + swiper.width, swiperOffset.top],
3945
-        [swiperOffset.left, swiperOffset.top + swiper.height],
3946
-        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],
3947
-      ];
3948
-      for (let i = 0; i < swiperCoord.length; i += 1) {
3949
-        const point = swiperCoord[i];
3950
-        if (
3951
-          point[0] >= 0 && point[0] <= windowWidth
3952
-          && point[1] >= 0 && point[1] <= windowHeight
3953
-        ) {
3954
-          inView = true;
3955
-        }
3956
-      }
3957
-      if (!inView) return undefined;
3958
-    }
3959
-    if (swiper.isHorizontal()) {
3960
-      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
3961
-        if (e.preventDefault) e.preventDefault();
3962
-        else e.returnValue = false;
3963
-      }
3964
-      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();
3965
-      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();
3966
-    } else {
3967
-      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
3968
-        if (e.preventDefault) e.preventDefault();
3969
-        else e.returnValue = false;
3970
-      }
3971
-      if (kc === 34 || kc === 40) swiper.slideNext();
3972
-      if (kc === 33 || kc === 38) swiper.slidePrev();
3973
-    }
3974
-    swiper.emit('keyPress', kc);
3975
-    return undefined;
3976
-  },
3977
-  enable() {
3978
-    const swiper = this;
3979
-    if (swiper.keyboard.enabled) return;
3980
-    $(document$1).on('keydown', swiper.keyboard.handle);
3981
-    swiper.keyboard.enabled = true;
3982
-  },
3983
-  disable() {
3984
-    const swiper = this;
3985
-    if (!swiper.keyboard.enabled) return;
3986
-    $(document$1).off('keydown', swiper.keyboard.handle);
3987
-    swiper.keyboard.enabled = false;
3988
-  },
3989
-};
3990
-
3991
-var keyboard = {
3992
-  name: 'keyboard',
3993
-  params: {
3994
-    keyboard: {
3995
-      enabled: false,
3996
-      onlyInViewport: true,
3997
-    },
3998
-  },
3999
-  create() {
4000
-    const swiper = this;
4001
-    Utils.extend(swiper, {
4002
-      keyboard: {
4003
-        enabled: false,
4004
-        enable: Keyboard.enable.bind(swiper),
4005
-        disable: Keyboard.disable.bind(swiper),
4006
-        handle: Keyboard.handle.bind(swiper),
4007
-      },
4008
-    });
4009
-  },
4010
-  on: {
4011
-    init() {
4012
-      const swiper = this;
4013
-      if (swiper.params.keyboard.enabled) {
4014
-        swiper.keyboard.enable();
4015
-      }
4016
-    },
4017
-    destroy() {
4018
-      const swiper = this;
4019
-      if (swiper.keyboard.enabled) {
4020
-        swiper.keyboard.disable();
4021
-      }
4022
-    },
4023
-  },
4024
-};
4025
-
4026
-function isEventSupported() {
4027
-  const eventName = 'onwheel';
4028
-  let isSupported = eventName in document$1;
4029
-
4030
-  if (!isSupported) {
4031
-    const element = document$1.createElement('div');
4032
-    element.setAttribute(eventName, 'return;');
4033
-    isSupported = typeof element[eventName] === 'function';
4034
-  }
4035
-
4036
-  if (!isSupported
4037
-    && document$1.implementation
4038
-    && document$1.implementation.hasFeature
4039
-    // always returns true in newer browsers as per the standard.
4040
-    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
4041
-    && document$1.implementation.hasFeature('', '') !== true
4042
-  ) {
4043
-    // This is the only way to test support for the `wheel` event in IE9+.
4044
-    isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');
4045
-  }
4046
-
4047
-  return isSupported;
4048
-}
4049
-const Mousewheel = {
4050
-  lastScrollTime: Utils.now(),
4051
-  lastEventBeforeSnap: undefined,
4052
-  recentWheelEvents: [],
4053
-  event() {
4054
-    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
4055
-    return isEventSupported() ? 'wheel' : 'mousewheel';
4056
-  },
4057
-  normalize(e) {
4058
-    // Reasonable defaults
4059
-    const PIXEL_STEP = 10;
4060
-    const LINE_HEIGHT = 40;
4061
-    const PAGE_HEIGHT = 800;
4062
-
4063
-    let sX = 0;
4064
-    let sY = 0; // spinX, spinY
4065
-    let pX = 0;
4066
-    let pY = 0; // pixelX, pixelY
4067
-
4068
-    // Legacy
4069
-    if ('detail' in e) {
4070
-      sY = e.detail;
4071
-    }
4072
-    if ('wheelDelta' in e) {
4073
-      sY = -e.wheelDelta / 120;
4074
-    }
4075
-    if ('wheelDeltaY' in e) {
4076
-      sY = -e.wheelDeltaY / 120;
4077
-    }
4078
-    if ('wheelDeltaX' in e) {
4079
-      sX = -e.wheelDeltaX / 120;
4080
-    }
4081
-
4082
-    // side scrolling on FF with DOMMouseScroll
4083
-    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
4084
-      sX = sY;
4085
-      sY = 0;
4086
-    }
4087
-
4088
-    pX = sX * PIXEL_STEP;
4089
-    pY = sY * PIXEL_STEP;
4090
-
4091
-    if ('deltaY' in e) {
4092
-      pY = e.deltaY;
4093
-    }
4094
-    if ('deltaX' in e) {
4095
-      pX = e.deltaX;
4096
-    }
4097
-
4098
-    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
4099
-      pX = pY;
4100
-      pY = 0;
4101
-    }
4102
-
4103
-    if ((pX || pY) && e.deltaMode) {
4104
-      if (e.deltaMode === 1) { // delta in LINE units
4105
-        pX *= LINE_HEIGHT;
4106
-        pY *= LINE_HEIGHT;
4107
-      } else { // delta in PAGE units
4108
-        pX *= PAGE_HEIGHT;
4109
-        pY *= PAGE_HEIGHT;
4110
-      }
4111
-    }
4112
-
4113
-    // Fall-back if spin cannot be determined
4114
-    if (pX && !sX) {
4115
-      sX = (pX < 1) ? -1 : 1;
4116
-    }
4117
-    if (pY && !sY) {
4118
-      sY = (pY < 1) ? -1 : 1;
4119
-    }
4120
-
4121
-    return {
4122
-      spinX: sX,
4123
-      spinY: sY,
4124
-      pixelX: pX,
4125
-      pixelY: pY,
4126
-    };
4127
-  },
4128
-  handleMouseEnter() {
4129
-    const swiper = this;
4130
-    swiper.mouseEntered = true;
4131
-  },
4132
-  handleMouseLeave() {
4133
-    const swiper = this;
4134
-    swiper.mouseEntered = false;
4135
-  },
4136
-  handle(event) {
4137
-    let e = event;
4138
-    const swiper = this;
4139
-    const params = swiper.params.mousewheel;
4140
-
4141
-    if (swiper.params.cssMode) {
4142
-      e.preventDefault();
4143
-    }
4144
-
4145
-    let target = swiper.$el;
4146
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4147
-      target = $(swiper.params.mousewheel.eventsTarged);
4148
-    }
4149
-    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
4150
-
4151
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
4152
-    let delta = 0;
4153
-    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
4154
-
4155
-    const data = Mousewheel.normalize(e);
4156
-
4157
-    if (params.forceToAxis) {
4158
-      if (swiper.isHorizontal()) {
4159
-        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;
4160
-        else return true;
4161
-      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;
4162
-      else return true;
4163
-    } else {
4164
-      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
4165
-    }
4166
-
4167
-    if (delta === 0) return true;
4168
-
4169
-    if (params.invert) delta = -delta;
4170
-
4171
-    if (!swiper.params.freeMode) {
4172
-      // Register the new event in a variable which stores the relevant data
4173
-      const newEvent = {
4174
-        time: Utils.now(),
4175
-        delta: Math.abs(delta),
4176
-        direction: Math.sign(delta),
4177
-        raw: event,
4178
-      };
4179
-
4180
-      // Keep the most recent events
4181
-      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
4182
-      if (recentWheelEvents.length >= 2) {
4183
-        recentWheelEvents.shift(); // only store the last N events
4184
-      }
4185
-      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
4186
-      recentWheelEvents.push(newEvent);
4187
-
4188
-      // If there is at least one previous recorded event:
4189
-      //   If direction has changed or
4190
-      //   if the scroll is quicker than the previous one:
4191
-      //     Animate the slider.
4192
-      // Else (this is the first time the wheel is moved):
4193
-      //     Animate the slider.
4194
-      if (prevEvent) {
4195
-        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
4196
-          swiper.mousewheel.animateSlider(newEvent);
4197
-        }
4198
-      } else {
4199
-        swiper.mousewheel.animateSlider(newEvent);
4200
-      }
4201
-
4202
-      // If it's time to release the scroll:
4203
-      //   Return now so you don't hit the preventDefault.
4204
-      if (swiper.mousewheel.releaseScroll(newEvent)) {
4205
-        return true;
4206
-      }
4207
-    } else {
4208
-      // Freemode or scrollContainer:
4209
-
4210
-      // If we recently snapped after a momentum scroll, then ignore wheel events
4211
-      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
4212
-      // or if it's a new scroll (larger delta or inverse sign as last event before
4213
-      // an end-of-momentum snap).
4214
-      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
4215
-      const { lastEventBeforeSnap } = swiper.mousewheel;
4216
-      const ignoreWheelEvents = lastEventBeforeSnap
4217
-        && newEvent.time < lastEventBeforeSnap.time + 500
4218
-        && newEvent.delta <= lastEventBeforeSnap.delta
4219
-        && newEvent.direction === lastEventBeforeSnap.direction;
4220
-      if (!ignoreWheelEvents) {
4221
-        swiper.mousewheel.lastEventBeforeSnap = undefined;
4222
-
4223
-        if (swiper.params.loop) {
4224
-          swiper.loopFix();
4225
-        }
4226
-        let position = swiper.getTranslate() + (delta * params.sensitivity);
4227
-        const wasBeginning = swiper.isBeginning;
4228
-        const wasEnd = swiper.isEnd;
4229
-
4230
-        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
4231
-        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
4232
-
4233
-        swiper.setTransition(0);
4234
-        swiper.setTranslate(position);
4235
-        swiper.updateProgress();
4236
-        swiper.updateActiveIndex();
4237
-        swiper.updateSlidesClasses();
4238
-
4239
-        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
4240
-          swiper.updateSlidesClasses();
4241
-        }
4242
-
4243
-        if (swiper.params.freeModeSticky) {
4244
-          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
4245
-          // the end of a momentum scroll by storing recent (N=15?) wheel events.
4246
-          // 1. do all N events have decreasing or same (absolute value) delta?
4247
-          // 2. did all N events arrive in the last M (M=500?) msecs?
4248
-          // 3. does the earliest event have an (absolute value) delta that's
4249
-          //    at least P (P=1?) larger than the most recent event's delta?
4250
-          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
4251
-          // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
4252
-          // Snap immediately and ignore remaining wheel events in this scroll.
4253
-          // See comment above for "remaining wheel events in this scroll" determination.
4254
-          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
4255
-          clearTimeout(swiper.mousewheel.timeout);
4256
-          swiper.mousewheel.timeout = undefined;
4257
-          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
4258
-          if (recentWheelEvents.length >= 15) {
4259
-            recentWheelEvents.shift(); // only store the last N events
4260
-          }
4261
-          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
4262
-          const firstEvent = recentWheelEvents[0];
4263
-          recentWheelEvents.push(newEvent);
4264
-          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
4265
-            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
4266
-            recentWheelEvents.splice(0);
4267
-          } else if (recentWheelEvents.length >= 15
4268
-              && newEvent.time - firstEvent.time < 500
4269
-              && firstEvent.delta - newEvent.delta >= 1
4270
-              && newEvent.delta <= 6
4271
-          ) {
4272
-            // We're at the end of the deceleration of a momentum scroll, so there's no need
4273
-            // to wait for more events. Snap ASAP on the next tick.
4274
-            // Also, because there's some remaining momentum we'll bias the snap in the
4275
-            // direction of the ongoing scroll because it's better UX for the scroll to snap
4276
-            // in the same direction as the scroll instead of reversing to snap.  Therefore,
4277
-            // if it's already scrolled more than 20% in the current direction, keep going.
4278
-            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
4279
-            swiper.mousewheel.lastEventBeforeSnap = newEvent;
4280
-            recentWheelEvents.splice(0);
4281
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
4282
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
4283
-            }, 0); // no delay; move on next tick
4284
-          }
4285
-          if (!swiper.mousewheel.timeout) {
4286
-            // if we get here, then we haven't detected the end of a momentum scroll, so
4287
-            // we'll consider a scroll "complete" when there haven't been any wheel events
4288
-            // for 500ms.
4289
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
4290
-              const snapToThreshold = 0.5;
4291
-              swiper.mousewheel.lastEventBeforeSnap = newEvent;
4292
-              recentWheelEvents.splice(0);
4293
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
4294
-            }, 500);
4295
-          }
4296
-        }
4297
-
4298
-        // Emit event
4299
-        if (!ignoreWheelEvents) swiper.emit('scroll', e);
4300
-
4301
-        // Stop autoplay
4302
-        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
4303
-        // Return page scroll on edge positions
4304
-        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
4305
-      }
4306
-    }
4307
-
4308
-    if (e.preventDefault) e.preventDefault();
4309
-    else e.returnValue = false;
4310
-    return false;
4311
-  },
4312
-  animateSlider(newEvent) {
4313
-    const swiper = this;
4314
-    // If the movement is NOT big enough and
4315
-    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
4316
-    //   Don't go any further (avoid insignificant scroll movement).
4317
-    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
4318
-      // Return false as a default
4319
-      return true;
4320
-    }
4321
-    // If user is scrolling towards the end:
4322
-    //   If the slider hasn't hit the latest slide or
4323
-    //   if the slider is a loop and
4324
-    //   if the slider isn't moving right now:
4325
-    //     Go to next slide and
4326
-    //     emit a scroll event.
4327
-    // Else (the user is scrolling towards the beginning) and
4328
-    // if the slider hasn't hit the first slide or
4329
-    // if the slider is a loop and
4330
-    // if the slider isn't moving right now:
4331
-    //   Go to prev slide and
4332
-    //   emit a scroll event.
4333
-    if (newEvent.direction < 0) {
4334
-      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
4335
-        swiper.slideNext();
4336
-        swiper.emit('scroll', newEvent.raw);
4337
-      }
4338
-    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
4339
-      swiper.slidePrev();
4340
-      swiper.emit('scroll', newEvent.raw);
4341
-    }
4342
-    // If you got here is because an animation has been triggered so store the current time
4343
-    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();
4344
-    // Return false as a default
4345
-    return false;
4346
-  },
4347
-  releaseScroll(newEvent) {
4348
-    const swiper = this;
4349
-    const params = swiper.params.mousewheel;
4350
-    if (newEvent.direction < 0) {
4351
-      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
4352
-        // Return true to animate scroll on edges
4353
-        return true;
4354
-      }
4355
-    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
4356
-      // Return true to animate scroll on edges
4357
-      return true;
4358
-    }
4359
-    return false;
4360
-  },
4361
-  enable() {
4362
-    const swiper = this;
4363
-    const event = Mousewheel.event();
4364
-    if (swiper.params.cssMode) {
4365
-      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
4366
-      return true;
4367
-    }
4368
-    if (!event) return false;
4369
-    if (swiper.mousewheel.enabled) return false;
4370
-    let target = swiper.$el;
4371
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4372
-      target = $(swiper.params.mousewheel.eventsTarged);
4373
-    }
4374
-    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
4375
-    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
4376
-    target.on(event, swiper.mousewheel.handle);
4377
-    swiper.mousewheel.enabled = true;
4378
-    return true;
4379
-  },
4380
-  disable() {
4381
-    const swiper = this;
4382
-    const event = Mousewheel.event();
4383
-    if (swiper.params.cssMode) {
4384
-      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
4385
-      return true;
4386
-    }
4387
-    if (!event) return false;
4388
-    if (!swiper.mousewheel.enabled) return false;
4389
-    let target = swiper.$el;
4390
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
4391
-      target = $(swiper.params.mousewheel.eventsTarged);
4392
-    }
4393
-    target.off(event, swiper.mousewheel.handle);
4394
-    swiper.mousewheel.enabled = false;
4395
-    return true;
4396
-  },
4397
-};
4398
-
4399
-var mousewheel = {
4400
-  name: 'mousewheel',
4401
-  params: {
4402
-    mousewheel: {
4403
-      enabled: false,
4404
-      releaseOnEdges: false,
4405
-      invert: false,
4406
-      forceToAxis: false,
4407
-      sensitivity: 1,
4408
-      eventsTarged: 'container',
4409
-    },
4410
-  },
4411
-  create() {
4412
-    const swiper = this;
4413
-    Utils.extend(swiper, {
4414
-      mousewheel: {
4415
-        enabled: false,
4416
-        enable: Mousewheel.enable.bind(swiper),
4417
-        disable: Mousewheel.disable.bind(swiper),
4418
-        handle: Mousewheel.handle.bind(swiper),
4419
-        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
4420
-        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
4421
-        animateSlider: Mousewheel.animateSlider.bind(swiper),
4422
-        releaseScroll: Mousewheel.releaseScroll.bind(swiper),
4423
-        lastScrollTime: Utils.now(),
4424
-        lastEventBeforeSnap: undefined,
4425
-        recentWheelEvents: [],
4426
-      },
4427
-    });
4428
-  },
4429
-  on: {
4430
-    init() {
4431
-      const swiper = this;
4432
-      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
4433
-        swiper.mousewheel.disable();
4434
-      }
4435
-      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
4436
-    },
4437
-    destroy() {
4438
-      const swiper = this;
4439
-      if (swiper.params.cssMode) {
4440
-        swiper.mousewheel.enable();
4441
-      }
4442
-      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
4443
-    },
4444
-  },
4445
-};
4446
-
4447
-const Navigation = {
4448
-  update() {
4449
-    // Update Navigation Buttons
4450
-    const swiper = this;
4451
-    const params = swiper.params.navigation;
4452
-
4453
-    if (swiper.params.loop) return;
4454
-    const { $nextEl, $prevEl } = swiper.navigation;
4455
-
4456
-    if ($prevEl && $prevEl.length > 0) {
4457
-      if (swiper.isBeginning) {
4458
-        $prevEl.addClass(params.disabledClass);
4459
-      } else {
4460
-        $prevEl.removeClass(params.disabledClass);
4461
-      }
4462
-      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4463
-    }
4464
-    if ($nextEl && $nextEl.length > 0) {
4465
-      if (swiper.isEnd) {
4466
-        $nextEl.addClass(params.disabledClass);
4467
-      } else {
4468
-        $nextEl.removeClass(params.disabledClass);
4469
-      }
4470
-      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4471
-    }
4472
-  },
4473
-  onPrevClick(e) {
4474
-    const swiper = this;
4475
-    e.preventDefault();
4476
-    if (swiper.isBeginning && !swiper.params.loop) return;
4477
-    swiper.slidePrev();
4478
-  },
4479
-  onNextClick(e) {
4480
-    const swiper = this;
4481
-    e.preventDefault();
4482
-    if (swiper.isEnd && !swiper.params.loop) return;
4483
-    swiper.slideNext();
4484
-  },
4485
-  init() {
4486
-    const swiper = this;
4487
-    const params = swiper.params.navigation;
4488
-    if (!(params.nextEl || params.prevEl)) return;
4489
-
4490
-    let $nextEl;
4491
-    let $prevEl;
4492
-    if (params.nextEl) {
4493
-      $nextEl = $(params.nextEl);
4494
-      if (
4495
-        swiper.params.uniqueNavElements
4496
-        && typeof params.nextEl === 'string'
4497
-        && $nextEl.length > 1
4498
-        && swiper.$el.find(params.nextEl).length === 1
4499
-      ) {
4500
-        $nextEl = swiper.$el.find(params.nextEl);
4501
-      }
4502
-    }
4503
-    if (params.prevEl) {
4504
-      $prevEl = $(params.prevEl);
4505
-      if (
4506
-        swiper.params.uniqueNavElements
4507
-        && typeof params.prevEl === 'string'
4508
-        && $prevEl.length > 1
4509
-        && swiper.$el.find(params.prevEl).length === 1
4510
-      ) {
4511
-        $prevEl = swiper.$el.find(params.prevEl);
4512
-      }
4513
-    }
4514
-
4515
-    if ($nextEl && $nextEl.length > 0) {
4516
-      $nextEl.on('click', swiper.navigation.onNextClick);
4517
-    }
4518
-    if ($prevEl && $prevEl.length > 0) {
4519
-      $prevEl.on('click', swiper.navigation.onPrevClick);
4520
-    }
4521
-
4522
-    Utils.extend(swiper.navigation, {
4523
-      $nextEl,
4524
-      nextEl: $nextEl && $nextEl[0],
4525
-      $prevEl,
4526
-      prevEl: $prevEl && $prevEl[0],
4527
-    });
4528
-  },
4529
-  destroy() {
4530
-    const swiper = this;
4531
-    const { $nextEl, $prevEl } = swiper.navigation;
4532
-    if ($nextEl && $nextEl.length) {
4533
-      $nextEl.off('click', swiper.navigation.onNextClick);
4534
-      $nextEl.removeClass(swiper.params.navigation.disabledClass);
4535
-    }
4536
-    if ($prevEl && $prevEl.length) {
4537
-      $prevEl.off('click', swiper.navigation.onPrevClick);
4538
-      $prevEl.removeClass(swiper.params.navigation.disabledClass);
4539
-    }
4540
-  },
4541
-};
4542
-
4543
-var navigation = {
4544
-  name: 'navigation',
4545
-  params: {
4546
-    navigation: {
4547
-      nextEl: null,
4548
-      prevEl: null,
4549
-
4550
-      hideOnClick: false,
4551
-      disabledClass: 'swiper-button-disabled',
4552
-      hiddenClass: 'swiper-button-hidden',
4553
-      lockClass: 'swiper-button-lock',
4554
-    },
4555
-  },
4556
-  create() {
4557
-    const swiper = this;
4558
-    Utils.extend(swiper, {
4559
-      navigation: {
4560
-        init: Navigation.init.bind(swiper),
4561
-        update: Navigation.update.bind(swiper),
4562
-        destroy: Navigation.destroy.bind(swiper),
4563
-        onNextClick: Navigation.onNextClick.bind(swiper),
4564
-        onPrevClick: Navigation.onPrevClick.bind(swiper),
4565
-      },
4566
-    });
4567
-  },
4568
-  on: {
4569
-    init() {
4570
-      const swiper = this;
4571
-      swiper.navigation.init();
4572
-      swiper.navigation.update();
4573
-    },
4574
-    toEdge() {
4575
-      const swiper = this;
4576
-      swiper.navigation.update();
4577
-    },
4578
-    fromEdge() {
4579
-      const swiper = this;
4580
-      swiper.navigation.update();
4581
-    },
4582
-    destroy() {
4583
-      const swiper = this;
4584
-      swiper.navigation.destroy();
4585
-    },
4586
-    click(e) {
4587
-      const swiper = this;
4588
-      const { $nextEl, $prevEl } = swiper.navigation;
4589
-      if (
4590
-        swiper.params.navigation.hideOnClick
4591
-        && !$(e.target).is($prevEl)
4592
-        && !$(e.target).is($nextEl)
4593
-      ) {
4594
-        let isHidden;
4595
-        if ($nextEl) {
4596
-          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
4597
-        } else if ($prevEl) {
4598
-          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
4599
-        }
4600
-        if (isHidden === true) {
4601
-          swiper.emit('navigationShow', swiper);
4602
-        } else {
4603
-          swiper.emit('navigationHide', swiper);
4604
-        }
4605
-        if ($nextEl) {
4606
-          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
4607
-        }
4608
-        if ($prevEl) {
4609
-          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
4610
-        }
4611
-      }
4612
-    },
4613
-  },
4614
-};
4615
-
4616
-const Pagination = {
4617
-  update() {
4618
-    // Render || Update Pagination bullets/items
4619
-    const swiper = this;
4620
-    const rtl = swiper.rtl;
4621
-    const params = swiper.params.pagination;
4622
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4623
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4624
-    const $el = swiper.pagination.$el;
4625
-    // Current/Total
4626
-    let current;
4627
-    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4628
-    if (swiper.params.loop) {
4629
-      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
4630
-      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
4631
-        current -= (slidesLength - (swiper.loopedSlides * 2));
4632
-      }
4633
-      if (current > total - 1) current -= total;
4634
-      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
4635
-    } else if (typeof swiper.snapIndex !== 'undefined') {
4636
-      current = swiper.snapIndex;
4637
-    } else {
4638
-      current = swiper.activeIndex || 0;
4639
-    }
4640
-    // Types
4641
-    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
4642
-      const bullets = swiper.pagination.bullets;
4643
-      let firstIndex;
4644
-      let lastIndex;
4645
-      let midIndex;
4646
-      if (params.dynamicBullets) {
4647
-        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
4648
-        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
4649
-        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
4650
-          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
4651
-          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
4652
-            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
4653
-          } else if (swiper.pagination.dynamicBulletIndex < 0) {
4654
-            swiper.pagination.dynamicBulletIndex = 0;
4655
-          }
4656
-        }
4657
-        firstIndex = current - swiper.pagination.dynamicBulletIndex;
4658
-        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
4659
-        midIndex = (lastIndex + firstIndex) / 2;
4660
-      }
4661
-      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
4662
-      if ($el.length > 1) {
4663
-        bullets.each((index, bullet) => {
4664
-          const $bullet = $(bullet);
4665
-          const bulletIndex = $bullet.index();
4666
-          if (bulletIndex === current) {
4667
-            $bullet.addClass(params.bulletActiveClass);
4668
-          }
4669
-          if (params.dynamicBullets) {
4670
-            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
4671
-              $bullet.addClass(`${params.bulletActiveClass}-main`);
4672
-            }
4673
-            if (bulletIndex === firstIndex) {
4674
-              $bullet
4675
-                .prev()
4676
-                .addClass(`${params.bulletActiveClass}-prev`)
4677
-                .prev()
4678
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
4679
-            }
4680
-            if (bulletIndex === lastIndex) {
4681
-              $bullet
4682
-                .next()
4683
-                .addClass(`${params.bulletActiveClass}-next`)
4684
-                .next()
4685
-                .addClass(`${params.bulletActiveClass}-next-next`);
4686
-            }
4687
-          }
4688
-        });
4689
-      } else {
4690
-        const $bullet = bullets.eq(current);
4691
-        const bulletIndex = $bullet.index();
4692
-        $bullet.addClass(params.bulletActiveClass);
4693
-        if (params.dynamicBullets) {
4694
-          const $firstDisplayedBullet = bullets.eq(firstIndex);
4695
-          const $lastDisplayedBullet = bullets.eq(lastIndex);
4696
-          for (let i = firstIndex; i <= lastIndex; i += 1) {
4697
-            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
4698
-          }
4699
-          if (swiper.params.loop) {
4700
-            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
4701
-              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
4702
-                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
4703
-              }
4704
-              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
4705
-            } else {
4706
-              $firstDisplayedBullet
4707
-                .prev()
4708
-                .addClass(`${params.bulletActiveClass}-prev`)
4709
-                .prev()
4710
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
4711
-              $lastDisplayedBullet
4712
-                .next()
4713
-                .addClass(`${params.bulletActiveClass}-next`)
4714
-                .next()
4715
-                .addClass(`${params.bulletActiveClass}-next-next`);
4716
-            }
4717
-          } else {
4718
-            $firstDisplayedBullet
4719
-              .prev()
4720
-              .addClass(`${params.bulletActiveClass}-prev`)
4721
-              .prev()
4722
-              .addClass(`${params.bulletActiveClass}-prev-prev`);
4723
-            $lastDisplayedBullet
4724
-              .next()
4725
-              .addClass(`${params.bulletActiveClass}-next`)
4726
-              .next()
4727
-              .addClass(`${params.bulletActiveClass}-next-next`);
4728
-          }
4729
-        }
4730
-      }
4731
-      if (params.dynamicBullets) {
4732
-        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
4733
-        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
4734
-        const offsetProp = rtl ? 'right' : 'left';
4735
-        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
4736
-      }
4737
-    }
4738
-    if (params.type === 'fraction') {
4739
-      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
4740
-      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
4741
-    }
4742
-    if (params.type === 'progressbar') {
4743
-      let progressbarDirection;
4744
-      if (params.progressbarOpposite) {
4745
-        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
4746
-      } else {
4747
-        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
4748
-      }
4749
-      const scale = (current + 1) / total;
4750
-      let scaleX = 1;
4751
-      let scaleY = 1;
4752
-      if (progressbarDirection === 'horizontal') {
4753
-        scaleX = scale;
4754
-      } else {
4755
-        scaleY = scale;
4756
-      }
4757
-      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
4758
-    }
4759
-    if (params.type === 'custom' && params.renderCustom) {
4760
-      $el.html(params.renderCustom(swiper, current + 1, total));
4761
-      swiper.emit('paginationRender', swiper, $el[0]);
4762
-    } else {
4763
-      swiper.emit('paginationUpdate', swiper, $el[0]);
4764
-    }
4765
-    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4766
-  },
4767
-  render() {
4768
-    // Render Container
4769
-    const swiper = this;
4770
-    const params = swiper.params.pagination;
4771
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4772
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4773
-
4774
-    const $el = swiper.pagination.$el;
4775
-    let paginationHTML = '';
4776
-    if (params.type === 'bullets') {
4777
-      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4778
-      for (let i = 0; i < numberOfBullets; i += 1) {
4779
-        if (params.renderBullet) {
4780
-          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
4781
-        } else {
4782
-          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
4783
-        }
4784
-      }
4785
-      $el.html(paginationHTML);
4786
-      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);
4787
-    }
4788
-    if (params.type === 'fraction') {
4789
-      if (params.renderFraction) {
4790
-        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
4791
-      } else {
4792
-        paginationHTML = `<span class="${params.currentClass}"></span>`
4793
-        + ' / '
4794
-        + `<span class="${params.totalClass}"></span>`;
4795
-      }
4796
-      $el.html(paginationHTML);
4797
-    }
4798
-    if (params.type === 'progressbar') {
4799
-      if (params.renderProgressbar) {
4800
-        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
4801
-      } else {
4802
-        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
4803
-      }
4804
-      $el.html(paginationHTML);
4805
-    }
4806
-    if (params.type !== 'custom') {
4807
-      swiper.emit('paginationRender', swiper.pagination.$el[0]);
4808
-    }
4809
-  },
4810
-  init() {
4811
-    const swiper = this;
4812
-    const params = swiper.params.pagination;
4813
-    if (!params.el) return;
4814
-
4815
-    let $el = $(params.el);
4816
-    if ($el.length === 0) return;
4817
-
4818
-    if (
4819
-      swiper.params.uniqueNavElements
4820
-      && typeof params.el === 'string'
4821
-      && $el.length > 1
4822
-      && swiper.$el.find(params.el).length === 1
4823
-    ) {
4824
-      $el = swiper.$el.find(params.el);
4825
-    }
4826
-
4827
-    if (params.type === 'bullets' && params.clickable) {
4828
-      $el.addClass(params.clickableClass);
4829
-    }
4830
-
4831
-    $el.addClass(params.modifierClass + params.type);
4832
-
4833
-    if (params.type === 'bullets' && params.dynamicBullets) {
4834
-      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
4835
-      swiper.pagination.dynamicBulletIndex = 0;
4836
-      if (params.dynamicMainBullets < 1) {
4837
-        params.dynamicMainBullets = 1;
4838
-      }
4839
-    }
4840
-    if (params.type === 'progressbar' && params.progressbarOpposite) {
4841
-      $el.addClass(params.progressbarOppositeClass);
4842
-    }
4843
-
4844
-    if (params.clickable) {
4845
-      $el.on('click', `.${params.bulletClass}`, function onClick(e) {
4846
-        e.preventDefault();
4847
-        let index = $(this).index() * swiper.params.slidesPerGroup;
4848
-        if (swiper.params.loop) index += swiper.loopedSlides;
4849
-        swiper.slideTo(index);
4850
-      });
4851
-    }
4852
-
4853
-    Utils.extend(swiper.pagination, {
4854
-      $el,
4855
-      el: $el[0],
4856
-    });
4857
-  },
4858
-  destroy() {
4859
-    const swiper = this;
4860
-    const params = swiper.params.pagination;
4861
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
4862
-    const $el = swiper.pagination.$el;
4863
-
4864
-    $el.removeClass(params.hiddenClass);
4865
-    $el.removeClass(params.modifierClass + params.type);
4866
-    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
4867
-    if (params.clickable) {
4868
-      $el.off('click', `.${params.bulletClass}`);
4869
-    }
4870
-  },
4871
-};
4872
-
4873
-var pagination = {
4874
-  name: 'pagination',
4875
-  params: {
4876
-    pagination: {
4877
-      el: null,
4878
-      bulletElement: 'span',
4879
-      clickable: false,
4880
-      hideOnClick: false,
4881
-      renderBullet: null,
4882
-      renderProgressbar: null,
4883
-      renderFraction: null,
4884
-      renderCustom: null,
4885
-      progressbarOpposite: false,
4886
-      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
4887
-      dynamicBullets: false,
4888
-      dynamicMainBullets: 1,
4889
-      formatFractionCurrent: (number) => number,
4890
-      formatFractionTotal: (number) => number,
4891
-      bulletClass: 'swiper-pagination-bullet',
4892
-      bulletActiveClass: 'swiper-pagination-bullet-active',
4893
-      modifierClass: 'swiper-pagination-', // NEW
4894
-      currentClass: 'swiper-pagination-current',
4895
-      totalClass: 'swiper-pagination-total',
4896
-      hiddenClass: 'swiper-pagination-hidden',
4897
-      progressbarFillClass: 'swiper-pagination-progressbar-fill',
4898
-      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
4899
-      clickableClass: 'swiper-pagination-clickable', // NEW
4900
-      lockClass: 'swiper-pagination-lock',
4901
-    },
4902
-  },
4903
-  create() {
4904
-    const swiper = this;
4905
-    Utils.extend(swiper, {
4906
-      pagination: {
4907
-        init: Pagination.init.bind(swiper),
4908
-        render: Pagination.render.bind(swiper),
4909
-        update: Pagination.update.bind(swiper),
4910
-        destroy: Pagination.destroy.bind(swiper),
4911
-        dynamicBulletIndex: 0,
4912
-      },
4913
-    });
4914
-  },
4915
-  on: {
4916
-    init() {
4917
-      const swiper = this;
4918
-      swiper.pagination.init();
4919
-      swiper.pagination.render();
4920
-      swiper.pagination.update();
4921
-    },
4922
-    activeIndexChange() {
4923
-      const swiper = this;
4924
-      if (swiper.params.loop) {
4925
-        swiper.pagination.update();
4926
-      } else if (typeof swiper.snapIndex === 'undefined') {
4927
-        swiper.pagination.update();
4928
-      }
4929
-    },
4930
-    snapIndexChange() {
4931
-      const swiper = this;
4932
-      if (!swiper.params.loop) {
4933
-        swiper.pagination.update();
4934
-      }
4935
-    },
4936
-    slidesLengthChange() {
4937
-      const swiper = this;
4938
-      if (swiper.params.loop) {
4939
-        swiper.pagination.render();
4940
-        swiper.pagination.update();
4941
-      }
4942
-    },
4943
-    snapGridLengthChange() {
4944
-      const swiper = this;
4945
-      if (!swiper.params.loop) {
4946
-        swiper.pagination.render();
4947
-        swiper.pagination.update();
4948
-      }
4949
-    },
4950
-    destroy() {
4951
-      const swiper = this;
4952
-      swiper.pagination.destroy();
4953
-    },
4954
-    click(e) {
4955
-      const swiper = this;
4956
-      if (
4957
-        swiper.params.pagination.el
4958
-        && swiper.params.pagination.hideOnClick
4959
-        && swiper.pagination.$el.length > 0
4960
-        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
4961
-      ) {
4962
-        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
4963
-        if (isHidden === true) {
4964
-          swiper.emit('paginationShow', swiper);
4965
-        } else {
4966
-          swiper.emit('paginationHide', swiper);
4967
-        }
4968
-        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
4969
-      }
4970
-    },
4971
-  },
4972
-};
4973
-
4974
-const Scrollbar = {
4975
-  setTranslate() {
4976
-    const swiper = this;
4977
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
4978
-    const { scrollbar, rtlTranslate: rtl, progress } = swiper;
4979
-    const {
4980
-      dragSize, trackSize, $dragEl, $el,
4981
-    } = scrollbar;
4982
-    const params = swiper.params.scrollbar;
4983
-
4984
-    let newSize = dragSize;
4985
-    let newPos = (trackSize - dragSize) * progress;
4986
-    if (rtl) {
4987
-      newPos = -newPos;
4988
-      if (newPos > 0) {
4989
-        newSize = dragSize - newPos;
4990
-        newPos = 0;
4991
-      } else if (-newPos + dragSize > trackSize) {
4992
-        newSize = trackSize + newPos;
4993
-      }
4994
-    } else if (newPos < 0) {
4995
-      newSize = dragSize + newPos;
4996
-      newPos = 0;
4997
-    } else if (newPos + dragSize > trackSize) {
4998
-      newSize = trackSize - newPos;
4999
-    }
5000
-    if (swiper.isHorizontal()) {
5001
-      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
5002
-      $dragEl[0].style.width = `${newSize}px`;
5003
-    } else {
5004
-      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
5005
-      $dragEl[0].style.height = `${newSize}px`;
5006
-    }
5007
-    if (params.hide) {
5008
-      clearTimeout(swiper.scrollbar.timeout);
5009
-      $el[0].style.opacity = 1;
5010
-      swiper.scrollbar.timeout = setTimeout(() => {
5011
-        $el[0].style.opacity = 0;
5012
-        $el.transition(400);
5013
-      }, 1000);
5014
-    }
5015
-  },
5016
-  setTransition(duration) {
5017
-    const swiper = this;
5018
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5019
-    swiper.scrollbar.$dragEl.transition(duration);
5020
-  },
5021
-  updateSize() {
5022
-    const swiper = this;
5023
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
5024
-
5025
-    const { scrollbar } = swiper;
5026
-    const { $dragEl, $el } = scrollbar;
5027
-
5028
-    $dragEl[0].style.width = '';
5029
-    $dragEl[0].style.height = '';
5030
-    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
5031
-
5032
-    const divider = swiper.size / swiper.virtualSize;
5033
-    const moveDivider = divider * (trackSize / swiper.size);
5034
-    let dragSize;
5035
-    if (swiper.params.scrollbar.dragSize === 'auto') {
5036
-      dragSize = trackSize * divider;
5037
-    } else {
5038
-      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
5039
-    }
5040
-
5041
-    if (swiper.isHorizontal()) {
5042
-      $dragEl[0].style.width = `${dragSize}px`;
5043
-    } else {
5044
-      $dragEl[0].style.height = `${dragSize}px`;
5045
-    }
5046
-
5047
-    if (divider >= 1) {
5048
-      $el[0].style.display = 'none';
5049
-    } else {
5050
-      $el[0].style.display = '';
5051
-    }
5052
-    if (swiper.params.scrollbar.hide) {
5053
-      $el[0].style.opacity = 0;
5054
-    }
5055
-    Utils.extend(scrollbar, {
5056
-      trackSize,
5057
-      divider,
5058
-      moveDivider,
5059
-      dragSize,
5060
-    });
5061
-    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
5062
-  },
5063
-  getPointerPosition(e) {
5064
-    const swiper = this;
5065
-    if (swiper.isHorizontal()) {
5066
-      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
5067
-    }
5068
-    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
5069
-  },
5070
-  setDragPosition(e) {
5071
-    const swiper = this;
5072
-    const { scrollbar, rtlTranslate: rtl } = swiper;
5073
-    const {
5074
-      $el,
5075
-      dragSize,
5076
-      trackSize,
5077
-      dragStartPos,
5078
-    } = scrollbar;
5079
-
5080
-    let positionRatio;
5081
-    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
5082
-      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
5083
-    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
5084
-    if (rtl) {
5085
-      positionRatio = 1 - positionRatio;
5086
-    }
5087
-
5088
-    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
5089
-
5090
-    swiper.updateProgress(position);
5091
-    swiper.setTranslate(position);
5092
-    swiper.updateActiveIndex();
5093
-    swiper.updateSlidesClasses();
5094
-  },
5095
-  onDragStart(e) {
5096
-    const swiper = this;
5097
-    const params = swiper.params.scrollbar;
5098
-    const { scrollbar, $wrapperEl } = swiper;
5099
-    const { $el, $dragEl } = scrollbar;
5100
-    swiper.scrollbar.isTouched = true;
5101
-    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
5102
-      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
5103
-    e.preventDefault();
5104
-    e.stopPropagation();
5105
-
5106
-    $wrapperEl.transition(100);
5107
-    $dragEl.transition(100);
5108
-    scrollbar.setDragPosition(e);
5109
-
5110
-    clearTimeout(swiper.scrollbar.dragTimeout);
5111
-
5112
-    $el.transition(0);
5113
-    if (params.hide) {
5114
-      $el.css('opacity', 1);
5115
-    }
5116
-    if (swiper.params.cssMode) {
5117
-      swiper.$wrapperEl.css('scroll-snap-type', 'none');
5118
-    }
5119
-    swiper.emit('scrollbarDragStart', e);
5120
-  },
5121
-  onDragMove(e) {
5122
-    const swiper = this;
5123
-    const { scrollbar, $wrapperEl } = swiper;
5124
-    const { $el, $dragEl } = scrollbar;
5125
-
5126
-    if (!swiper.scrollbar.isTouched) return;
5127
-    if (e.preventDefault) e.preventDefault();
5128
-    else e.returnValue = false;
5129
-    scrollbar.setDragPosition(e);
5130
-    $wrapperEl.transition(0);
5131
-    $el.transition(0);
5132
-    $dragEl.transition(0);
5133
-    swiper.emit('scrollbarDragMove', e);
5134
-  },
5135
-  onDragEnd(e) {
5136
-    const swiper = this;
5137
-
5138
-    const params = swiper.params.scrollbar;
5139
-    const { scrollbar, $wrapperEl } = swiper;
5140
-    const { $el } = scrollbar;
5141
-
5142
-    if (!swiper.scrollbar.isTouched) return;
5143
-    swiper.scrollbar.isTouched = false;
5144
-    if (swiper.params.cssMode) {
5145
-      swiper.$wrapperEl.css('scroll-snap-type', '');
5146
-      $wrapperEl.transition('');
5147
-    }
5148
-    if (params.hide) {
5149
-      clearTimeout(swiper.scrollbar.dragTimeout);
5150
-      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {
5151
-        $el.css('opacity', 0);
5152
-        $el.transition(400);
5153
-      }, 1000);
5154
-    }
5155
-    swiper.emit('scrollbarDragEnd', e);
5156
-    if (params.snapOnRelease) {
5157
-      swiper.slideToClosest();
5158
-    }
5159
-  },
5160
-  enableDraggable() {
5161
-    const swiper = this;
5162
-    if (!swiper.params.scrollbar.el) return;
5163
-    const {
5164
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
5165
-    } = swiper;
5166
-    const $el = scrollbar.$el;
5167
-    const target = $el[0];
5168
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5169
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5170
-    if (!Support.touch) {
5171
-      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5172
-      document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5173
-      document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5174
-    } else {
5175
-      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
5176
-      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
5177
-      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
5178
-    }
5179
-  },
5180
-  disableDraggable() {
5181
-    const swiper = this;
5182
-    if (!swiper.params.scrollbar.el) return;
5183
-    const {
5184
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
5185
-    } = swiper;
5186
-    const $el = scrollbar.$el;
5187
-    const target = $el[0];
5188
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5189
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5190
-    if (!Support.touch) {
5191
-      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5192
-      document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5193
-      document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5194
-    } else {
5195
-      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
5196
-      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
5197
-      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
5198
-    }
5199
-  },
5200
-  init() {
5201
-    const swiper = this;
5202
-    if (!swiper.params.scrollbar.el) return;
5203
-    const { scrollbar, $el: $swiperEl } = swiper;
5204
-    const params = swiper.params.scrollbar;
5205
-
5206
-    let $el = $(params.el);
5207
-    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
5208
-      $el = $swiperEl.find(params.el);
5209
-    }
5210
-
5211
-    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
5212
-    if ($dragEl.length === 0) {
5213
-      $dragEl = $(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
5214
-      $el.append($dragEl);
5215
-    }
5216
-
5217
-    Utils.extend(scrollbar, {
5218
-      $el,
5219
-      el: $el[0],
5220
-      $dragEl,
5221
-      dragEl: $dragEl[0],
5222
-    });
5223
-
5224
-    if (params.draggable) {
5225
-      scrollbar.enableDraggable();
5226
-    }
5227
-  },
5228
-  destroy() {
5229
-    const swiper = this;
5230
-    swiper.scrollbar.disableDraggable();
5231
-  },
5232
-};
5233
-
5234
-var scrollbar = {
5235
-  name: 'scrollbar',
5236
-  params: {
5237
-    scrollbar: {
5238
-      el: null,
5239
-      dragSize: 'auto',
5240
-      hide: false,
5241
-      draggable: false,
5242
-      snapOnRelease: true,
5243
-      lockClass: 'swiper-scrollbar-lock',
5244
-      dragClass: 'swiper-scrollbar-drag',
5245
-    },
5246
-  },
5247
-  create() {
5248
-    const swiper = this;
5249
-    Utils.extend(swiper, {
5250
-      scrollbar: {
5251
-        init: Scrollbar.init.bind(swiper),
5252
-        destroy: Scrollbar.destroy.bind(swiper),
5253
-        updateSize: Scrollbar.updateSize.bind(swiper),
5254
-        setTranslate: Scrollbar.setTranslate.bind(swiper),
5255
-        setTransition: Scrollbar.setTransition.bind(swiper),
5256
-        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
5257
-        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
5258
-        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
5259
-        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
5260
-        onDragStart: Scrollbar.onDragStart.bind(swiper),
5261
-        onDragMove: Scrollbar.onDragMove.bind(swiper),
5262
-        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
5263
-        isTouched: false,
5264
-        timeout: null,
5265
-        dragTimeout: null,
5266
-      },
5267
-    });
5268
-  },
5269
-  on: {
5270
-    init() {
5271
-      const swiper = this;
5272
-      swiper.scrollbar.init();
5273
-      swiper.scrollbar.updateSize();
5274
-      swiper.scrollbar.setTranslate();
5275
-    },
5276
-    update() {
5277
-      const swiper = this;
5278
-      swiper.scrollbar.updateSize();
5279
-    },
5280
-    resize() {
5281
-      const swiper = this;
5282
-      swiper.scrollbar.updateSize();
5283
-    },
5284
-    observerUpdate() {
5285
-      const swiper = this;
5286
-      swiper.scrollbar.updateSize();
5287
-    },
5288
-    setTranslate() {
5289
-      const swiper = this;
5290
-      swiper.scrollbar.setTranslate();
5291
-    },
5292
-    setTransition(duration) {
5293
-      const swiper = this;
5294
-      swiper.scrollbar.setTransition(duration);
5295
-    },
5296
-    destroy() {
5297
-      const swiper = this;
5298
-      swiper.scrollbar.destroy();
5299
-    },
5300
-  },
5301
-};
5302
-
5303
-const Parallax = {
5304
-  setTransform(el, progress) {
5305
-    const swiper = this;
5306
-    const { rtl } = swiper;
5307
-
5308
-    const $el = $(el);
5309
-    const rtlFactor = rtl ? -1 : 1;
5310
-
5311
-    const p = $el.attr('data-swiper-parallax') || '0';
5312
-    let x = $el.attr('data-swiper-parallax-x');
5313
-    let y = $el.attr('data-swiper-parallax-y');
5314
-    const scale = $el.attr('data-swiper-parallax-scale');
5315
-    const opacity = $el.attr('data-swiper-parallax-opacity');
5316
-
5317
-    if (x || y) {
5318
-      x = x || '0';
5319
-      y = y || '0';
5320
-    } else if (swiper.isHorizontal()) {
5321
-      x = p;
5322
-      y = '0';
5323
-    } else {
5324
-      y = p;
5325
-      x = '0';
5326
-    }
5327
-
5328
-    if ((x).indexOf('%') >= 0) {
5329
-      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
5330
-    } else {
5331
-      x = `${x * progress * rtlFactor}px`;
5332
-    }
5333
-    if ((y).indexOf('%') >= 0) {
5334
-      y = `${parseInt(y, 10) * progress}%`;
5335
-    } else {
5336
-      y = `${y * progress}px`;
5337
-    }
5338
-
5339
-    if (typeof opacity !== 'undefined' && opacity !== null) {
5340
-      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
5341
-      $el[0].style.opacity = currentOpacity;
5342
-    }
5343
-    if (typeof scale === 'undefined' || scale === null) {
5344
-      $el.transform(`translate3d(${x}, ${y}, 0px)`);
5345
-    } else {
5346
-      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
5347
-      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
5348
-    }
5349
-  },
5350
-  setTranslate() {
5351
-    const swiper = this;
5352
-    const {
5353
-      $el, slides, progress, snapGrid,
5354
-    } = swiper;
5355
-    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5356
-      .each((index, el) => {
5357
-        swiper.parallax.setTransform(el, progress);
5358
-      });
5359
-    slides.each((slideIndex, slideEl) => {
5360
-      let slideProgress = slideEl.progress;
5361
-      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
5362
-        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
5363
-      }
5364
-      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
5365
-      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5366
-        .each((index, el) => {
5367
-          swiper.parallax.setTransform(el, slideProgress);
5368
-        });
5369
-    });
5370
-  },
5371
-  setTransition(duration = this.params.speed) {
5372
-    const swiper = this;
5373
-    const { $el } = swiper;
5374
-    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
5375
-      .each((index, parallaxEl) => {
5376
-        const $parallaxEl = $(parallaxEl);
5377
-        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
5378
-        if (duration === 0) parallaxDuration = 0;
5379
-        $parallaxEl.transition(parallaxDuration);
5380
-      });
5381
-  },
5382
-};
5383
-
5384
-var parallax = {
5385
-  name: 'parallax',
5386
-  params: {
5387
-    parallax: {
5388
-      enabled: false,
5389
-    },
5390
-  },
5391
-  create() {
5392
-    const swiper = this;
5393
-    Utils.extend(swiper, {
5394
-      parallax: {
5395
-        setTransform: Parallax.setTransform.bind(swiper),
5396
-        setTranslate: Parallax.setTranslate.bind(swiper),
5397
-        setTransition: Parallax.setTransition.bind(swiper),
5398
-      },
5399
-    });
5400
-  },
5401
-  on: {
5402
-    beforeInit() {
5403
-      const swiper = this;
5404
-      if (!swiper.params.parallax.enabled) return;
5405
-      swiper.params.watchSlidesProgress = true;
5406
-      swiper.originalParams.watchSlidesProgress = true;
5407
-    },
5408
-    init() {
5409
-      const swiper = this;
5410
-      if (!swiper.params.parallax.enabled) return;
5411
-      swiper.parallax.setTranslate();
5412
-    },
5413
-    setTranslate() {
5414
-      const swiper = this;
5415
-      if (!swiper.params.parallax.enabled) return;
5416
-      swiper.parallax.setTranslate();
5417
-    },
5418
-    setTransition(duration) {
5419
-      const swiper = this;
5420
-      if (!swiper.params.parallax.enabled) return;
5421
-      swiper.parallax.setTransition(duration);
5422
-    },
5423
-  },
5424
-};
5425
-
5426
-const Zoom = {
5427
-  // Calc Scale From Multi-touches
5428
-  getDistanceBetweenTouches(e) {
5429
-    if (e.targetTouches.length < 2) return 1;
5430
-    const x1 = e.targetTouches[0].pageX;
5431
-    const y1 = e.targetTouches[0].pageY;
5432
-    const x2 = e.targetTouches[1].pageX;
5433
-    const y2 = e.targetTouches[1].pageY;
5434
-    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));
5435
-    return distance;
5436
-  },
5437
-  // Events
5438
-  onGestureStart(e) {
5439
-    const swiper = this;
5440
-    const params = swiper.params.zoom;
5441
-    const zoom = swiper.zoom;
5442
-    const { gesture } = zoom;
5443
-    zoom.fakeGestureTouched = false;
5444
-    zoom.fakeGestureMoved = false;
5445
-    if (!Support.gestures) {
5446
-      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
5447
-        return;
5448
-      }
5449
-      zoom.fakeGestureTouched = true;
5450
-      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
5451
-    }
5452
-    if (!gesture.$slideEl || !gesture.$slideEl.length) {
5453
-      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);
5454
-      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5455
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5456
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5457
-      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5458
-      if (gesture.$imageWrapEl.length === 0) {
5459
-        gesture.$imageEl = undefined;
5460
-        return;
5461
-      }
5462
-    }
5463
-    if (gesture.$imageEl) {
5464
-      gesture.$imageEl.transition(0);
5465
-    }
5466
-    swiper.zoom.isScaling = true;
5467
-  },
5468
-  onGestureChange(e) {
5469
-    const swiper = this;
5470
-    const params = swiper.params.zoom;
5471
-    const zoom = swiper.zoom;
5472
-    const { gesture } = zoom;
5473
-    if (!Support.gestures) {
5474
-      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
5475
-        return;
5476
-      }
5477
-      zoom.fakeGestureMoved = true;
5478
-      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
5479
-    }
5480
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5481
-    if (Support.gestures) {
5482
-      zoom.scale = e.scale * zoom.currentScale;
5483
-    } else {
5484
-      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
5485
-    }
5486
-    if (zoom.scale > gesture.maxRatio) {
5487
-      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);
5488
-    }
5489
-    if (zoom.scale < params.minRatio) {
5490
-      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);
5491
-    }
5492
-    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5493
-  },
5494
-  onGestureEnd(e) {
5495
-    const swiper = this;
5496
-    const params = swiper.params.zoom;
5497
-    const zoom = swiper.zoom;
5498
-    const { gesture } = zoom;
5499
-    if (!Support.gestures) {
5500
-      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
5501
-        return;
5502
-      }
5503
-      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
5504
-        return;
5505
-      }
5506
-      zoom.fakeGestureTouched = false;
5507
-      zoom.fakeGestureMoved = false;
5508
-    }
5509
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5510
-    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
5511
-    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5512
-    zoom.currentScale = zoom.scale;
5513
-    zoom.isScaling = false;
5514
-    if (zoom.scale === 1) gesture.$slideEl = undefined;
5515
-  },
5516
-  onTouchStart(e) {
5517
-    const swiper = this;
5518
-    const zoom = swiper.zoom;
5519
-    const { gesture, image } = zoom;
5520
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5521
-    if (image.isTouched) return;
5522
-    if (Device.android && e.cancelable) e.preventDefault();
5523
-    image.isTouched = true;
5524
-    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
5525
-    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
5526
-  },
5527
-  onTouchMove(e) {
5528
-    const swiper = this;
5529
-    const zoom = swiper.zoom;
5530
-    const { gesture, image, velocity } = zoom;
5531
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5532
-    swiper.allowClick = false;
5533
-    if (!image.isTouched || !gesture.$slideEl) return;
5534
-
5535
-    if (!image.isMoved) {
5536
-      image.width = gesture.$imageEl[0].offsetWidth;
5537
-      image.height = gesture.$imageEl[0].offsetHeight;
5538
-      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
5539
-      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
5540
-      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
5541
-      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
5542
-      gesture.$imageWrapEl.transition(0);
5543
-      if (swiper.rtl) {
5544
-        image.startX = -image.startX;
5545
-        image.startY = -image.startY;
5546
-      }
5547
-    }
5548
-    // Define if we need image drag
5549
-    const scaledWidth = image.width * zoom.scale;
5550
-    const scaledHeight = image.height * zoom.scale;
5551
-
5552
-    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
5553
-
5554
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
5555
-    image.maxX = -image.minX;
5556
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
5557
-    image.maxY = -image.minY;
5558
-
5559
-    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
5560
-    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
5561
-
5562
-    if (!image.isMoved && !zoom.isScaling) {
5563
-      if (
5564
-        swiper.isHorizontal()
5565
-        && (
5566
-          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
5567
-          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
5568
-        )
5569
-      ) {
5570
-        image.isTouched = false;
5571
-        return;
5572
-      } if (
5573
-        !swiper.isHorizontal()
5574
-        && (
5575
-          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
5576
-          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
5577
-        )
5578
-      ) {
5579
-        image.isTouched = false;
5580
-        return;
5581
-      }
5582
-    }
5583
-    if (e.cancelable) {
5584
-      e.preventDefault();
5585
-    }
5586
-    e.stopPropagation();
5587
-
5588
-    image.isMoved = true;
5589
-    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
5590
-    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
5591
-
5592
-    if (image.currentX < image.minX) {
5593
-      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);
5594
-    }
5595
-    if (image.currentX > image.maxX) {
5596
-      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);
5597
-    }
5598
-
5599
-    if (image.currentY < image.minY) {
5600
-      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);
5601
-    }
5602
-    if (image.currentY > image.maxY) {
5603
-      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);
5604
-    }
5605
-
5606
-    // Velocity
5607
-    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
5608
-    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
5609
-    if (!velocity.prevTime) velocity.prevTime = Date.now();
5610
-    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
5611
-    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
5612
-    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
5613
-    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
5614
-    velocity.prevPositionX = image.touchesCurrent.x;
5615
-    velocity.prevPositionY = image.touchesCurrent.y;
5616
-    velocity.prevTime = Date.now();
5617
-
5618
-    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
5619
-  },
5620
-  onTouchEnd() {
5621
-    const swiper = this;
5622
-    const zoom = swiper.zoom;
5623
-    const { gesture, image, velocity } = zoom;
5624
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5625
-    if (!image.isTouched || !image.isMoved) {
5626
-      image.isTouched = false;
5627
-      image.isMoved = false;
5628
-      return;
5629
-    }
5630
-    image.isTouched = false;
5631
-    image.isMoved = false;
5632
-    let momentumDurationX = 300;
5633
-    let momentumDurationY = 300;
5634
-    const momentumDistanceX = velocity.x * momentumDurationX;
5635
-    const newPositionX = image.currentX + momentumDistanceX;
5636
-    const momentumDistanceY = velocity.y * momentumDurationY;
5637
-    const newPositionY = image.currentY + momentumDistanceY;
5638
-
5639
-    // Fix duration
5640
-    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
5641
-    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
5642
-    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
5643
-
5644
-    image.currentX = newPositionX;
5645
-    image.currentY = newPositionY;
5646
-
5647
-    // Define if we need image drag
5648
-    const scaledWidth = image.width * zoom.scale;
5649
-    const scaledHeight = image.height * zoom.scale;
5650
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
5651
-    image.maxX = -image.minX;
5652
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
5653
-    image.maxY = -image.minY;
5654
-    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
5655
-    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
5656
-
5657
-    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
5658
-  },
5659
-  onTransitionEnd() {
5660
-    const swiper = this;
5661
-    const zoom = swiper.zoom;
5662
-    const { gesture } = zoom;
5663
-    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
5664
-      if (gesture.$imageEl) {
5665
-        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
5666
-      }
5667
-      if (gesture.$imageWrapEl) {
5668
-        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
5669
-      }
5670
-
5671
-      zoom.scale = 1;
5672
-      zoom.currentScale = 1;
5673
-
5674
-      gesture.$slideEl = undefined;
5675
-      gesture.$imageEl = undefined;
5676
-      gesture.$imageWrapEl = undefined;
5677
-    }
5678
-  },
5679
-  // Toggle Zoom
5680
-  toggle(e) {
5681
-    const swiper = this;
5682
-    const zoom = swiper.zoom;
5683
-
5684
-    if (zoom.scale && zoom.scale !== 1) {
5685
-      // Zoom Out
5686
-      zoom.out();
5687
-    } else {
5688
-      // Zoom In
5689
-      zoom.in(e);
5690
-    }
5691
-  },
5692
-  in(e) {
5693
-    const swiper = this;
5694
-
5695
-    const zoom = swiper.zoom;
5696
-    const params = swiper.params.zoom;
5697
-    const { gesture, image } = zoom;
5698
-
5699
-    if (!gesture.$slideEl) {
5700
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5701
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
5702
-      } else {
5703
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5704
-      }
5705
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5706
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5707
-    }
5708
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5709
-
5710
-    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
5711
-
5712
-    let touchX;
5713
-    let touchY;
5714
-    let offsetX;
5715
-    let offsetY;
5716
-    let diffX;
5717
-    let diffY;
5718
-    let translateX;
5719
-    let translateY;
5720
-    let imageWidth;
5721
-    let imageHeight;
5722
-    let scaledWidth;
5723
-    let scaledHeight;
5724
-    let translateMinX;
5725
-    let translateMinY;
5726
-    let translateMaxX;
5727
-    let translateMaxY;
5728
-    let slideWidth;
5729
-    let slideHeight;
5730
-
5731
-    if (typeof image.touchesStart.x === 'undefined' && e) {
5732
-      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
5733
-      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
5734
-    } else {
5735
-      touchX = image.touchesStart.x;
5736
-      touchY = image.touchesStart.y;
5737
-    }
5738
-
5739
-    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5740
-    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5741
-    if (e) {
5742
-      slideWidth = gesture.$slideEl[0].offsetWidth;
5743
-      slideHeight = gesture.$slideEl[0].offsetHeight;
5744
-      offsetX = gesture.$slideEl.offset().left;
5745
-      offsetY = gesture.$slideEl.offset().top;
5746
-      diffX = (offsetX + (slideWidth / 2)) - touchX;
5747
-      diffY = (offsetY + (slideHeight / 2)) - touchY;
5748
-
5749
-      imageWidth = gesture.$imageEl[0].offsetWidth;
5750
-      imageHeight = gesture.$imageEl[0].offsetHeight;
5751
-      scaledWidth = imageWidth * zoom.scale;
5752
-      scaledHeight = imageHeight * zoom.scale;
5753
-
5754
-      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
5755
-      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
5756
-      translateMaxX = -translateMinX;
5757
-      translateMaxY = -translateMinY;
5758
-
5759
-      translateX = diffX * zoom.scale;
5760
-      translateY = diffY * zoom.scale;
5761
-
5762
-      if (translateX < translateMinX) {
5763
-        translateX = translateMinX;
5764
-      }
5765
-      if (translateX > translateMaxX) {
5766
-        translateX = translateMaxX;
5767
-      }
5768
-
5769
-      if (translateY < translateMinY) {
5770
-        translateY = translateMinY;
5771
-      }
5772
-      if (translateY > translateMaxY) {
5773
-        translateY = translateMaxY;
5774
-      }
5775
-    } else {
5776
-      translateX = 0;
5777
-      translateY = 0;
5778
-    }
5779
-    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
5780
-    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
5781
-  },
5782
-  out() {
5783
-    const swiper = this;
5784
-
5785
-    const zoom = swiper.zoom;
5786
-    const params = swiper.params.zoom;
5787
-    const { gesture } = zoom;
5788
-
5789
-    if (!gesture.$slideEl) {
5790
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
5791
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
5792
-      } else {
5793
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
5794
-      }
5795
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
5796
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
5797
-    }
5798
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
5799
-
5800
-    zoom.scale = 1;
5801
-    zoom.currentScale = 1;
5802
-    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
5803
-    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
5804
-    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
5805
-    gesture.$slideEl = undefined;
5806
-  },
5807
-  // Attach/Detach Events
5808
-  enable() {
5809
-    const swiper = this;
5810
-    const zoom = swiper.zoom;
5811
-    if (zoom.enabled) return;
5812
-    zoom.enabled = true;
5813
-
5814
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
5815
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
5816
-
5817
-    const slideSelector = `.${swiper.params.slideClass}`;
5818
-
5819
-    // Scale image
5820
-    if (Support.gestures) {
5821
-      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
5822
-      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
5823
-      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
5824
-    } else if (swiper.touchEvents.start === 'touchstart') {
5825
-      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
5826
-      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
5827
-      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
5828
-      if (swiper.touchEvents.cancel) {
5829
-        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
5830
-      }
5831
-    }
5832
-
5833
-    // Move image
5834
-    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
5835
-  },
5836
-  disable() {
5837
-    const swiper = this;
5838
-    const zoom = swiper.zoom;
5839
-    if (!zoom.enabled) return;
5840
-
5841
-    swiper.zoom.enabled = false;
5842
-
5843
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
5844
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
5845
-
5846
-    const slideSelector = `.${swiper.params.slideClass}`;
5847
-
5848
-    // Scale image
5849
-    if (Support.gestures) {
5850
-      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
5851
-      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
5852
-      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
5853
-    } else if (swiper.touchEvents.start === 'touchstart') {
5854
-      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
5855
-      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
5856
-      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
5857
-      if (swiper.touchEvents.cancel) {
5858
-        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
5859
-      }
5860
-    }
5861
-
5862
-    // Move image
5863
-    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
5864
-  },
5865
-};
5866
-
5867
-var zoom = {
5868
-  name: 'zoom',
5869
-  params: {
5870
-    zoom: {
5871
-      enabled: false,
5872
-      maxRatio: 3,
5873
-      minRatio: 1,
5874
-      toggle: true,
5875
-      containerClass: 'swiper-zoom-container',
5876
-      zoomedSlideClass: 'swiper-slide-zoomed',
5877
-    },
5878
-  },
5879
-  create() {
5880
-    const swiper = this;
5881
-    const zoom = {
5882
-      enabled: false,
5883
-      scale: 1,
5884
-      currentScale: 1,
5885
-      isScaling: false,
5886
-      gesture: {
5887
-        $slideEl: undefined,
5888
-        slideWidth: undefined,
5889
-        slideHeight: undefined,
5890
-        $imageEl: undefined,
5891
-        $imageWrapEl: undefined,
5892
-        maxRatio: 3,
5893
-      },
5894
-      image: {
5895
-        isTouched: undefined,
5896
-        isMoved: undefined,
5897
-        currentX: undefined,
5898
-        currentY: undefined,
5899
-        minX: undefined,
5900
-        minY: undefined,
5901
-        maxX: undefined,
5902
-        maxY: undefined,
5903
-        width: undefined,
5904
-        height: undefined,
5905
-        startX: undefined,
5906
-        startY: undefined,
5907
-        touchesStart: {},
5908
-        touchesCurrent: {},
5909
-      },
5910
-      velocity: {
5911
-        x: undefined,
5912
-        y: undefined,
5913
-        prevPositionX: undefined,
5914
-        prevPositionY: undefined,
5915
-        prevTime: undefined,
5916
-      },
5917
-    };
5918
-
5919
-    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {
5920
-      zoom[methodName] = Zoom[methodName].bind(swiper);
5921
-    });
5922
-    Utils.extend(swiper, {
5923
-      zoom,
5924
-    });
5925
-
5926
-    let scale = 1;
5927
-    Object.defineProperty(swiper.zoom, 'scale', {
5928
-      get() {
5929
-        return scale;
5930
-      },
5931
-      set(value) {
5932
-        if (scale !== value) {
5933
-          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
5934
-          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
5935
-          swiper.emit('zoomChange', value, imageEl, slideEl);
5936
-        }
5937
-        scale = value;
5938
-      },
5939
-    });
5940
-  },
5941
-  on: {
5942
-    init() {
5943
-      const swiper = this;
5944
-      if (swiper.params.zoom.enabled) {
5945
-        swiper.zoom.enable();
5946
-      }
5947
-    },
5948
-    destroy() {
5949
-      const swiper = this;
5950
-      swiper.zoom.disable();
5951
-    },
5952
-    touchStart(e) {
5953
-      const swiper = this;
5954
-      if (!swiper.zoom.enabled) return;
5955
-      swiper.zoom.onTouchStart(e);
5956
-    },
5957
-    touchEnd(e) {
5958
-      const swiper = this;
5959
-      if (!swiper.zoom.enabled) return;
5960
-      swiper.zoom.onTouchEnd(e);
5961
-    },
5962
-    doubleTap(e) {
5963
-      const swiper = this;
5964
-      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
5965
-        swiper.zoom.toggle(e);
5966
-      }
5967
-    },
5968
-    transitionEnd() {
5969
-      const swiper = this;
5970
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
5971
-        swiper.zoom.onTransitionEnd();
5972
-      }
5973
-    },
5974
-    slideChange() {
5975
-      const swiper = this;
5976
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
5977
-        swiper.zoom.onTransitionEnd();
5978
-      }
5979
-    },
5980
-  },
5981
-};
5982
-
5983
-const Lazy = {
5984
-  loadInSlide(index, loadInDuplicate = true) {
5985
-    const swiper = this;
5986
-    const params = swiper.params.lazy;
5987
-    if (typeof index === 'undefined') return;
5988
-    if (swiper.slides.length === 0) return;
5989
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5990
-
5991
-    const $slideEl = isVirtual
5992
-      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`)
5993
-      : swiper.slides.eq(index);
5994
-
5995
-    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
5996
-    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
5997
-      $images = $images.add($slideEl[0]);
5998
-    }
5999
-    if ($images.length === 0) return;
6000
-
6001
-    $images.each((imageIndex, imageEl) => {
6002
-      const $imageEl = $(imageEl);
6003
-      $imageEl.addClass(params.loadingClass);
6004
-
6005
-      const background = $imageEl.attr('data-background');
6006
-      const src = $imageEl.attr('data-src');
6007
-      const srcset = $imageEl.attr('data-srcset');
6008
-      const sizes = $imageEl.attr('data-sizes');
6009
-      const $pictureEl = $imageEl.parent('picture');
6010
-
6011
-      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {
6012
-        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;
6013
-        if (background) {
6014
-          $imageEl.css('background-image', `url("${background}")`);
6015
-          $imageEl.removeAttr('data-background');
6016
-        } else {
6017
-          if (srcset) {
6018
-            $imageEl.attr('srcset', srcset);
6019
-            $imageEl.removeAttr('data-srcset');
6020
-          }
6021
-          if (sizes) {
6022
-            $imageEl.attr('sizes', sizes);
6023
-            $imageEl.removeAttr('data-sizes');
6024
-          }
6025
-          if ($pictureEl.length) {
6026
-            $pictureEl.children('source').each((sourceIndex, sourceEl) => {
6027
-              const $source = $(sourceEl);
6028
-
6029
-              if ($source.attr('data-srcset')) {
6030
-                $source.attr('srcset', $source.attr('data-srcset'));
6031
-                $source.removeAttr('data-srcset');
6032
-              }
6033
-            });
6034
-          }
6035
-          if (src) {
6036
-            $imageEl.attr('src', src);
6037
-            $imageEl.removeAttr('data-src');
6038
-          }
6039
-        }
6040
-
6041
-        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
6042
-        $slideEl.find(`.${params.preloaderClass}`).remove();
6043
-        if (swiper.params.loop && loadInDuplicate) {
6044
-          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
6045
-          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
6046
-            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
6047
-            swiper.lazy.loadInSlide(originalSlide.index(), false);
6048
-          } else {
6049
-            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
6050
-            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
6051
-          }
6052
-        }
6053
-        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
6054
-        if (swiper.params.autoHeight) {
6055
-          swiper.updateAutoHeight();
6056
-        }
6057
-      });
6058
-
6059
-      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
6060
-    });
6061
-  },
6062
-  load() {
6063
-    const swiper = this;
6064
-    const {
6065
-      $wrapperEl, params: swiperParams, slides, activeIndex,
6066
-    } = swiper;
6067
-    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
6068
-    const params = swiperParams.lazy;
6069
-
6070
-    let slidesPerView = swiperParams.slidesPerView;
6071
-    if (slidesPerView === 'auto') {
6072
-      slidesPerView = 0;
6073
-    }
6074
-
6075
-    function slideExist(index) {
6076
-      if (isVirtual) {
6077
-        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
6078
-          return true;
6079
-        }
6080
-      } else if (slides[index]) return true;
6081
-      return false;
6082
-    }
6083
-
6084
-    function slideIndex(slideEl) {
6085
-      if (isVirtual) {
6086
-        return $(slideEl).attr('data-swiper-slide-index');
6087
-      }
6088
-      return $(slideEl).index();
6089
-    }
6090
-
6091
-    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
6092
-    if (swiper.params.watchSlidesVisibility) {
6093
-      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
6094
-        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
6095
-        swiper.lazy.loadInSlide(index);
6096
-      });
6097
-    } else if (slidesPerView > 1) {
6098
-      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
6099
-        if (slideExist(i)) swiper.lazy.loadInSlide(i);
6100
-      }
6101
-    } else {
6102
-      swiper.lazy.loadInSlide(activeIndex);
6103
-    }
6104
-    if (params.loadPrevNext) {
6105
-      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
6106
-        const amount = params.loadPrevNextAmount;
6107
-        const spv = slidesPerView;
6108
-        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
6109
-        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
6110
-        // Next Slides
6111
-        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
6112
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6113
-        }
6114
-        // Prev Slides
6115
-        for (let i = minIndex; i < activeIndex; i += 1) {
6116
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
6117
-        }
6118
-      } else {
6119
-        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
6120
-        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
6121
-
6122
-        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
6123
-        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
6124
-      }
6125
-    }
6126
-  },
6127
-};
6128
-
6129
-var lazy = {
6130
-  name: 'lazy',
6131
-  params: {
6132
-    lazy: {
6133
-      enabled: false,
6134
-      loadPrevNext: false,
6135
-      loadPrevNextAmount: 1,
6136
-      loadOnTransitionStart: false,
6137
-
6138
-      elementClass: 'swiper-lazy',
6139
-      loadingClass: 'swiper-lazy-loading',
6140
-      loadedClass: 'swiper-lazy-loaded',
6141
-      preloaderClass: 'swiper-lazy-preloader',
6142
-    },
6143
-  },
6144
-  create() {
6145
-    const swiper = this;
6146
-    Utils.extend(swiper, {
6147
-      lazy: {
6148
-        initialImageLoaded: false,
6149
-        load: Lazy.load.bind(swiper),
6150
-        loadInSlide: Lazy.loadInSlide.bind(swiper),
6151
-      },
6152
-    });
6153
-  },
6154
-  on: {
6155
-    beforeInit() {
6156
-      const swiper = this;
6157
-      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
6158
-        swiper.params.preloadImages = false;
6159
-      }
6160
-    },
6161
-    init() {
6162
-      const swiper = this;
6163
-      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
6164
-        swiper.lazy.load();
6165
-      }
6166
-    },
6167
-    scroll() {
6168
-      const swiper = this;
6169
-      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
6170
-        swiper.lazy.load();
6171
-      }
6172
-    },
6173
-    resize() {
6174
-      const swiper = this;
6175
-      if (swiper.params.lazy.enabled) {
6176
-        swiper.lazy.load();
6177
-      }
6178
-    },
6179
-    scrollbarDragMove() {
6180
-      const swiper = this;
6181
-      if (swiper.params.lazy.enabled) {
6182
-        swiper.lazy.load();
6183
-      }
6184
-    },
6185
-    transitionStart() {
6186
-      const swiper = this;
6187
-      if (swiper.params.lazy.enabled) {
6188
-        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
6189
-          swiper.lazy.load();
6190
-        }
6191
-      }
6192
-    },
6193
-    transitionEnd() {
6194
-      const swiper = this;
6195
-      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
6196
-        swiper.lazy.load();
6197
-      }
6198
-    },
6199
-    slideChange() {
6200
-      const swiper = this;
6201
-      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
6202
-        swiper.lazy.load();
6203
-      }
6204
-    },
6205
-  },
6206
-};
6207
-
6208
-/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
6209
-
6210
-const Controller = {
6211
-  LinearSpline: function LinearSpline(x, y) {
6212
-    const binarySearch = (function search() {
6213
-      let maxIndex;
6214
-      let minIndex;
6215
-      let guess;
6216
-      return (array, val) => {
6217
-        minIndex = -1;
6218
-        maxIndex = array.length;
6219
-        while (maxIndex - minIndex > 1) {
6220
-          guess = maxIndex + minIndex >> 1;
6221
-          if (array[guess] <= val) {
6222
-            minIndex = guess;
6223
-          } else {
6224
-            maxIndex = guess;
6225
-          }
6226
-        }
6227
-        return maxIndex;
6228
-      };
6229
-    }());
6230
-    this.x = x;
6231
-    this.y = y;
6232
-    this.lastIndex = x.length - 1;
6233
-    // Given an x value (x2), return the expected y2 value:
6234
-    // (x1,y1) is the known point before given value,
6235
-    // (x3,y3) is the known point after given value.
6236
-    let i1;
6237
-    let i3;
6238
-
6239
-    this.interpolate = function interpolate(x2) {
6240
-      if (!x2) return 0;
6241
-
6242
-      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
6243
-      i3 = binarySearch(this.x, x2);
6244
-      i1 = i3 - 1;
6245
-
6246
-      // We have our indexes i1 & i3, so we can calculate already:
6247
-      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
6248
-      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
6249
-    };
6250
-    return this;
6251
-  },
6252
-  // xxx: for now i will just save one spline function to to
6253
-  getInterpolateFunction(c) {
6254
-    const swiper = this;
6255
-    if (!swiper.controller.spline) {
6256
-      swiper.controller.spline = swiper.params.loop
6257
-        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
6258
-        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
6259
-    }
6260
-  },
6261
-  setTranslate(setTranslate, byController) {
6262
-    const swiper = this;
6263
-    const controlled = swiper.controller.control;
6264
-    let multiplier;
6265
-    let controlledTranslate;
6266
-    function setControlledTranslate(c) {
6267
-      // this will create an Interpolate function based on the snapGrids
6268
-      // x is the Grid of the scrolled scroller and y will be the controlled scroller
6269
-      // it makes sense to create this only once and recall it for the interpolation
6270
-      // the function does a lot of value caching for performance
6271
-      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
6272
-      if (swiper.params.controller.by === 'slide') {
6273
-        swiper.controller.getInterpolateFunction(c);
6274
-        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
6275
-        // but it did not work out
6276
-        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
6277
-      }
6278
-
6279
-      if (!controlledTranslate || swiper.params.controller.by === 'container') {
6280
-        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
6281
-        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
6282
-      }
6283
-
6284
-      if (swiper.params.controller.inverse) {
6285
-        controlledTranslate = c.maxTranslate() - controlledTranslate;
6286
-      }
6287
-      c.updateProgress(controlledTranslate);
6288
-      c.setTranslate(controlledTranslate, swiper);
6289
-      c.updateActiveIndex();
6290
-      c.updateSlidesClasses();
6291
-    }
6292
-    if (Array.isArray(controlled)) {
6293
-      for (let i = 0; i < controlled.length; i += 1) {
6294
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6295
-          setControlledTranslate(controlled[i]);
6296
-        }
6297
-      }
6298
-    } else if (controlled instanceof Swiper && byController !== controlled) {
6299
-      setControlledTranslate(controlled);
6300
-    }
6301
-  },
6302
-  setTransition(duration, byController) {
6303
-    const swiper = this;
6304
-    const controlled = swiper.controller.control;
6305
-    let i;
6306
-    function setControlledTransition(c) {
6307
-      c.setTransition(duration, swiper);
6308
-      if (duration !== 0) {
6309
-        c.transitionStart();
6310
-        if (c.params.autoHeight) {
6311
-          Utils.nextTick(() => {
6312
-            c.updateAutoHeight();
6313
-          });
6314
-        }
6315
-        c.$wrapperEl.transitionEnd(() => {
6316
-          if (!controlled) return;
6317
-          if (c.params.loop && swiper.params.controller.by === 'slide') {
6318
-            c.loopFix();
6319
-          }
6320
-          c.transitionEnd();
6321
-        });
6322
-      }
6323
-    }
6324
-    if (Array.isArray(controlled)) {
6325
-      for (i = 0; i < controlled.length; i += 1) {
6326
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6327
-          setControlledTransition(controlled[i]);
6328
-        }
6329
-      }
6330
-    } else if (controlled instanceof Swiper && byController !== controlled) {
6331
-      setControlledTransition(controlled);
6332
-    }
6333
-  },
6334
-};
6335
-var controller = {
6336
-  name: 'controller',
6337
-  params: {
6338
-    controller: {
6339
-      control: undefined,
6340
-      inverse: false,
6341
-      by: 'slide', // or 'container'
6342
-    },
6343
-  },
6344
-  create() {
6345
-    const swiper = this;
6346
-    Utils.extend(swiper, {
6347
-      controller: {
6348
-        control: swiper.params.controller.control,
6349
-        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
6350
-        setTranslate: Controller.setTranslate.bind(swiper),
6351
-        setTransition: Controller.setTransition.bind(swiper),
6352
-      },
6353
-    });
6354
-  },
6355
-  on: {
6356
-    update() {
6357
-      const swiper = this;
6358
-      if (!swiper.controller.control) return;
6359
-      if (swiper.controller.spline) {
6360
-        swiper.controller.spline = undefined;
6361
-        delete swiper.controller.spline;
6362
-      }
6363
-    },
6364
-    resize() {
6365
-      const swiper = this;
6366
-      if (!swiper.controller.control) return;
6367
-      if (swiper.controller.spline) {
6368
-        swiper.controller.spline = undefined;
6369
-        delete swiper.controller.spline;
6370
-      }
6371
-    },
6372
-    observerUpdate() {
6373
-      const swiper = this;
6374
-      if (!swiper.controller.control) return;
6375
-      if (swiper.controller.spline) {
6376
-        swiper.controller.spline = undefined;
6377
-        delete swiper.controller.spline;
6378
-      }
6379
-    },
6380
-    setTranslate(translate, byController) {
6381
-      const swiper = this;
6382
-      if (!swiper.controller.control) return;
6383
-      swiper.controller.setTranslate(translate, byController);
6384
-    },
6385
-    setTransition(duration, byController) {
6386
-      const swiper = this;
6387
-      if (!swiper.controller.control) return;
6388
-      swiper.controller.setTransition(duration, byController);
6389
-    },
6390
-  },
6391
-};
6392
-
6393
-const a11y = {
6394
-  makeElFocusable($el) {
6395
-    $el.attr('tabIndex', '0');
6396
-    return $el;
6397
-  },
6398
-  makeElNotFocusable($el) {
6399
-    $el.attr('tabIndex', '-1');
6400
-    return $el;
6401
-  },
6402
-  addElRole($el, role) {
6403
-    $el.attr('role', role);
6404
-    return $el;
6405
-  },
6406
-  addElLabel($el, label) {
6407
-    $el.attr('aria-label', label);
6408
-    return $el;
6409
-  },
6410
-  disableEl($el) {
6411
-    $el.attr('aria-disabled', true);
6412
-    return $el;
6413
-  },
6414
-  enableEl($el) {
6415
-    $el.attr('aria-disabled', false);
6416
-    return $el;
6417
-  },
6418
-  onEnterKey(e) {
6419
-    const swiper = this;
6420
-    const params = swiper.params.a11y;
6421
-    if (e.keyCode !== 13) return;
6422
-    const $targetEl = $(e.target);
6423
-    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
6424
-      if (!(swiper.isEnd && !swiper.params.loop)) {
6425
-        swiper.slideNext();
6426
-      }
6427
-      if (swiper.isEnd) {
6428
-        swiper.a11y.notify(params.lastSlideMessage);
6429
-      } else {
6430
-        swiper.a11y.notify(params.nextSlideMessage);
6431
-      }
6432
-    }
6433
-    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
6434
-      if (!(swiper.isBeginning && !swiper.params.loop)) {
6435
-        swiper.slidePrev();
6436
-      }
6437
-      if (swiper.isBeginning) {
6438
-        swiper.a11y.notify(params.firstSlideMessage);
6439
-      } else {
6440
-        swiper.a11y.notify(params.prevSlideMessage);
6441
-      }
6442
-    }
6443
-    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {
6444
-      $targetEl[0].click();
6445
-    }
6446
-  },
6447
-  notify(message) {
6448
-    const swiper = this;
6449
-    const notification = swiper.a11y.liveRegion;
6450
-    if (notification.length === 0) return;
6451
-    notification.html('');
6452
-    notification.html(message);
6453
-  },
6454
-  updateNavigation() {
6455
-    const swiper = this;
6456
-
6457
-    if (swiper.params.loop || !swiper.navigation) return;
6458
-    const { $nextEl, $prevEl } = swiper.navigation;
6459
-
6460
-    if ($prevEl && $prevEl.length > 0) {
6461
-      if (swiper.isBeginning) {
6462
-        swiper.a11y.disableEl($prevEl);
6463
-        swiper.a11y.makeElNotFocusable($prevEl);
6464
-      } else {
6465
-        swiper.a11y.enableEl($prevEl);
6466
-        swiper.a11y.makeElFocusable($prevEl);
6467
-      }
6468
-    }
6469
-    if ($nextEl && $nextEl.length > 0) {
6470
-      if (swiper.isEnd) {
6471
-        swiper.a11y.disableEl($nextEl);
6472
-        swiper.a11y.makeElNotFocusable($nextEl);
6473
-      } else {
6474
-        swiper.a11y.enableEl($nextEl);
6475
-        swiper.a11y.makeElFocusable($nextEl);
6476
-      }
6477
-    }
6478
-  },
6479
-  updatePagination() {
6480
-    const swiper = this;
6481
-    const params = swiper.params.a11y;
6482
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6483
-      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {
6484
-        const $bulletEl = $(bulletEl);
6485
-        swiper.a11y.makeElFocusable($bulletEl);
6486
-        swiper.a11y.addElRole($bulletEl, 'button');
6487
-        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
6488
-      });
6489
-    }
6490
-  },
6491
-  init() {
6492
-    const swiper = this;
6493
-
6494
-    swiper.$el.append(swiper.a11y.liveRegion);
6495
-
6496
-    // Navigation
6497
-    const params = swiper.params.a11y;
6498
-    let $nextEl;
6499
-    let $prevEl;
6500
-    if (swiper.navigation && swiper.navigation.$nextEl) {
6501
-      $nextEl = swiper.navigation.$nextEl;
6502
-    }
6503
-    if (swiper.navigation && swiper.navigation.$prevEl) {
6504
-      $prevEl = swiper.navigation.$prevEl;
6505
-    }
6506
-    if ($nextEl) {
6507
-      swiper.a11y.makeElFocusable($nextEl);
6508
-      swiper.a11y.addElRole($nextEl, 'button');
6509
-      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
6510
-      $nextEl.on('keydown', swiper.a11y.onEnterKey);
6511
-    }
6512
-    if ($prevEl) {
6513
-      swiper.a11y.makeElFocusable($prevEl);
6514
-      swiper.a11y.addElRole($prevEl, 'button');
6515
-      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
6516
-      $prevEl.on('keydown', swiper.a11y.onEnterKey);
6517
-    }
6518
-
6519
-    // Pagination
6520
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6521
-      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
6522
-    }
6523
-  },
6524
-  destroy() {
6525
-    const swiper = this;
6526
-    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
6527
-
6528
-    let $nextEl;
6529
-    let $prevEl;
6530
-    if (swiper.navigation && swiper.navigation.$nextEl) {
6531
-      $nextEl = swiper.navigation.$nextEl;
6532
-    }
6533
-    if (swiper.navigation && swiper.navigation.$prevEl) {
6534
-      $prevEl = swiper.navigation.$prevEl;
6535
-    }
6536
-    if ($nextEl) {
6537
-      $nextEl.off('keydown', swiper.a11y.onEnterKey);
6538
-    }
6539
-    if ($prevEl) {
6540
-      $prevEl.off('keydown', swiper.a11y.onEnterKey);
6541
-    }
6542
-
6543
-    // Pagination
6544
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6545
-      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
6546
-    }
6547
-  },
6548
-};
6549
-var a11y$1 = {
6550
-  name: 'a11y',
6551
-  params: {
6552
-    a11y: {
6553
-      enabled: true,
6554
-      notificationClass: 'swiper-notification',
6555
-      prevSlideMessage: 'Previous slide',
6556
-      nextSlideMessage: 'Next slide',
6557
-      firstSlideMessage: 'This is the first slide',
6558
-      lastSlideMessage: 'This is the last slide',
6559
-      paginationBulletMessage: 'Go to slide {{index}}',
6560
-    },
6561
-  },
6562
-  create() {
6563
-    const swiper = this;
6564
-    Utils.extend(swiper, {
6565
-      a11y: {
6566
-        liveRegion: $(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`),
6567
-      },
6568
-    });
6569
-    Object.keys(a11y).forEach((methodName) => {
6570
-      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
6571
-    });
6572
-  },
6573
-  on: {
6574
-    init() {
6575
-      const swiper = this;
6576
-      if (!swiper.params.a11y.enabled) return;
6577
-      swiper.a11y.init();
6578
-      swiper.a11y.updateNavigation();
6579
-    },
6580
-    toEdge() {
6581
-      const swiper = this;
6582
-      if (!swiper.params.a11y.enabled) return;
6583
-      swiper.a11y.updateNavigation();
6584
-    },
6585
-    fromEdge() {
6586
-      const swiper = this;
6587
-      if (!swiper.params.a11y.enabled) return;
6588
-      swiper.a11y.updateNavigation();
6589
-    },
6590
-    paginationUpdate() {
6591
-      const swiper = this;
6592
-      if (!swiper.params.a11y.enabled) return;
6593
-      swiper.a11y.updatePagination();
6594
-    },
6595
-    destroy() {
6596
-      const swiper = this;
6597
-      if (!swiper.params.a11y.enabled) return;
6598
-      swiper.a11y.destroy();
6599
-    },
6600
-  },
6601
-};
6602
-
6603
-const History = {
6604
-  init() {
6605
-    const swiper = this;
6606
-    if (!swiper.params.history) return;
6607
-    if (!window.history || !window.history.pushState) {
6608
-      swiper.params.history.enabled = false;
6609
-      swiper.params.hashNavigation.enabled = true;
6610
-      return;
6611
-    }
6612
-    const history = swiper.history;
6613
-    history.initialized = true;
6614
-    history.paths = History.getPathValues();
6615
-    if (!history.paths.key && !history.paths.value) return;
6616
-    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
6617
-    if (!swiper.params.history.replaceState) {
6618
-      window.addEventListener('popstate', swiper.history.setHistoryPopState);
6619
-    }
6620
-  },
6621
-  destroy() {
6622
-    const swiper = this;
6623
-    if (!swiper.params.history.replaceState) {
6624
-      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
6625
-    }
6626
-  },
6627
-  setHistoryPopState() {
6628
-    const swiper = this;
6629
-    swiper.history.paths = History.getPathValues();
6630
-    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
6631
-  },
6632
-  getPathValues() {
6633
-    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');
6634
-    const total = pathArray.length;
6635
-    const key = pathArray[total - 2];
6636
-    const value = pathArray[total - 1];
6637
-    return { key, value };
6638
-  },
6639
-  setHistory(key, index) {
6640
-    const swiper = this;
6641
-    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
6642
-    const slide = swiper.slides.eq(index);
6643
-    let value = History.slugify(slide.attr('data-history'));
6644
-    if (!window.location.pathname.includes(key)) {
6645
-      value = `${key}/${value}`;
6646
-    }
6647
-    const currentState = window.history.state;
6648
-    if (currentState && currentState.value === value) {
6649
-      return;
6650
-    }
6651
-    if (swiper.params.history.replaceState) {
6652
-      window.history.replaceState({ value }, null, value);
6653
-    } else {
6654
-      window.history.pushState({ value }, null, value);
6655
-    }
6656
-  },
6657
-  slugify(text) {
6658
-    return text.toString()
6659
-      .replace(/\s+/g, '-')
6660
-      .replace(/[^\w-]+/g, '')
6661
-      .replace(/--+/g, '-')
6662
-      .replace(/^-+/, '')
6663
-      .replace(/-+$/, '');
6664
-  },
6665
-  scrollToSlide(speed, value, runCallbacks) {
6666
-    const swiper = this;
6667
-    if (value) {
6668
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
6669
-        const slide = swiper.slides.eq(i);
6670
-        const slideHistory = History.slugify(slide.attr('data-history'));
6671
-        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
6672
-          const index = slide.index();
6673
-          swiper.slideTo(index, speed, runCallbacks);
6674
-        }
6675
-      }
6676
-    } else {
6677
-      swiper.slideTo(0, speed, runCallbacks);
6678
-    }
6679
-  },
6680
-};
6681
-
6682
-var history = {
6683
-  name: 'history',
6684
-  params: {
6685
-    history: {
6686
-      enabled: false,
6687
-      replaceState: false,
6688
-      key: 'slides',
6689
-    },
6690
-  },
6691
-  create() {
6692
-    const swiper = this;
6693
-    Utils.extend(swiper, {
6694
-      history: {
6695
-        init: History.init.bind(swiper),
6696
-        setHistory: History.setHistory.bind(swiper),
6697
-        setHistoryPopState: History.setHistoryPopState.bind(swiper),
6698
-        scrollToSlide: History.scrollToSlide.bind(swiper),
6699
-        destroy: History.destroy.bind(swiper),
6700
-      },
6701
-    });
6702
-  },
6703
-  on: {
6704
-    init() {
6705
-      const swiper = this;
6706
-      if (swiper.params.history.enabled) {
6707
-        swiper.history.init();
6708
-      }
6709
-    },
6710
-    destroy() {
6711
-      const swiper = this;
6712
-      if (swiper.params.history.enabled) {
6713
-        swiper.history.destroy();
6714
-      }
6715
-    },
6716
-    transitionEnd() {
6717
-      const swiper = this;
6718
-      if (swiper.history.initialized) {
6719
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
6720
-      }
6721
-    },
6722
-    slideChange() {
6723
-      const swiper = this;
6724
-      if (swiper.history.initialized && swiper.params.cssMode) {
6725
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
6726
-      }
6727
-    },
6728
-  },
6729
-};
6730
-
6731
-const HashNavigation = {
6732
-  onHashCange() {
6733
-    const swiper = this;
6734
-    swiper.emit('hashChange');
6735
-    const newHash = document$1.location.hash.replace('#', '');
6736
-    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
6737
-    if (newHash !== activeSlideHash) {
6738
-      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
6739
-      if (typeof newIndex === 'undefined') return;
6740
-      swiper.slideTo(newIndex);
6741
-    }
6742
-  },
6743
-  setHash() {
6744
-    const swiper = this;
6745
-    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
6746
-    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
6747
-      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));
6748
-      swiper.emit('hashSet');
6749
-    } else {
6750
-      const slide = swiper.slides.eq(swiper.activeIndex);
6751
-      const hash = slide.attr('data-hash') || slide.attr('data-history');
6752
-      document$1.location.hash = hash || '';
6753
-      swiper.emit('hashSet');
6754
-    }
6755
-  },
6756
-  init() {
6757
-    const swiper = this;
6758
-    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;
6759
-    swiper.hashNavigation.initialized = true;
6760
-    const hash = document$1.location.hash.replace('#', '');
6761
-    if (hash) {
6762
-      const speed = 0;
6763
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
6764
-        const slide = swiper.slides.eq(i);
6765
-        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
6766
-        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
6767
-          const index = slide.index();
6768
-          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
6769
-        }
6770
-      }
6771
-    }
6772
-    if (swiper.params.hashNavigation.watchState) {
6773
-      $(window).on('hashchange', swiper.hashNavigation.onHashCange);
6774
-    }
6775
-  },
6776
-  destroy() {
6777
-    const swiper = this;
6778
-    if (swiper.params.hashNavigation.watchState) {
6779
-      $(window).off('hashchange', swiper.hashNavigation.onHashCange);
6780
-    }
6781
-  },
6782
-};
6783
-var hashNavigation = {
6784
-  name: 'hash-navigation',
6785
-  params: {
6786
-    hashNavigation: {
6787
-      enabled: false,
6788
-      replaceState: false,
6789
-      watchState: false,
6790
-    },
6791
-  },
6792
-  create() {
6793
-    const swiper = this;
6794
-    Utils.extend(swiper, {
6795
-      hashNavigation: {
6796
-        initialized: false,
6797
-        init: HashNavigation.init.bind(swiper),
6798
-        destroy: HashNavigation.destroy.bind(swiper),
6799
-        setHash: HashNavigation.setHash.bind(swiper),
6800
-        onHashCange: HashNavigation.onHashCange.bind(swiper),
6801
-      },
6802
-    });
6803
-  },
6804
-  on: {
6805
-    init() {
6806
-      const swiper = this;
6807
-      if (swiper.params.hashNavigation.enabled) {
6808
-        swiper.hashNavigation.init();
6809
-      }
6810
-    },
6811
-    destroy() {
6812
-      const swiper = this;
6813
-      if (swiper.params.hashNavigation.enabled) {
6814
-        swiper.hashNavigation.destroy();
6815
-      }
6816
-    },
6817
-    transitionEnd() {
6818
-      const swiper = this;
6819
-      if (swiper.hashNavigation.initialized) {
6820
-        swiper.hashNavigation.setHash();
6821
-      }
6822
-    },
6823
-    slideChange() {
6824
-      const swiper = this;
6825
-      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
6826
-        swiper.hashNavigation.setHash();
6827
-      }
6828
-    },
6829
-  },
6830
-};
6831
-
6832
-/* eslint no-underscore-dangle: "off" */
6833
-
6834
-const Autoplay = {
6835
-  run() {
6836
-    const swiper = this;
6837
-    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
6838
-    let delay = swiper.params.autoplay.delay;
6839
-    if ($activeSlideEl.attr('data-swiper-autoplay')) {
6840
-      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
6841
-    }
6842
-    clearTimeout(swiper.autoplay.timeout);
6843
-    swiper.autoplay.timeout = Utils.nextTick(() => {
6844
-      if (swiper.params.autoplay.reverseDirection) {
6845
-        if (swiper.params.loop) {
6846
-          swiper.loopFix();
6847
-          swiper.slidePrev(swiper.params.speed, true, true);
6848
-          swiper.emit('autoplay');
6849
-        } else if (!swiper.isBeginning) {
6850
-          swiper.slidePrev(swiper.params.speed, true, true);
6851
-          swiper.emit('autoplay');
6852
-        } else if (!swiper.params.autoplay.stopOnLastSlide) {
6853
-          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
6854
-          swiper.emit('autoplay');
6855
-        } else {
6856
-          swiper.autoplay.stop();
6857
-        }
6858
-      } else if (swiper.params.loop) {
6859
-        swiper.loopFix();
6860
-        swiper.slideNext(swiper.params.speed, true, true);
6861
-        swiper.emit('autoplay');
6862
-      } else if (!swiper.isEnd) {
6863
-        swiper.slideNext(swiper.params.speed, true, true);
6864
-        swiper.emit('autoplay');
6865
-      } else if (!swiper.params.autoplay.stopOnLastSlide) {
6866
-        swiper.slideTo(0, swiper.params.speed, true, true);
6867
-        swiper.emit('autoplay');
6868
-      } else {
6869
-        swiper.autoplay.stop();
6870
-      }
6871
-      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
6872
-    }, delay);
6873
-  },
6874
-  start() {
6875
-    const swiper = this;
6876
-    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
6877
-    if (swiper.autoplay.running) return false;
6878
-    swiper.autoplay.running = true;
6879
-    swiper.emit('autoplayStart');
6880
-    swiper.autoplay.run();
6881
-    return true;
6882
-  },
6883
-  stop() {
6884
-    const swiper = this;
6885
-    if (!swiper.autoplay.running) return false;
6886
-    if (typeof swiper.autoplay.timeout === 'undefined') return false;
6887
-
6888
-    if (swiper.autoplay.timeout) {
6889
-      clearTimeout(swiper.autoplay.timeout);
6890
-      swiper.autoplay.timeout = undefined;
6891
-    }
6892
-    swiper.autoplay.running = false;
6893
-    swiper.emit('autoplayStop');
6894
-    return true;
6895
-  },
6896
-  pause(speed) {
6897
-    const swiper = this;
6898
-    if (!swiper.autoplay.running) return;
6899
-    if (swiper.autoplay.paused) return;
6900
-    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
6901
-    swiper.autoplay.paused = true;
6902
-    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
6903
-      swiper.autoplay.paused = false;
6904
-      swiper.autoplay.run();
6905
-    } else {
6906
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
6907
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
6908
-    }
6909
-  },
6910
-};
6911
-
6912
-var autoplay = {
6913
-  name: 'autoplay',
6914
-  params: {
6915
-    autoplay: {
6916
-      enabled: false,
6917
-      delay: 3000,
6918
-      waitForTransition: true,
6919
-      disableOnInteraction: true,
6920
-      stopOnLastSlide: false,
6921
-      reverseDirection: false,
6922
-    },
6923
-  },
6924
-  create() {
6925
-    const swiper = this;
6926
-    Utils.extend(swiper, {
6927
-      autoplay: {
6928
-        running: false,
6929
-        paused: false,
6930
-        run: Autoplay.run.bind(swiper),
6931
-        start: Autoplay.start.bind(swiper),
6932
-        stop: Autoplay.stop.bind(swiper),
6933
-        pause: Autoplay.pause.bind(swiper),
6934
-        onVisibilityChange() {
6935
-          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
6936
-            swiper.autoplay.pause();
6937
-          }
6938
-          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
6939
-            swiper.autoplay.run();
6940
-            swiper.autoplay.paused = false;
6941
-          }
6942
-        },
6943
-        onTransitionEnd(e) {
6944
-          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
6945
-          if (e.target !== this) return;
6946
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
6947
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
6948
-          swiper.autoplay.paused = false;
6949
-          if (!swiper.autoplay.running) {
6950
-            swiper.autoplay.stop();
6951
-          } else {
6952
-            swiper.autoplay.run();
6953
-          }
6954
-        },
6955
-      },
6956
-    });
6957
-  },
6958
-  on: {
6959
-    init() {
6960
-      const swiper = this;
6961
-      if (swiper.params.autoplay.enabled) {
6962
-        swiper.autoplay.start();
6963
-        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
6964
-      }
6965
-    },
6966
-    beforeTransitionStart(speed, internal) {
6967
-      const swiper = this;
6968
-      if (swiper.autoplay.running) {
6969
-        if (internal || !swiper.params.autoplay.disableOnInteraction) {
6970
-          swiper.autoplay.pause(speed);
6971
-        } else {
6972
-          swiper.autoplay.stop();
6973
-        }
6974
-      }
6975
-    },
6976
-    sliderFirstMove() {
6977
-      const swiper = this;
6978
-      if (swiper.autoplay.running) {
6979
-        if (swiper.params.autoplay.disableOnInteraction) {
6980
-          swiper.autoplay.stop();
6981
-        } else {
6982
-          swiper.autoplay.pause();
6983
-        }
6984
-      }
6985
-    },
6986
-    touchEnd() {
6987
-      const swiper = this;
6988
-      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
6989
-        swiper.autoplay.run();
6990
-      }
6991
-    },
6992
-    destroy() {
6993
-      const swiper = this;
6994
-      if (swiper.autoplay.running) {
6995
-        swiper.autoplay.stop();
6996
-      }
6997
-      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
6998
-    },
6999
-  },
7000
-};
7001
-
7002
-const Fade = {
7003
-  setTranslate() {
7004
-    const swiper = this;
7005
-    const { slides } = swiper;
7006
-    for (let i = 0; i < slides.length; i += 1) {
7007
-      const $slideEl = swiper.slides.eq(i);
7008
-      const offset = $slideEl[0].swiperSlideOffset;
7009
-      let tx = -offset;
7010
-      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
7011
-      let ty = 0;
7012
-      if (!swiper.isHorizontal()) {
7013
-        ty = tx;
7014
-        tx = 0;
7015
-      }
7016
-      const slideOpacity = swiper.params.fadeEffect.crossFade
7017
-        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
7018
-        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
7019
-      $slideEl
7020
-        .css({
7021
-          opacity: slideOpacity,
7022
-        })
7023
-        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);
7024
-    }
7025
-  },
7026
-  setTransition(duration) {
7027
-    const swiper = this;
7028
-    const { slides, $wrapperEl } = swiper;
7029
-    slides.transition(duration);
7030
-    if (swiper.params.virtualTranslate && duration !== 0) {
7031
-      let eventTriggered = false;
7032
-      slides.transitionEnd(() => {
7033
-        if (eventTriggered) return;
7034
-        if (!swiper || swiper.destroyed) return;
7035
-        eventTriggered = true;
7036
-        swiper.animating = false;
7037
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7038
-        for (let i = 0; i < triggerEvents.length; i += 1) {
7039
-          $wrapperEl.trigger(triggerEvents[i]);
7040
-        }
7041
-      });
7042
-    }
7043
-  },
7044
-};
7045
-
7046
-var effectFade = {
7047
-  name: 'effect-fade',
7048
-  params: {
7049
-    fadeEffect: {
7050
-      crossFade: false,
7051
-    },
7052
-  },
7053
-  create() {
7054
-    const swiper = this;
7055
-    Utils.extend(swiper, {
7056
-      fadeEffect: {
7057
-        setTranslate: Fade.setTranslate.bind(swiper),
7058
-        setTransition: Fade.setTransition.bind(swiper),
7059
-      },
7060
-    });
7061
-  },
7062
-  on: {
7063
-    beforeInit() {
7064
-      const swiper = this;
7065
-      if (swiper.params.effect !== 'fade') return;
7066
-      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);
7067
-      const overwriteParams = {
7068
-        slidesPerView: 1,
7069
-        slidesPerColumn: 1,
7070
-        slidesPerGroup: 1,
7071
-        watchSlidesProgress: true,
7072
-        spaceBetween: 0,
7073
-        virtualTranslate: true,
7074
-      };
7075
-      Utils.extend(swiper.params, overwriteParams);
7076
-      Utils.extend(swiper.originalParams, overwriteParams);
7077
-    },
7078
-    setTranslate() {
7079
-      const swiper = this;
7080
-      if (swiper.params.effect !== 'fade') return;
7081
-      swiper.fadeEffect.setTranslate();
7082
-    },
7083
-    setTransition(duration) {
7084
-      const swiper = this;
7085
-      if (swiper.params.effect !== 'fade') return;
7086
-      swiper.fadeEffect.setTransition(duration);
7087
-    },
7088
-  },
7089
-};
7090
-
7091
-const Cube = {
7092
-  setTranslate() {
7093
-    const swiper = this;
7094
-    const {
7095
-      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,
7096
-    } = swiper;
7097
-    const params = swiper.params.cubeEffect;
7098
-    const isHorizontal = swiper.isHorizontal();
7099
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7100
-    let wrapperRotate = 0;
7101
-    let $cubeShadowEl;
7102
-    if (params.shadow) {
7103
-      if (isHorizontal) {
7104
-        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
7105
-        if ($cubeShadowEl.length === 0) {
7106
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7107
-          $wrapperEl.append($cubeShadowEl);
7108
-        }
7109
-        $cubeShadowEl.css({ height: `${swiperWidth}px` });
7110
-      } else {
7111
-        $cubeShadowEl = $el.find('.swiper-cube-shadow');
7112
-        if ($cubeShadowEl.length === 0) {
7113
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7114
-          $el.append($cubeShadowEl);
7115
-        }
7116
-      }
7117
-    }
7118
-    for (let i = 0; i < slides.length; i += 1) {
7119
-      const $slideEl = slides.eq(i);
7120
-      let slideIndex = i;
7121
-      if (isVirtual) {
7122
-        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
7123
-      }
7124
-      let slideAngle = slideIndex * 90;
7125
-      let round = Math.floor(slideAngle / 360);
7126
-      if (rtl) {
7127
-        slideAngle = -slideAngle;
7128
-        round = Math.floor(-slideAngle / 360);
7129
-      }
7130
-      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7131
-      let tx = 0;
7132
-      let ty = 0;
7133
-      let tz = 0;
7134
-      if (slideIndex % 4 === 0) {
7135
-        tx = -round * 4 * swiperSize;
7136
-        tz = 0;
7137
-      } else if ((slideIndex - 1) % 4 === 0) {
7138
-        tx = 0;
7139
-        tz = -round * 4 * swiperSize;
7140
-      } else if ((slideIndex - 2) % 4 === 0) {
7141
-        tx = swiperSize + (round * 4 * swiperSize);
7142
-        tz = swiperSize;
7143
-      } else if ((slideIndex - 3) % 4 === 0) {
7144
-        tx = -swiperSize;
7145
-        tz = (3 * swiperSize) + (swiperSize * 4 * round);
7146
-      }
7147
-      if (rtl) {
7148
-        tx = -tx;
7149
-      }
7150
-
7151
-      if (!isHorizontal) {
7152
-        ty = tx;
7153
-        tx = 0;
7154
-      }
7155
-
7156
-      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
7157
-      if (progress <= 1 && progress > -1) {
7158
-        wrapperRotate = (slideIndex * 90) + (progress * 90);
7159
-        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);
7160
-      }
7161
-      $slideEl.transform(transform);
7162
-      if (params.slideShadows) {
7163
-        // Set shadows
7164
-        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7165
-        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7166
-        if (shadowBefore.length === 0) {
7167
-          shadowBefore = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
7168
-          $slideEl.append(shadowBefore);
7169
-        }
7170
-        if (shadowAfter.length === 0) {
7171
-          shadowAfter = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
7172
-          $slideEl.append(shadowAfter);
7173
-        }
7174
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
7175
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
7176
-      }
7177
-    }
7178
-    $wrapperEl.css({
7179
-      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
7180
-      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,
7181
-      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,
7182
-      'transform-origin': `50% 50% -${swiperSize / 2}px`,
7183
-    });
7184
-
7185
-    if (params.shadow) {
7186
-      if (isHorizontal) {
7187
-        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
7188
-      } else {
7189
-        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
7190
-        const multiplier = 1.5 - (
7191
-          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
7192
-          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
7193
-        );
7194
-        const scale1 = params.shadowScale;
7195
-        const scale2 = params.shadowScale / multiplier;
7196
-        const offset = params.shadowOffset;
7197
-        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
7198
-      }
7199
-    }
7200
-    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
7201
-    $wrapperEl
7202
-      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
7203
-  },
7204
-  setTransition(duration) {
7205
-    const swiper = this;
7206
-    const { $el, slides } = swiper;
7207
-    slides
7208
-      .transition(duration)
7209
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7210
-      .transition(duration);
7211
-    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
7212
-      $el.find('.swiper-cube-shadow').transition(duration);
7213
-    }
7214
-  },
7215
-};
7216
-
7217
-var effectCube = {
7218
-  name: 'effect-cube',
7219
-  params: {
7220
-    cubeEffect: {
7221
-      slideShadows: true,
7222
-      shadow: true,
7223
-      shadowOffset: 20,
7224
-      shadowScale: 0.94,
7225
-    },
7226
-  },
7227
-  create() {
7228
-    const swiper = this;
7229
-    Utils.extend(swiper, {
7230
-      cubeEffect: {
7231
-        setTranslate: Cube.setTranslate.bind(swiper),
7232
-        setTransition: Cube.setTransition.bind(swiper),
7233
-      },
7234
-    });
7235
-  },
7236
-  on: {
7237
-    beforeInit() {
7238
-      const swiper = this;
7239
-      if (swiper.params.effect !== 'cube') return;
7240
-      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);
7241
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7242
-      const overwriteParams = {
7243
-        slidesPerView: 1,
7244
-        slidesPerColumn: 1,
7245
-        slidesPerGroup: 1,
7246
-        watchSlidesProgress: true,
7247
-        resistanceRatio: 0,
7248
-        spaceBetween: 0,
7249
-        centeredSlides: false,
7250
-        virtualTranslate: true,
7251
-      };
7252
-      Utils.extend(swiper.params, overwriteParams);
7253
-      Utils.extend(swiper.originalParams, overwriteParams);
7254
-    },
7255
-    setTranslate() {
7256
-      const swiper = this;
7257
-      if (swiper.params.effect !== 'cube') return;
7258
-      swiper.cubeEffect.setTranslate();
7259
-    },
7260
-    setTransition(duration) {
7261
-      const swiper = this;
7262
-      if (swiper.params.effect !== 'cube') return;
7263
-      swiper.cubeEffect.setTransition(duration);
7264
-    },
7265
-  },
7266
-};
7267
-
7268
-const Flip = {
7269
-  setTranslate() {
7270
-    const swiper = this;
7271
-    const { slides, rtlTranslate: rtl } = swiper;
7272
-    for (let i = 0; i < slides.length; i += 1) {
7273
-      const $slideEl = slides.eq(i);
7274
-      let progress = $slideEl[0].progress;
7275
-      if (swiper.params.flipEffect.limitRotation) {
7276
-        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7277
-      }
7278
-      const offset = $slideEl[0].swiperSlideOffset;
7279
-      const rotate = -180 * progress;
7280
-      let rotateY = rotate;
7281
-      let rotateX = 0;
7282
-      let tx = -offset;
7283
-      let ty = 0;
7284
-      if (!swiper.isHorizontal()) {
7285
-        ty = tx;
7286
-        tx = 0;
7287
-        rotateX = -rotateY;
7288
-        rotateY = 0;
7289
-      } else if (rtl) {
7290
-        rotateY = -rotateY;
7291
-      }
7292
-
7293
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
7294
-
7295
-      if (swiper.params.flipEffect.slideShadows) {
7296
-        // Set shadows
7297
-        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7298
-        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7299
-        if (shadowBefore.length === 0) {
7300
-          shadowBefore = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}"></div>`);
7301
-          $slideEl.append(shadowBefore);
7302
-        }
7303
-        if (shadowAfter.length === 0) {
7304
-          shadowAfter = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}"></div>`);
7305
-          $slideEl.append(shadowAfter);
7306
-        }
7307
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
7308
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
7309
-      }
7310
-      $slideEl
7311
-        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
7312
-    }
7313
-  },
7314
-  setTransition(duration) {
7315
-    const swiper = this;
7316
-    const { slides, activeIndex, $wrapperEl } = swiper;
7317
-    slides
7318
-      .transition(duration)
7319
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7320
-      .transition(duration);
7321
-    if (swiper.params.virtualTranslate && duration !== 0) {
7322
-      let eventTriggered = false;
7323
-      // eslint-disable-next-line
7324
-      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
7325
-        if (eventTriggered) return;
7326
-        if (!swiper || swiper.destroyed) return;
7327
-        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
7328
-        eventTriggered = true;
7329
-        swiper.animating = false;
7330
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7331
-        for (let i = 0; i < triggerEvents.length; i += 1) {
7332
-          $wrapperEl.trigger(triggerEvents[i]);
7333
-        }
7334
-      });
7335
-    }
7336
-  },
7337
-};
7338
-
7339
-var effectFlip = {
7340
-  name: 'effect-flip',
7341
-  params: {
7342
-    flipEffect: {
7343
-      slideShadows: true,
7344
-      limitRotation: true,
7345
-    },
7346
-  },
7347
-  create() {
7348
-    const swiper = this;
7349
-    Utils.extend(swiper, {
7350
-      flipEffect: {
7351
-        setTranslate: Flip.setTranslate.bind(swiper),
7352
-        setTransition: Flip.setTransition.bind(swiper),
7353
-      },
7354
-    });
7355
-  },
7356
-  on: {
7357
-    beforeInit() {
7358
-      const swiper = this;
7359
-      if (swiper.params.effect !== 'flip') return;
7360
-      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);
7361
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7362
-      const overwriteParams = {
7363
-        slidesPerView: 1,
7364
-        slidesPerColumn: 1,
7365
-        slidesPerGroup: 1,
7366
-        watchSlidesProgress: true,
7367
-        spaceBetween: 0,
7368
-        virtualTranslate: true,
7369
-      };
7370
-      Utils.extend(swiper.params, overwriteParams);
7371
-      Utils.extend(swiper.originalParams, overwriteParams);
7372
-    },
7373
-    setTranslate() {
7374
-      const swiper = this;
7375
-      if (swiper.params.effect !== 'flip') return;
7376
-      swiper.flipEffect.setTranslate();
7377
-    },
7378
-    setTransition(duration) {
7379
-      const swiper = this;
7380
-      if (swiper.params.effect !== 'flip') return;
7381
-      swiper.flipEffect.setTransition(duration);
7382
-    },
7383
-  },
7384
-};
7385
-
7386
-const Coverflow = {
7387
-  setTranslate() {
7388
-    const swiper = this;
7389
-    const {
7390
-      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,
7391
-    } = swiper;
7392
-    const params = swiper.params.coverflowEffect;
7393
-    const isHorizontal = swiper.isHorizontal();
7394
-    const transform = swiper.translate;
7395
-    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
7396
-    const rotate = isHorizontal ? params.rotate : -params.rotate;
7397
-    const translate = params.depth;
7398
-    // Each slide offset from center
7399
-    for (let i = 0, length = slides.length; i < length; i += 1) {
7400
-      const $slideEl = slides.eq(i);
7401
-      const slideSize = slidesSizesGrid[i];
7402
-      const slideOffset = $slideEl[0].swiperSlideOffset;
7403
-      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
7404
-
7405
-      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
7406
-      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
7407
-      // var rotateZ = 0
7408
-      let translateZ = -translate * Math.abs(offsetMultiplier);
7409
-
7410
-      let stretch = params.stretch;
7411
-      // Allow percentage to make a relative stretch for responsive sliders
7412
-      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
7413
-        stretch = ((parseFloat(params.stretch) / 100) * slideSize);
7414
-      }
7415
-      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
7416
-      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
7417
-
7418
-      // Fix for ultra small values
7419
-      if (Math.abs(translateX) < 0.001) translateX = 0;
7420
-      if (Math.abs(translateY) < 0.001) translateY = 0;
7421
-      if (Math.abs(translateZ) < 0.001) translateZ = 0;
7422
-      if (Math.abs(rotateY) < 0.001) rotateY = 0;
7423
-      if (Math.abs(rotateX) < 0.001) rotateX = 0;
7424
-
7425
-      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
7426
-
7427
-      $slideEl.transform(slideTransform);
7428
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
7429
-      if (params.slideShadows) {
7430
-        // Set shadows
7431
-        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7432
-        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7433
-        if ($shadowBeforeEl.length === 0) {
7434
-          $shadowBeforeEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
7435
-          $slideEl.append($shadowBeforeEl);
7436
-        }
7437
-        if ($shadowAfterEl.length === 0) {
7438
-          $shadowAfterEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
7439
-          $slideEl.append($shadowAfterEl);
7440
-        }
7441
-        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
7442
-        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;
7443
-      }
7444
-    }
7445
-
7446
-    // Set correct perspective for IE10
7447
-    if (Support.pointerEvents || Support.prefixedPointerEvents) {
7448
-      const ws = $wrapperEl[0].style;
7449
-      ws.perspectiveOrigin = `${center}px 50%`;
7450
-    }
7451
-  },
7452
-  setTransition(duration) {
7453
-    const swiper = this;
7454
-    swiper.slides
7455
-      .transition(duration)
7456
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7457
-      .transition(duration);
7458
-  },
7459
-};
7460
-
7461
-var effectCoverflow = {
7462
-  name: 'effect-coverflow',
7463
-  params: {
7464
-    coverflowEffect: {
7465
-      rotate: 50,
7466
-      stretch: 0,
7467
-      depth: 100,
7468
-      modifier: 1,
7469
-      slideShadows: true,
7470
-    },
7471
-  },
7472
-  create() {
7473
-    const swiper = this;
7474
-    Utils.extend(swiper, {
7475
-      coverflowEffect: {
7476
-        setTranslate: Coverflow.setTranslate.bind(swiper),
7477
-        setTransition: Coverflow.setTransition.bind(swiper),
7478
-      },
7479
-    });
7480
-  },
7481
-  on: {
7482
-    beforeInit() {
7483
-      const swiper = this;
7484
-      if (swiper.params.effect !== 'coverflow') return;
7485
-
7486
-      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);
7487
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
7488
-
7489
-      swiper.params.watchSlidesProgress = true;
7490
-      swiper.originalParams.watchSlidesProgress = true;
7491
-    },
7492
-    setTranslate() {
7493
-      const swiper = this;
7494
-      if (swiper.params.effect !== 'coverflow') return;
7495
-      swiper.coverflowEffect.setTranslate();
7496
-    },
7497
-    setTransition(duration) {
7498
-      const swiper = this;
7499
-      if (swiper.params.effect !== 'coverflow') return;
7500
-      swiper.coverflowEffect.setTransition(duration);
7501
-    },
7502
-  },
7503
-};
7504
-
7505
-const Thumbs = {
7506
-  init() {
7507
-    const swiper = this;
7508
-    const { thumbs: thumbsParams } = swiper.params;
7509
-    const SwiperClass = swiper.constructor;
7510
-    if (thumbsParams.swiper instanceof SwiperClass) {
7511
-      swiper.thumbs.swiper = thumbsParams.swiper;
7512
-      Utils.extend(swiper.thumbs.swiper.originalParams, {
7513
-        watchSlidesProgress: true,
7514
-        slideToClickedSlide: false,
7515
-      });
7516
-      Utils.extend(swiper.thumbs.swiper.params, {
7517
-        watchSlidesProgress: true,
7518
-        slideToClickedSlide: false,
7519
-      });
7520
-    } else if (Utils.isObject(thumbsParams.swiper)) {
7521
-      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
7522
-        watchSlidesVisibility: true,
7523
-        watchSlidesProgress: true,
7524
-        slideToClickedSlide: false,
7525
-      }));
7526
-      swiper.thumbs.swiperCreated = true;
7527
-    }
7528
-    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
7529
-    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
7530
-  },
7531
-  onThumbClick() {
7532
-    const swiper = this;
7533
-    const thumbsSwiper = swiper.thumbs.swiper;
7534
-    if (!thumbsSwiper) return;
7535
-    const clickedIndex = thumbsSwiper.clickedIndex;
7536
-    const clickedSlide = thumbsSwiper.clickedSlide;
7537
-    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
7538
-    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
7539
-    let slideToIndex;
7540
-    if (thumbsSwiper.params.loop) {
7541
-      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
7542
-    } else {
7543
-      slideToIndex = clickedIndex;
7544
-    }
7545
-    if (swiper.params.loop) {
7546
-      let currentIndex = swiper.activeIndex;
7547
-      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
7548
-        swiper.loopFix();
7549
-        // eslint-disable-next-line
7550
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
7551
-        currentIndex = swiper.activeIndex;
7552
-      }
7553
-      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
7554
-      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
7555
-      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;
7556
-      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;
7557
-      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;
7558
-      else slideToIndex = prevIndex;
7559
-    }
7560
-    swiper.slideTo(slideToIndex);
7561
-  },
7562
-  update(initial) {
7563
-    const swiper = this;
7564
-    const thumbsSwiper = swiper.thumbs.swiper;
7565
-    if (!thumbsSwiper) return;
7566
-
7567
-    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
7568
-      ? thumbsSwiper.slidesPerViewDynamic()
7569
-      : thumbsSwiper.params.slidesPerView;
7570
-
7571
-    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
7572
-    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
7573
-    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
7574
-      let currentThumbsIndex = thumbsSwiper.activeIndex;
7575
-      let newThumbsIndex;
7576
-      let direction;
7577
-      if (thumbsSwiper.params.loop) {
7578
-        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
7579
-          thumbsSwiper.loopFix();
7580
-          // eslint-disable-next-line
7581
-          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
7582
-          currentThumbsIndex = thumbsSwiper.activeIndex;
7583
-        }
7584
-        // Find actual thumbs index to slide to
7585
-        const prevThumbsIndex = thumbsSwiper.slides
7586
-          .eq(currentThumbsIndex)
7587
-          .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
7588
-          .index();
7589
-        const nextThumbsIndex = thumbsSwiper.slides
7590
-          .eq(currentThumbsIndex)
7591
-          .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
7592
-          .index();
7593
-        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;
7594
-        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;
7595
-        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;
7596
-        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;
7597
-        else newThumbsIndex = prevThumbsIndex;
7598
-        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
7599
-      } else {
7600
-        newThumbsIndex = swiper.realIndex;
7601
-        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
7602
-      }
7603
-      if (useOffset) {
7604
-        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
7605
-      }
7606
-
7607
-      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
7608
-        if (thumbsSwiper.params.centeredSlides) {
7609
-          if (newThumbsIndex > currentThumbsIndex) {
7610
-            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
7611
-          } else {
7612
-            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
7613
-          }
7614
-        } else if (newThumbsIndex > currentThumbsIndex) {
7615
-          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
7616
-        }
7617
-        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
7618
-      }
7619
-    }
7620
-
7621
-    // Activate thumbs
7622
-    let thumbsToActivate = 1;
7623
-    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
7624
-
7625
-    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
7626
-      thumbsToActivate = swiper.params.slidesPerView;
7627
-    }
7628
-
7629
-    if (!swiper.params.thumbs.multipleActiveThumbs) {
7630
-      thumbsToActivate = 1;
7631
-    }
7632
-
7633
-    thumbsToActivate = Math.floor(thumbsToActivate);
7634
-
7635
-    thumbsSwiper.slides.removeClass(thumbActiveClass);
7636
-    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
7637
-      for (let i = 0; i < thumbsToActivate; i += 1) {
7638
-        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
7639
-      }
7640
-    } else {
7641
-      for (let i = 0; i < thumbsToActivate; i += 1) {
7642
-        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
7643
-      }
7644
-    }
7645
-  },
7646
-};
7647
-var thumbs = {
7648
-  name: 'thumbs',
7649
-  params: {
7650
-    thumbs: {
7651
-      swiper: null,
7652
-      multipleActiveThumbs: true,
7653
-      autoScrollOffset: 0,
7654
-      slideThumbActiveClass: 'swiper-slide-thumb-active',
7655
-      thumbsContainerClass: 'swiper-container-thumbs',
7656
-    },
7657
-  },
7658
-  create() {
7659
-    const swiper = this;
7660
-    Utils.extend(swiper, {
7661
-      thumbs: {
7662
-        swiper: null,
7663
-        init: Thumbs.init.bind(swiper),
7664
-        update: Thumbs.update.bind(swiper),
7665
-        onThumbClick: Thumbs.onThumbClick.bind(swiper),
7666
-      },
7667
-    });
7668
-  },
7669
-  on: {
7670
-    beforeInit() {
7671
-      const swiper = this;
7672
-      const { thumbs } = swiper.params;
7673
-      if (!thumbs || !thumbs.swiper) return;
7674
-      swiper.thumbs.init();
7675
-      swiper.thumbs.update(true);
7676
-    },
7677
-    slideChange() {
7678
-      const swiper = this;
7679
-      if (!swiper.thumbs.swiper) return;
7680
-      swiper.thumbs.update();
7681
-    },
7682
-    update() {
7683
-      const swiper = this;
7684
-      if (!swiper.thumbs.swiper) return;
7685
-      swiper.thumbs.update();
7686
-    },
7687
-    resize() {
7688
-      const swiper = this;
7689
-      if (!swiper.thumbs.swiper) return;
7690
-      swiper.thumbs.update();
7691
-    },
7692
-    observerUpdate() {
7693
-      const swiper = this;
7694
-      if (!swiper.thumbs.swiper) return;
7695
-      swiper.thumbs.update();
7696
-    },
7697
-    setTransition(duration) {
7698
-      const swiper = this;
7699
-      const thumbsSwiper = swiper.thumbs.swiper;
7700
-      if (!thumbsSwiper) return;
7701
-      thumbsSwiper.setTransition(duration);
7702
-    },
7703
-    beforeDestroy() {
7704
-      const swiper = this;
7705
-      const thumbsSwiper = swiper.thumbs.swiper;
7706
-      if (!thumbsSwiper) return;
7707
-      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
7708
-        thumbsSwiper.destroy();
7709
-      }
7710
-    },
7711
-  },
7712
-};
7713
-
7714
-// Swiper Class
7715
-
7716
-const components = [
7717
-  Device$1,
7718
-  Support$1,
7719
-  Browser$1,
7720
-  Resize,
7721
-  Observer$1,
7722
-  
7723
-];
7724
-
7725
-if (typeof Swiper.use === 'undefined') {
7726
-  Swiper.use = Swiper.Class.use;
7727
-  Swiper.installModule = Swiper.Class.installModule;
7728
-}
7729
-
7730
-Swiper.use(components);
7731
-
7732
-export { a11y$1 as A11y, autoplay as Autoplay, controller as Controller, effectCoverflow as EffectCoverflow, effectCube as EffectCube, effectFade as EffectFade, effectFlip as EffectFlip, hashNavigation as HashNavigation, history as History, keyboard as Keyboard, lazy as Lazy, mousewheel as Mousewheel, navigation as Navigation, pagination as Pagination, parallax as Parallax, scrollbar as Scrollbar, Swiper, thumbs as Thumbs, virtual as Virtual, zoom as Zoom };
7733
-//# sourceMappingURL=swiper.esm.js.map
7734 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"file":"swiper.esm.js.map","sources":["../src/utils/dom.js","../src/utils/utils.js","../src/utils/support.js","../src/utils/class.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/utils/device.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/modules/device/device.js","../src/modules/support/support.js","../src/utils/browser.js","../src/modules/browser/browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["import {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n  return {\n    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup = groupIndex === 0\n          ? params.slidesPerGroup\n          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n","export default function (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((index, slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                || (slideAfter > 1 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n","export default function () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n  return (-this.snapGrid[0]);\n}\n","export default function () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n\n  const {\n    params,\n    wrapperEl,\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n","export default function (duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n","export default function () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n  const platform = window.navigator.platform;\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!(window.cordova || window.phonegap),\n    phonegap: !!(window.cordova || window.phonegap),\n    electron: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  if (!ipad\n    && macos\n    && Support.touch\n    && (\n      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n      || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n      || (screenWidth === 768 && screenHeight === 1024) // other\n    )\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron;\n  if (device.desktop) {\n    device.electron = electron;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement\n      && $(document.activeElement).is(data.formElements)\n      && document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n","export default function (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n  attachEvents,\n  detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params, $el,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n    }\n\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n","export default function () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","export default function () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages,\n};\n","\nfunction checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    swiper.navigation.update();\n  }\n}\n\nexport default { checkOverflow };\n","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n","import Support from '../../utils/support';\n\nexport default {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nexport default {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nexport default {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n    } else {\n      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (kc === 34 || kc === 40) swiper.slideNext();\n      if (kc === 33 || kc === 38) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nexport default {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document.implementation\n    && document.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: Utils.now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents = lastEventBeforeSnap\n        && newEvent.time < lastEventBeforeSnap.time + 500\n        && newEvent.delta <= lastEventBeforeSnap.delta\n        && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + (delta * params.sensitivity);\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15\n              && newEvent.time - firstEvent.time < 500\n              && firstEvent.delta - newEvent.delta >= 1\n              && newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nexport default {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        animateSlider: Mousewheel.animateSlider.bind(swiper),\n        releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n        lastScrollTime: Utils.now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nexport default {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n      && swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n    }\n    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const {\n      $el,\n      dragSize,\n      trackSize,\n      dragStartPos,\n    } = scrollbar;\n\n    let positionRatio;\n    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nexport default {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nexport default {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n};\n\nexport default {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nexport default {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nexport default {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nexport default {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nexport default {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    swiper.emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nexport default {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nexport default {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onVisibilityChange() {\n          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n            swiper.autoplay.pause();\n          }\n          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n            swiper.autoplay.run();\n            swiper.autoplay.paused = false;\n          }\n        },\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd() {\n      const swiper = this;\n      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nexport default {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n      }\n      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nexport default {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nexport default {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n  Device,\n  Support,\n  Browser,\n  Resize,\n  Observer,\n  //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["transition","transitionEnd","document","checkOverflow","Device","Support","Browser","Observer"],"mappings":";;;;;;;;;;;;;;;AA0CA,MAAM,OAAO,GAAG;AAChB,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,EAAE,IAAI;AACN,EAAE,SAAS;AACX,cAAEA,YAAU;AACZ,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,OAAO;AACT,iBAAEC,eAAa;AACf,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,EAAE;AACJ,EAAE,KAAK;AACP,EAAE,EAAE;AACJ,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAE,MAAM;AACR,CAAC,CAAC;AACF;AACA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC7C,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC,CAAC;;ACnFF,MAAM,KAAK,GAAG;AACd,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC;AACvB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzC,MAAM,IAAI;AACV,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3B,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB;AACA,OAAO;AACP,MAAM,IAAI;AACV,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB;AACA,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE;AAChC,IAAI,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,GAAG,GAAG;AACR,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE;AAC/B,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,eAAe,CAAC;AACxB;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACvD;AACA,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE;AAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;AACpE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,QAAQ,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,OAAO;AACP;AACA;AACA,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,YAAY,KAAK,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;AAChG,KAAK,MAAM;AACX,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AACjO,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE;AACtB;AACA,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC;AACrE;AACA,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E;AACA,WAAW,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE;AACtB;AACA,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC;AACrE;AACA,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E;AACA,WAAW,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,YAAY,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,aAAa,CAAC,GAAG,EAAE;AACrB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,UAAU,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjD,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;AAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AACvF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,KAAK,EAAE,CAAC,CAAC;AAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAQ,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/H,OAAO;AACP,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,QAAQ,CAAC,CAAC,EAAE;AACd,IAAI,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC;AAC5F,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;AAClB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;AAC3D,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,IAAI,CAAC,EAAE;AACzF,UAAU,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAC/C,UAAU,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5E,UAAU,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACrD,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;AACpF,cAAc,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,aAAa,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5F,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/B,cAAc,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,aAAa,MAAM;AACnB,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAChD,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,CAAC;;AC1GD,MAAM,OAAO,IAAI,SAAS,OAAO,GAAG;AACpC,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,cAAc,IAAI,MAAM,MAAM,MAAM,CAAC,aAAa,IAAIC,UAAQ,YAAY,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/G;AACA,IAAI,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC;AAC1H;AACA,IAAI,QAAQ,GAAG,SAAS,aAAa,GAAG;AACxC,MAAM,QAAQ,kBAAkB,IAAI,MAAM,IAAI,wBAAwB,IAAI,MAAM,EAAE;AAClF,KAAK,EAAE,CAAC;AACR;AACA,IAAI,eAAe,GAAG,SAAS,oBAAoB,GAAG;AACtD,MAAM,IAAI,eAAe,GAAG,KAAK,CAAC;AAClC,MAAM,IAAI;AACV,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;AAC1D;AACA,UAAU,GAAG,GAAG;AAChB,YAAY,eAAe,GAAG,IAAI,CAAC;AACnC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnE,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB;AACA,OAAO;AACP,MAAM,OAAO,eAAe,CAAC;AAC7B,KAAK,EAAE,CAAC;AACR;AACA,IAAI,QAAQ,GAAG,SAAS,aAAa,GAAG;AACxC,MAAM,OAAO,gBAAgB,IAAI,MAAM,CAAC;AACxC,KAAK,EAAE,CAAC;AACR,GAAG,CAAC;AACJ,CAAC,EAAE,CAAC;;AC9BJ,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;AACA;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC9B;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACzD,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH;AACA,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AACjD,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACzE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC;AACnD,IAAI,SAAS,WAAW,CAAC,GAAG,IAAI,EAAE;AAClC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACpC,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,OAAO,WAAW,CAAC,OAAO,CAAC;AACnC,OAAO;AACP,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;AAClC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC;AAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAC1C,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACzC,OAAO,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AACpF,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,KAAK;AACrE,UAAU,IAAI,YAAY,KAAK,OAAO,KAAK,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE;AACtG,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzD,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AAChB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC;AAC3C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3E,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACnC,MAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC/D,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK;AAC9D,UAAU,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK;AAC3C,UAAU,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,gBAAgB,CAAC,cAAc,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC1D,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClD;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACpD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,UAAU,CAAC,aAAa,GAAG,EAAE,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC1D,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC3D;AACA,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC3B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK;AACjE,UAAU,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7D,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAChD,YAAY,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,WAAW,MAAM;AACjB,YAAY,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC;AAClD,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE;AACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK;AAC5D,UAAU,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,WAAW,UAAU,CAAC,UAAU,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO;AAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;AAC/D,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC3C;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACjD,QAAQ,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClD,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxC,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE;AAChC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AAClD,GAAG;AACH;;ACxKe,mBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,EAAE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAClD,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,GAAG,MAAM;AACT,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AACnD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;AACvF,IAAI,OAAO;AACX,GAAG;AACH;AACA;AACA,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;AACjG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACnG;AACA,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACvB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,MAAM;AAChD,GAAG,CAAC,CAAC;AACL;;AC3Be,qBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B;AACA,EAAE,MAAM;AACR,IAAI,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ;AAC7D,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7D,EAAE,MAAM,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/F,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAChF,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,UAAU,GAAG,EAAE,CAAC;AACxB,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,SAAS,eAAe,CAAC,UAAU,EAAE;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC;AACrC,IAAI,IAAI,UAAU,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,EAAE,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AAC1C,IAAI,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,EAAE,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACzC,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,EAAE,MAAM,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1D;AACA,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACzC,EAAE,IAAI,aAAa,GAAG,CAAC,YAAY,CAAC;AACpC,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACzC,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1E,IAAI,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AAClF,GAAG;AACH;AACA,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,YAAY,CAAC;AACrC;AACA;AACA,EAAE,IAAI,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD;AACA,EAAE,IAAI,sBAAsB,CAAC;AAC7B,EAAE,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;AAC5G,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAC5C,KAAK,MAAM;AACX,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;AACzG,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,KAAK,EAAE;AACjF,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/G,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACjD,EAAE,MAAM,YAAY,GAAG,sBAAsB,GAAG,eAAe,CAAC;AAChE,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC3E,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE;AACpC;AACA,MAAM,IAAI,kBAAkB,CAAC;AAC7B,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,KAAK,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE;AAC7E,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5F,QAAQ,MAAM,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC;AAClG,QAAQ,MAAM,cAAc,GAAG,UAAU,KAAK,CAAC;AAC/C,YAAY,MAAM,CAAC,cAAc;AACjC,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAChJ,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,cAAc,CAAC,CAAC;AAC7D,QAAQ,MAAM,GAAG,CAAC,iBAAiB,GAAG,GAAG,GAAG,cAAc,IAAI,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;AACjG;AACA,QAAQ,kBAAkB,GAAG,MAAM,IAAI,CAAC,GAAG,GAAG,sBAAsB,IAAI,eAAe,CAAC,CAAC;AACzF,QAAQ,KAAK;AACb,WAAW,GAAG,CAAC;AACf,YAAY,2BAA2B,EAAE,kBAAkB;AAC3D,YAAY,wBAAwB,EAAE,kBAAkB;AACxD,YAAY,gBAAgB,EAAE,kBAAkB;AAChD,YAAY,eAAe,EAAE,kBAAkB;AAC/C,YAAY,KAAK,EAAE,kBAAkB;AACrC,WAAW,CAAC,CAAC;AACb,OAAO,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAC1D,QAAQ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACjD,QAAQ,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,eAAe,CAAC,CAAC;AAC7C,QAAQ,IAAI,MAAM,GAAG,cAAc,KAAK,MAAM,KAAK,cAAc,IAAI,GAAG,KAAK,eAAe,GAAG,CAAC,CAAC,EAAE;AACnG,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,UAAU,IAAI,GAAG,IAAI,eAAe,EAAE;AACtC,YAAY,GAAG,GAAG,CAAC,CAAC;AACpB,YAAY,MAAM,IAAI,CAAC,CAAC;AACxB,WAAW;AACX,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;AAC3C,QAAQ,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC;AAC1C,OAAO;AACP,MAAM,KAAK,CAAC,GAAG;AACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;AAC1D,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1E,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,SAAS;AAClD;AACA,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,EAAE;AACzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AACpE,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1C,OAAO;AACP,MAAM,IAAI,sBAAsB,EAAE;AAClC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC;AAChD,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B,QAAQ,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AACzC,YAAY,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAClC,YAAY,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,OAAO,MAAM;AACb;AACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AACnC,UAAU,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,UAAU,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;AACvF,UAAU,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;AACzF,UAAU,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;AACrF,UAAU,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;AACvF,UAAU,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACvE,UAAU,IAAI,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;AACvD,YAAY,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AACzD,WAAW,MAAM;AACjB,YAAY,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AACtF,WAAW;AACX,SAAS,MAAM;AACf,UAAU,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5E,UAAU,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;AACrF,UAAU,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3F,UAAU,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AACnF,UAAU,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;AACzF,UAAU,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACvE,UAAU,IAAI,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;AACvD,YAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAC1D,WAAW,MAAM;AACjB,YAAY,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AACvF,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;AACpD,OAAO;AACP,MAAM,IAAI,sBAAsB,EAAE;AAClC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,GAAG,sBAAsB,CAAC;AAChE,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjE,KAAK,MAAM;AACX,MAAM,SAAS,GAAG,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC;AACpG,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjE;AACA,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACrB,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AACnC,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACnD,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACpD,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC;AAC5C,KAAK;AACL,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC;AACA;AACA,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM,aAAa,GAAG,aAAa,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAC3F,MAAM,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,aAAa,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAC1G,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,aAAa,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AACnF,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC;AAChE,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9E,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzI,MAAM,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,MAAM,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,MAAM,CAAC,WAAW,IAAI,SAAS,GAAG,YAAY,CAAC;AACnD;AACA,IAAI,aAAa,GAAG,SAAS,CAAC;AAC9B;AACA,IAAI,KAAK,IAAI,CAAC,CAAC;AACf,GAAG;AACH,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;AAC9E,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE;AACF,IAAI,GAAG,IAAI,QAAQ,KAAK,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE;AACrF,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/E,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE;AAC7B,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE;AAClC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,sBAAsB,CAAC;AACpF,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;AACtG,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,QAAQ,IAAI,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7E,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/F,OAAO;AACP,MAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,MAAM,IAAI,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3E,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,UAAU,EAAE;AAC1D,QAAQ,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3C,OAAO;AACP,KAAK;AACL,IAAI,QAAQ,GAAG,aAAa,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACrG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;AACrD,KAAK;AACL,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;AACjC,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,IAAI,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvF,WAAW,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpF,KAAK,MAAM,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,oBAAoB,EAAE;AAC5D,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK;AAChD,MAAM,aAAa,IAAI,cAAc,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACxF,KAAK,CAAC,CAAC;AACP,IAAI,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;AAC/C,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACtC,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;AACzC,MAAM,IAAI,IAAI,GAAG,OAAO,EAAE,OAAO,OAAO,GAAG,WAAW,CAAC;AACvD,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,wBAAwB,EAAE;AACvC,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK;AAChD,MAAM,aAAa,IAAI,cAAc,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AACxF,KAAK,CAAC,CAAC;AACP,IAAI,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC;AACzC,IAAI,IAAI,aAAa,GAAG,UAAU,EAAE;AACpC,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,aAAa,IAAI,CAAC,CAAC;AAC/D,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK;AAC5C,QAAQ,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC;AACrD,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK;AAC9C,QAAQ,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC;AACvD,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH;AACA,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACvB,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,eAAe;AACnB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,YAAY,KAAK,oBAAoB,EAAE;AAC7C,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,sBAAsB,EAAE;AAClD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;AAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,wBAAwB,EAAE;AACtD,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,qBAAqB,EAAE;AAClE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAChC,GAAG;AACH;;ACxTe,yBAAQ,EAAE,KAAK,EAAE;AAChC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC7B,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE;AACjF,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAClD,QAAQ,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtE,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM;AAChD,QAAQ,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL,GAAG,MAAM;AACT,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG;AACH;AACA;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAChD,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAClD,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,IAAI,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE;;ACrCe,2BAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrG,GAAG;AACH;;ACJe,6BAAQ,EAAE,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AACpE,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B;AACA,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAC/C;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AAClC,EAAE,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,WAAW,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;AACtF;AACA,EAAE,IAAI,YAAY,GAAG,CAAC,SAAS,CAAC;AAChC,EAAE,IAAI,GAAG,EAAE,YAAY,GAAG,SAAS,CAAC;AACpC;AACA;AACA,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C;AACA,EAAE,MAAM,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACnC,EAAE,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,aAAa,GAAG;AAC1B,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,iBAAiB;AACpG,SAAS,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACtD,IAAI,IAAI,MAAM,CAAC,qBAAqB,KAAK,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;AACtF,MAAM,MAAM,WAAW,GAAG,EAAE,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACpE,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC;AAC1E,oBAAoB,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC;AAChE,oBAAoB,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AACnE,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;AAC1D,GAAG;AACH,EAAE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjD;;ACtCe,uBAAQ,EAAE,SAAS,EAAE;AACpC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACxC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACpD;AACA,IAAI,SAAS,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACvE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAChD,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,cAAc,KAAK,CAAC,EAAE;AAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,GAAG,MAAM;AACT,IAAI,QAAQ,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,KAAK,cAAc,CAAC,CAAC;AACtE,IAAI,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC;AAChC,IAAI,KAAK,GAAG,QAAQ,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACvB,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,KAAK;AACT,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,qBAAqB,KAAK,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzJ;AACA,EAAE,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE;AACpC,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpC;;AC1Ce,4BAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS;AACtD,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7D;AACA,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAC7M;AACA,EAAE,IAAI,WAAW,CAAC;AAClB,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,0BAA0B,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,GAAG,MAAM;AACT,IAAI,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACzC,GAAG;AACH;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB;AACA,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC1D,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACtH,SAAS,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACpD,KAAK,MAAM;AACX,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAChH,SAAS,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACpD,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACrG,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,IAAI,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACrG,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,IAAI,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACxD,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtJ,SAAS,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAClD,KAAK,MAAM;AACX,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC;AAChJ,SAAS,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACxD,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtJ,SAAS,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAClD,KAAK,MAAM;AACX,MAAM,UAAU;AAChB,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC;AAChJ,SAAS,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAClD,KAAK;AACL,GAAG;AACH;;AC/De,0BAAQ,EAAE,cAAc,EAAE;AACzC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/E,EAAE,MAAM;AACR,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB;AACxH,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,IAAI,WAAW,GAAG,cAAc,CAAC;AACnC,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,MAAM,IAAI,OAAO,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,WAAW,EAAE;AACpD,QAAQ,IAAI,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrH,UAAU,WAAW,GAAG,CAAC,CAAC;AAC1B,SAAS,MAAM,IAAI,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAChF,UAAU,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO,MAAM,IAAI,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;AAC7C,QAAQ,WAAW,GAAG,CAAC,CAAC;AACxB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACpC,MAAM,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC;AACjF,KAAK;AACL,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACxC,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5C,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAClE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;AAChF,GAAG;AACH,EAAE,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,EAAE,IAAI,WAAW,KAAK,aAAa,EAAE;AACrC,IAAI,IAAI,SAAS,KAAK,iBAAiB,EAAE;AACzC,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO;AACX,GAAG;AACH;AACA;AACA,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC;AAC/G;AACA,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACvB,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnC,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACjC,EAAE,IAAI,iBAAiB,KAAK,SAAS,EAAE;AACvC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/B,GAAG;AACH;;ACzDe,2BAAQ,EAAE,CAAC,EAAE;AAC5B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;AACxD,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,KAAK,IAAI,UAAU,EAAE;AAC3B,IAAI,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;AACzD,MAAM,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAC;AACnF,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;AAC7C,KAAK;AACL,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;AACpC,IAAI,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;AACpC,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,WAAW,EAAE;AACrH,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,GAAG;AACH;;AClBA,aAAe;AACf,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,kBAAkB;AACpB,CAAC;;AClBc,qBAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE;AACjE,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU;AACpD,GAAG,GAAG,MAAM,CAAC;AACb;AACA,EAAE,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC/B,IAAI,OAAO,GAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,EAAE,IAAI,GAAG,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,CAAC;AAChD;AACA,EAAE,OAAO,gBAAgB,IAAI,CAAC,CAAC;AAC/B;;ACpBe,qBAAQ,EAAE,SAAS,EAAE,YAAY,EAAE;AAClD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM;AACR,IAAI,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ;AAC9D,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACd;AACA,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,CAAC,GAAG,SAAS,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACvC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;AAC9C,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD;AACA;AACA,EAAE,IAAI,WAAW,CAAC;AAClB,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACvE,EAAE,IAAI,cAAc,KAAK,CAAC,EAAE;AAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,GAAG,MAAM;AACT,IAAI,WAAW,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,KAAK,cAAc,CAAC,CAAC;AACzE,GAAG;AACH,EAAE,IAAI,WAAW,KAAK,QAAQ,EAAE;AAChC,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACrC,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC9D;;ACzCe,qBAAQ,IAAI;AAC3B,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B;;ACFe,qBAAQ,IAAI;AAC3B,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACpD;;ACFe,oBAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE;AAC1H,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM;AACR,IAAI,MAAM;AACV,IAAI,SAAS;AACb,GAAG,GAAG,MAAM,CAAC;AACb;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,8BAA8B,EAAE;AACjE,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7C,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7C,EAAE,IAAI,YAAY,CAAC;AACnB,EAAE,IAAI,eAAe,IAAI,SAAS,GAAG,YAAY,EAAE,YAAY,GAAG,YAAY,CAAC;AAC/E,OAAO,IAAI,eAAe,IAAI,SAAS,GAAG,YAAY,EAAE,YAAY,GAAG,YAAY,CAAC;AACpF,OAAO,YAAY,GAAG,SAAS,CAAC;AAChC;AACA;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACtC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,SAAS,CAAC,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAClE,KAAK,MAAM;AACX;AACA,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC9B,QAAQ,SAAS,CAAC,QAAQ,CAAC;AAC3B,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,YAAY;AAC/C,UAAU,QAAQ,EAAE,QAAQ;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AACpE,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE;AACnB,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACtC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5D,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,KAAK;AACL,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACtC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5D,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,MAAM,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,iCAAiC,EAAE;AACrD,QAAQ,MAAM,CAAC,iCAAiC,GAAG,SAAS,aAAa,CAAC,CAAC,EAAE;AAC7E,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAClD,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,OAAO;AACxC,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC9G,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACpH,UAAU,MAAM,CAAC,iCAAiC,GAAG,IAAI,CAAC;AAC1D,UAAU,OAAO,MAAM,CAAC,iCAAiC,CAAC;AAC1D,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACzC,WAAW;AACX,SAAS,CAAC;AACV,OAAO;AACP,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC;AACvG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAC7G,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACrEA,gBAAe;AACf,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,WAAW;AACb,CAAC;;ACZc,sBAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE;AACjD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9B,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACvD;;ACRe,wBAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,EAAE;AACzD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;AACxD,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO;AAC7B,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE;AACzB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI,WAAW,GAAG,aAAa,EAAE,GAAG,GAAG,MAAM,CAAC;AAClD,SAAS,IAAI,WAAW,GAAG,aAAa,EAAE,GAAG,GAAG,MAAM,CAAC;AACvD,SAAS,GAAG,GAAG,OAAO,CAAC;AACvB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,YAAY,IAAI,WAAW,KAAK,aAAa,EAAE;AACrD,IAAI,IAAI,GAAG,KAAK,OAAO,EAAE;AACzB,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAC/C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC9C,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE;AACxB,MAAM,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC9C,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH;;AC7Be,sBAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,EAAE;AACzD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AACxD,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO;AAC7B,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI,WAAW,GAAG,aAAa,EAAE,GAAG,GAAG,MAAM,CAAC;AAClD,SAAS,IAAI,WAAW,GAAG,aAAa,EAAE,GAAG,GAAG,MAAM,CAAC;AACvD,SAAS,GAAG,GAAG,OAAO,CAAC;AACvB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/B;AACA,EAAE,IAAI,YAAY,IAAI,WAAW,KAAK,aAAa,EAAE;AACrD,IAAI,IAAI,GAAG,KAAK,OAAO,EAAE;AACzB,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC7C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC5C,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE;AACxB,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC5C,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC5C,KAAK;AACL,GAAG;AACH;;ACxBA,iBAAe;AACf,EAAE,aAAa;AACf,EAAE,eAAe;AACjB,EAAE,aAAa;AACf,CAAC;;ACRc,gBAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE;AAC9F,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;AACrC;AACA,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS;AAC1F,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,8BAA8B,EAAE;AACjE,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AACtE,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACxF,EAAE,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,CAAC,IAAI,YAAY,EAAE;AAC1F,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC;AACA;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACnC;AACA;AACA,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE;AAC3E,QAAQ,UAAU,GAAG,CAAC,CAAC;AACvB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE;AACxD,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE;AACrG,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE;AACrG,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,UAAU,EAAE,OAAO,KAAK,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,IAAI,UAAU,GAAG,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;AACnD,OAAO,IAAI,UAAU,GAAG,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;AACxD,OAAO,SAAS,GAAG,OAAO,CAAC;AAC3B;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,EAAE;AAC5F,IAAI,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACzC;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,SAAS,KAAK,OAAO,EAAE;AAC/B,MAAM,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACtC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACvB,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,SAAS,CAAC,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AACtD,KAAK,MAAM;AACX;AACA,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC9B,QAAQ,SAAS,CAAC,QAAQ,CAAC;AAC3B,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC;AACnC,UAAU,QAAQ,EAAE,QAAQ;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,GAAG,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE;AACnB,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAClD,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC3B,MAAM,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE;AACjD,QAAQ,MAAM,CAAC,6BAA6B,GAAG,SAAS,aAAa,CAAC,CAAC,EAAE;AACzE,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAClD,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,OAAO;AACxC,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAC1G,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAChH,UAAU,MAAM,CAAC,6BAA6B,GAAG,IAAI,CAAC;AACtD,UAAU,OAAO,MAAM,CAAC,6BAA6B,CAAC;AACtD,UAAU,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxD,SAAS,CAAC;AACV,OAAO;AACP,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACnG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACzG,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AC1He,oBAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE;AAC9F,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1B,IAAI,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC;AACpC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACjE;;ACRA;AACe,kBAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE;AACnF,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACvC,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/F,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,IAAI,SAAS,EAAE,OAAO,KAAK,CAAC;AAChC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;AACrB;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACvF;;ACZA;AACe,kBAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE;AACnF,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY;AACzD,GAAG,GAAG,MAAM,CAAC;AACb;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,IAAI,SAAS,EAAE,OAAO,KAAK,CAAC;AAChC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;AACrB;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzD,GAAG;AACH,EAAE,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AACxE,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AACnD,EAAE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,EAAE,MAAM,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE;AACA,EAAE,MAAM,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAChF,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;AACzD,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,MAAM,IAAI,CAAC,QAAQ,IAAI,mBAAmB,IAAI,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;AACpE,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7C,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAClE;;ACnCA;AACe,mBAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE;AACnF,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC3E;;ACJA;AACe,uBAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE;AACpG,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACjE,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACrF;AACA,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/E;AACA,EAAE,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC/C;AACA;AACA,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnD,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,GAAG,WAAW,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,SAAS,EAAE;AAC1E,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAC5C,KAAK;AACL,GAAG,MAAM;AACT;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,KAAK,CAAC,WAAW,GAAG,QAAQ,IAAI,SAAS,EAAE;AACxE,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AAC5C,KAAK;AACL,GAAG;AACH,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxD;AACA,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9D;;AC3Be,4BAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AACxC;AACA,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/G,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACzC,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AACjC,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM;AACN,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,aAAa,GAAG,CAAC,CAAC;AACjE,YAAY,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC;AAC9F,QAAQ;AACR,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AACzB,QAAQ,YAAY,GAAG,UAAU;AACjC,WAAW,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACxH,WAAW,EAAE,CAAC,CAAC,CAAC;AAChB,WAAW,KAAK,EAAE,CAAC;AACnB;AACA,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC7B,UAAU,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrC,OAAO;AACP,KAAK,MAAM,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE;AACpE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACvB,MAAM,YAAY,GAAG,UAAU;AAC/B,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACtH,SAAS,EAAE,CAAC,CAAC,CAAC;AACd,SAAS,KAAK,EAAE,CAAC;AACjB;AACA,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK;AACL,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACjC,GAAG;AACH;;ACtCA,YAAe;AACf,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,CAAC;;ACbc,mBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AACxC;AACA,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtF;AACA,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5D;AACA,EAAE,IAAI,MAAM,CAAC,sBAAsB,EAAE;AACrC,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC3F,IAAI,IAAI,cAAc,KAAK,MAAM,CAAC,cAAc,EAAE;AAClD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,MAAM,SAAS,GAAG,CAAC,CAACA,UAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACtH,QAAQ,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrC,OAAO;AACP,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACnG;AACA,EAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/F,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACrD,EAAE,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;AAC3C,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,GAAG;AACH;AACA,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK;AAC7B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtG,IAAI,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AACjD,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACjG,GAAG;AACH;;AC5Ce,gBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/B;AACA,EAAE,MAAM;AACR,IAAI,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG;AAClG,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B;AACA,EAAE,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,EAAE,MAAM,IAAI,GAAG,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACrD;AACA;AACA,EAAE,IAAI,WAAW,GAAG,YAAY,EAAE;AAClC,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC;AAClE,IAAI,QAAQ,IAAI,YAAY,CAAC;AAC7B,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,CAAC,EAAE;AACpC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG,MAAM,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,EAAE;AAC1D;AACA,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC;AAC3D,IAAI,QAAQ,IAAI,YAAY,CAAC;AAC7B,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,CAAC,EAAE;AACpC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,EAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB;;ACpCe,oBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AAChD,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtI,EAAE,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;AAC/C;;ACDA,WAAe;AACf,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,WAAW;AACb,CAAC;;ACNc,sBAAQ,EAAE,MAAM,EAAE;AACjC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;AACzI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,kBAAkB,GAAG,cAAc,CAAC;AACjE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC;AAC1D,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AACjD;;ACRe,wBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;AACzG,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAC9B;;ACHA,iBAAe;AACf,EAAE,aAAa;AACf,EAAE,eAAe;AACjB,CAAC;;ACJc,oBAAQ,EAAE,MAAM,EAAE;AACjC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AACxC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;AACxD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,GAAG,MAAM;AACT,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,GAAG;AACH;;ACnBe,qBAAQ,EAAE,MAAM,EAAE;AACjC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACrD;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,WAAW,GAAG,CAAC,CAAC;AACvC,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;AACxD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACjD,GAAG,MAAM;AACT,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3C;;ACvBe,iBAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;AACxC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACrD,EAAE,IAAI,iBAAiB,GAAG,WAAW,CAAC;AACtC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,iBAAiB,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AACzB,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;AAClB,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAChC,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,UAAU,EAAE;AAC3B,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,iBAAiB,GAAG,KAAK,GAAG,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,CAAC;AAC7F;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;AAC1B,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvC,GAAG;AACH;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;AACxD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,cAAc,GAAG,iBAAiB,GAAG,KAAK,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACvG,GAAG,MAAM;AACT,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACnE,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,GAAG;AACH;;ACnDe,oBAAQ,EAAE,aAAa,EAAE;AACxC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACrD;AACA,EAAE,IAAI,iBAAiB,GAAG,WAAW,CAAC;AACtC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,iBAAiB,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AACzB,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,iBAAiB,CAAC;AACzC,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,QAAQ,IAAI,aAAa,EAAE;AACtE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;AACjF,MAAM,IAAI,aAAa,GAAG,cAAc,EAAE,cAAc,IAAI,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACjD,GAAG,MAAM;AACT,IAAI,aAAa,GAAG,aAAa,CAAC;AAClC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;AAC/E,IAAI,IAAI,aAAa,GAAG,cAAc,EAAE,cAAc,IAAI,CAAC,CAAC;AAC5D,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACjD,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACnE,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,GAAG;AACH;;ACzCe,wBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpC;;ACFA,mBAAe;AACf,EAAE,WAAW;AACb,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,eAAe;AACjB,CAAC;;ACTD,MAAM,MAAM,IAAI,SAAS,MAAM,GAAG;AAClC,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC7C,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AACxC;AACA,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,EAAE,EAAE,KAAK;AACb,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;AAClD,IAAI,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;AACnD,IAAI,QAAQ,EAAE,KAAK;AACnB,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1C,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC1D,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC9C,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACjE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrE,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3E,EAAE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC;AACvC,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7D,EAAE,IAAI,KAAK,GAAG,QAAQ,KAAK,UAAU,CAAC;AACtC;AACA;AACA,EAAE,IAAI,CAAC,IAAI;AACX,OAAO,KAAK;AACZ,OAAO,OAAO,CAAC,KAAK;AACpB;AACA,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI;AACpD,UAAU,WAAW,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,CAAC;AACvD,UAAU,WAAW,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,CAAC;AACvD,UAAU,WAAW,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,CAAC;AACvD,KAAK;AACL,IAAI;AACJ,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC3C,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AAC3B,IAAI,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;AAC1B,IAAI,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,IAAI,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnE,GAAG;AACH,EAAE,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AAC9B,IAAI,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE;AACvB,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACnE,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACrE,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AACjD,MAAM,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC1H,QAAQ,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC;AACA;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;AAC/D,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,IAAI,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,MAAM,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB,MAAM,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;AAC5B,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;AACnD;AACA;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,EAAE,CAAC;;AC9GW,qBAAQ,EAAE,KAAK,EAAE;AAChC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AACrC;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,8BAA8B,EAAE;AACjE,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;AAC3C,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO;AAC5D,GAAG;AACH,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9C,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,OAAO;AAClE,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO;AAClE,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;AAC7C,EAAE,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnI,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAClF,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAClF,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC;AACA;AACA;AACA,EAAE,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,CAAC;AACvF,EAAE,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,CAAC;AACvF,EAAE;AACF,IAAI,kBAAkB;AACtB,QAAQ,CAAC,MAAM,IAAI,kBAAkB;AACrC,QAAQ,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC;AAC5D,IAAI;AACJ,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACrB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,mBAAmB,EAAE,IAAI;AAC7B,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,WAAW,EAAE,SAAS;AAC1B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACpC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AACtB,EAAE,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;AACpC,EAAE,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAC5D,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;AAChE,IAAI;AACJ,MAAMA,UAAQ,CAAC,aAAa;AAC5B,SAAS,CAAC,CAACA,UAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;AACxD,SAASA,UAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC;AAChD,MAAM;AACN,MAAMA,UAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACpC,KAAK;AACL;AACA,IAAI,MAAM,oBAAoB,GAAG,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,wBAAwB,CAAC;AAC5G,IAAI,IAAI,MAAM,CAAC,6BAA6B,IAAI,oBAAoB,EAAE;AACtE,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/B;;AC5Ee,oBAAQ,EAAE,KAAK,EAAE;AAChC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACxD,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;AAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,OAAO;AAC1D,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACrE,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACrE,EAAE,IAAI,CAAC,CAAC,uBAAuB,EAAE;AACjC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B;AACA,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5B,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,QAAQ,EAAE,KAAK;AACvB,QAAQ,QAAQ,EAAE,KAAK;AACvB,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACvE,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE;AAC7B;AACA,MAAM;AACN,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE;AAC5E,YAAY,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAChF,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,OAAO;AACf,OAAO;AACP,KAAK,MAAM;AACX,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE;AAC1E,UAAU,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAC9E,MAAM;AACN,MAAM,OAAO;AACb,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,YAAY,IAAIA,UAAQ,CAAC,aAAa,EAAE;AACnD,IAAI,IAAI,CAAC,CAAC,MAAM,KAAKA,UAAQ,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClF,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO;AAC5D;AACA,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;AAClD,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;AAClD,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;AAC1G;AACA,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAC/C,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE;AACxI,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,KAAK,MAAM;AACX;AACA,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE;AACnD,QAAQ,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;AACpF,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1H,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAC/C,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,EAAE;AACpF,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzB,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE;AACvC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACzD,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChD,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,EAAE;AACjG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC;AAC5B,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;AACrD;AACA,EAAE,IAAI,mBAAmB,GAAG,IAAI,CAAC;AACjC,EAAE,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/C,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAClC,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG;AACnE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,eAAe,CAAC,CAAC;AAC5J,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE;AACxE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,eAAe,CAAC,CAAC;AAC3J,GAAG;AACH;AACA,EAAE,IAAI,mBAAmB,EAAE;AAC3B,IAAI,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACrC,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE;AACjH,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;AAChD,GAAG;AACH,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE;AACjH,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;AAChD,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACtE,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACpC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACvC,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC1C,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC1C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;AACpD,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;AACrH,QAAQ,OAAO;AACf,OAAO;AACP,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;AAClD,MAAM,OAAO;AACb,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO;AACrD;AACA;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,qBAAqB,EAAE;AACrF,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC/B,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvB;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,QAAQ,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACtE,QAAQ,IAAI,EAAE,IAAI,CAAC,cAAc;AACjC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACzB,MAAM,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,UAAU,CAAC;AACxE,MAAM,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;AACvB,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/C;AACA,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7C;;AC5Me,mBAAQ,EAAE,KAAK,EAAE;AAChC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC;AACA,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ;AACxE,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;AAC3C,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAChC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3C,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,EAAE;AACjI,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG;AACH;AACA;AACA,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACnC,EAAE,MAAM,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;AACtD;AACA;AACA,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE;AACzB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,QAAQ,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE;AACrE,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACnC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;AACvB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AACpD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,cAAc,EAAE;AACzI,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,IAAI,UAAU,CAAC;AACjB,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC3B,IAAI,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,GAAG,MAAM;AACT,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvB,IAAI,IAAI,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AAC7C,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;AAClD,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE;AACjC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACpD,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACpD;AACA,QAAQ,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AACzE,QAAQ,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAC7D,QAAQ,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC1C,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,uBAAuB,EAAE;AACxE,UAAU,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,IAAI,GAAG,EAAE;AACpE,UAAU,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,MAAM,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,6BAA6B,CAAC;AAC9D;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,MAAM,IAAI,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AAClE;AACA,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC5D,MAAM,IAAI,GAAG,EAAE,WAAW,GAAG,CAAC,WAAW,CAAC;AAC1C;AACA,MAAM,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC3B,MAAM,IAAI,mBAAmB,CAAC;AAC9B,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAC/F,MAAM,IAAI,YAAY,CAAC;AACvB,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/C,QAAQ,IAAI,MAAM,CAAC,sBAAsB,EAAE;AAC3C,UAAU,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE;AACnE,YAAY,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC;AAC/D,WAAW;AACX,UAAU,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACtD,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC1C,SAAS,MAAM;AACf,UAAU,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;AACtE,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE;AACtD,QAAQ,IAAI,MAAM,CAAC,sBAAsB,EAAE;AAC3C,UAAU,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE;AAClE,YAAY,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC;AAC/D,WAAW;AACX,UAAU,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACtD,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC1C,SAAS,MAAM;AACf,UAAU,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;AACtE,OAAO,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACxC,QAAQ,IAAI,SAAS,CAAC;AACtB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;AAC1C,YAAY,SAAS,GAAG,CAAC,CAAC;AAC1B,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AAC/I,UAAU,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5C,SAAS,MAAM;AACf,UAAU,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,WAAW,GAAG,CAAC,WAAW,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;AAC3C,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;AACjC,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3F,SAAS,MAAM;AACf,UAAU,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/F,UAAU,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9E,UAAU,IAAI,YAAY,GAAG,gBAAgB,EAAE;AAC/C,YAAY,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5C,WAAW,MAAM,IAAI,YAAY,GAAG,CAAC,GAAG,gBAAgB,EAAE;AAC1D,YAAY,gBAAgB,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AAClD,WAAW,MAAM;AACjB,YAAY,gBAAgB,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AAClD,WAAW;AACX,SAAS;AACT,OAAO,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACxC,QAAQ,MAAM,CAAC,cAAc,EAAE,CAAC;AAChC,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,sBAAsB,IAAI,QAAQ,EAAE;AACrD,QAAQ,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5D,QAAQ,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,QAAQ,UAAU,CAAC,aAAa,CAAC,MAAM;AACvC,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO;AAC/E,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxC,UAAU,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,UAAU,UAAU,CAAC,MAAM;AAC3B,YAAY,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AACrD,YAAY,UAAU,CAAC,aAAa,CAAC,MAAM;AAC3C,cAAc,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AACtD,cAAc,MAAM,CAAC,aAAa,EAAE,CAAC;AACrC,aAAa,CAAC,CAAC;AACf,WAAW,EAAE,CAAC,CAAC,CAAC;AAChB,SAAS,CAAC,CAAC;AACX,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,QAAQ,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC3C,QAAQ,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC/B,UAAU,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,UAAU,UAAU,CAAC,aAAa,CAAC,MAAM;AACzC,YAAY,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AACpD,YAAY,MAAM,CAAC,aAAa,EAAE,CAAC;AACnC,WAAW,CAAC,CAAC;AACb,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC3C,OAAO;AACP;AACA,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACjC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACrE,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACjC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO;AACX,GAAG;AACH;AACA;AACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE;AAC3G,IAAI,MAAM,SAAS,IAAI,CAAC,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtF,IAAI,IAAI,OAAO,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,WAAW,EAAE;AAC1D,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE;AACjF,QAAQ,SAAS,GAAG,CAAC,CAAC;AACtB,QAAQ,SAAS,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9D,OAAO;AACP,KAAK,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;AAC5C,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxF,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACjE,EAAE,MAAM,SAAS,IAAI,SAAS,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5F;AACA,EAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE;AACtC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC5B,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AAC1C,MAAM,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AACjF,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AAC1C,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AACtF,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC7B,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AAC5C,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AAC5C,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,OAAO;AACP,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACtD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAC5C,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,KAAK;AACL,GAAG;AACH;;ACpSe,iBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;AAChC;AACA,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,OAAO;AACzC;AACA;AACA,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;AAC3B,GAAG;AACH;AACA;AACA,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC9D;AACA;AACA,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B;AACA,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AACtB,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACtH,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7D,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvD,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC5E,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,EAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;AACnE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;AAC3B,GAAG;AACH;;ACvCe,gBAAQ,EAAE,CAAC,EAAE;AAC5B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACxD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,wBAAwB,IAAI,MAAM,CAAC,SAAS,EAAE;AACpE,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1B,MAAM,CAAC,CAAC,wBAAwB,EAAE,CAAC;AACnC,KAAK;AACL,GAAG;AACH;;ACTe,iBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;AAC7C,EAAE,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;AAC9C,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC7B,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;AAClG,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AAC/C,KAAK;AACL,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AACpD;AACA,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC7B,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AAC/B;AACA,EAAE,IAAI,WAAW,CAAC;AAClB,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACvE,EAAE,IAAI,cAAc,KAAK,CAAC,EAAE;AAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,GAAG,MAAM;AACT,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,KAAK,cAAc,CAAC,CAAC;AAChF,GAAG;AACH,EAAE,IAAI,WAAW,KAAK,MAAM,CAAC,QAAQ,EAAE;AACvC,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/E,GAAG;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD;;ACpBA,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,SAAS,kBAAkB,GAAG,EAAE;AAChC;AACA,SAAS,YAAY,GAAG;AACxB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS;AACtC,GAAG,GAAG,MAAM,CAAC;AACb;AACA,EAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,EAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE;AAC/C,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACvE,IAAIA,UAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC7E,IAAIA,UAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACzE,GAAG,MAAM;AACT,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACnK,MAAM,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACnF,MAAM,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACjI,MAAM,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC/E,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACpF,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,QAAQA,UAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACpE,QAAQ,kBAAkB,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5H,MAAM,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,MAAMA,UAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC1E,MAAMA,UAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrE,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,wBAAwB,EAAE;AAC/D,IAAI,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1D,GAAG;AACH;AACA;AACA,EAAE,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACnC,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,GAAG,yCAAyC,GAAG,uBAAuB,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpI,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,GAAG;AACxB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM;AACR,IAAI,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS;AACtC,GAAG,GAAG,MAAM,CAAC;AACb;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE;AAC/C,IAAI,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC1E,IAAIA,UAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAChF,IAAIA,UAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC5E,GAAG,MAAM;AACT,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,KAAK,cAAc,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACrK,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACtF,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5E,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAClF,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACvF,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5H,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACtE,MAAMA,UAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC7E,MAAMA,UAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxE,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,wBAAwB,EAAE;AAC/D,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7D,GAAG;AACH;AACA;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,GAAG,yCAAyC,GAAG,uBAAuB,GAAG,QAAQ,CAAC,CAAC;AAC7H,CAAC;AACD;AACA,aAAe;AACf,EAAE,YAAY;AACd,EAAE,YAAY;AACd,CAAC;;ACpHc,sBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM;AACR,IAAI,WAAW,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG;AAC3D,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,EAAE,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,OAAO;AACrF;AACA;AACA,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACvD;AACA,EAAE,IAAI,UAAU,IAAI,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AAC7D,IAAI,MAAM,oBAAoB,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;AACjG,IAAI,IAAI,oBAAoB,EAAE;AAC9B,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACtH,QAAQ,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACvD,QAAQ,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO;AACtD,QAAQ,IAAI,KAAK,KAAK,eAAe,KAAK,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC,EAAE;AAC3F,UAAU,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AAC/C,SAAS,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE;AAC9C,UAAU,oBAAoB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/D,SAAS,MAAM;AACf,UAAU,oBAAoB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACjE,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,gBAAgB,GAAG,oBAAoB,IAAI,MAAM,CAAC,cAAc,CAAC;AAC3E,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;AACnD,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,GAAG,CAAC,CAAC;AAC5D,IAAI,IAAI,WAAW,IAAI,CAAC,UAAU,EAAE;AACpC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC;AAClH,KAAK,MAAM,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;AAC3C,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,MAAM,IAAI,gBAAgB,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AAC7D,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC;AACxE,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;AAC3G,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAC;AACrH;AACA,IAAI,IAAI,gBAAgB,IAAI,WAAW,EAAE;AACzC,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAClD;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAC;AAC1C;AACA,IAAI,IAAI,WAAW,IAAI,WAAW,EAAE;AACpC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AAC3B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AAC1B,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,GAAG,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACnF,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAChD,GAAG;AACH;;ACjEe,sBAAQ,EAAE,WAAW,EAAE;AACtC;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,SAAS,CAAC;AACrC,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB;AACA,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AACzD,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/D,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAClD,MAAM,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;AACpC,MAAM,UAAU,GAAG,KAAK,CAAC;AACzB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC;AAC7B;;ACrBA,kBAAe,EAAE,aAAa,EAAE,aAAa,EAAE;;ACDhC,mBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM;AACR,IAAI,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG;AAChC,GAAG,GAAG,MAAM,CAAC;AACb,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/B,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE;AACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE;AAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,IAAI,IAAI,MAAM,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACjD,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE;AAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC;AAC5D,GAAG,CAAC,CAAC;AACL;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC;;AC3Ce,sBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AACrC;AACA,EAAE,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;;ACFA,cAAe,EAAE,UAAU,EAAE,aAAa,EAAE;;ACA7B,kBAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAClF,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,SAAS,OAAO,GAAG;AACrB,IAAI,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC9D,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACjC,MAAM,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;AAC7B,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,OAAO;AACP,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,OAAO;AACP,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,KAAK,MAAM;AACX,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH;;AC/Be,sBAAQ,IAAI;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,SAAS,OAAO,GAAG;AACrB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAChG,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;AACpE,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5D,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7D,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,SAAS;AACpB,MAAM,OAAO;AACb,MAAM,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AACvD,MAAM,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;AACtD,MAAM,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AACpD,MAAM,IAAI;AACV,MAAM,OAAO;AACb,KAAK,CAAC;AACN,GAAG;AACH;;ACnBA,aAAe;AACf,EAAE,SAAS;AACX,EAAE,aAAa;AACf,CAAC;;ACLD,SAAS,aAAa,GAAG;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpC,EAAE,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnM;AACA,EAAE,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,EAAE;AAClF,IAAI,MAAM,CAAC,QAAQ,GAAG,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC;AACvD,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AACnD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3C,EAAE,MAAM,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3C;AACA;AACA,EAAE,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AACtF;AACA,EAAE,IAAI,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE;AAClD,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAC/B,GAAG;AACH,CAAC;AACD;AACA,sBAAe,EAAE,aAAa,EAAE;;ACzBhC,eAAe;AACf,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,SAAS,EAAE,YAAY;AACzB,EAAE,iBAAiB,EAAE,WAAW;AAChC,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,oBAAoB,EAAE,IAAI;AAC5B;AACA,EAAE,8BAA8B,EAAE,KAAK;AACvC;AACA;AACA,EAAE,kBAAkB,EAAE,KAAK;AAC3B,EAAE,kBAAkB,EAAE,EAAE;AACxB;AACA;AACA,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,qBAAqB,EAAE,CAAC;AAC1B,EAAE,sBAAsB,EAAE,IAAI;AAC9B,EAAE,2BAA2B,EAAE,CAAC;AAChC,EAAE,6BAA6B,EAAE,CAAC;AAClC,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,uBAAuB,EAAE,IAAI;AAC/B;AACA;AACA,EAAE,UAAU,EAAE,KAAK;AACnB;AACA;AACA,EAAE,cAAc,EAAE,KAAK;AACvB;AACA;AACA,EAAE,gBAAgB,EAAE,KAAK;AACzB;AACA;AACA,EAAE,MAAM,EAAE,OAAO;AACjB;AACA;AACA,EAAE,WAAW,EAAE,SAAS;AACxB;AACA;AACA,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,aAAa,EAAE,CAAC;AAClB,EAAE,eAAe,EAAE,CAAC;AACpB,EAAE,mBAAmB,EAAE,QAAQ;AAC/B,EAAE,cAAc,EAAE,CAAC;AACnB,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,oBAAoB,EAAE,KAAK;AAC7B,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,iBAAiB,EAAE,CAAC;AACtB,EAAE,mBAAmB,EAAE,IAAI;AAC3B,EAAE,wBAAwB,EAAE,KAAK;AACjC;AACA;AACA,EAAE,aAAa,EAAE,KAAK;AACtB;AACA;AACA,EAAE,YAAY,EAAE,KAAK;AACrB;AACA;AACA,EAAE,UAAU,EAAE,CAAC;AACf,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,wBAAwB,EAAE,KAAK;AACjC,EAAE,wBAAwB,EAAE,IAAI;AAChC,EAAE,6BAA6B,EAAE,KAAK;AACtC,EAAE,mBAAmB,EAAE,KAAK;AAC5B;AACA;AACA,EAAE,iBAAiB,EAAE,IAAI;AACzB;AACA;AACA,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,eAAe,EAAE,IAAI;AACvB;AACA;AACA,EAAE,mBAAmB,EAAE,KAAK;AAC5B,EAAE,qBAAqB,EAAE,KAAK;AAC9B;AACA;AACA,EAAE,UAAU,EAAE,KAAK;AACnB;AACA;AACA,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,wBAAwB,EAAE,IAAI;AAChC,EAAE,mBAAmB,EAAE,KAAK;AAC5B;AACA;AACA,EAAE,aAAa,EAAE,IAAI;AACrB,EAAE,mBAAmB,EAAE,IAAI;AAC3B;AACA;AACA,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,oBAAoB,EAAE,CAAC;AACzB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,sBAAsB,EAAE,KAAK;AAC/B;AACA;AACA,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,cAAc,EAAE,mBAAmB;AACrC,EAAE,iBAAiB,EAAE,IAAI;AACzB;AACA;AACA,EAAE,gBAAgB,EAAE,IAAI;AACxB;AACA;AACA,EAAE,sBAAsB,EAAE,mBAAmB;AAC7C,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,eAAe,EAAE,8BAA8B;AACjD,EAAE,gBAAgB,EAAE,qBAAqB;AACzC,EAAE,yBAAyB,EAAE,+BAA+B;AAC5D,EAAE,iBAAiB,EAAE,sBAAsB;AAC3C,EAAE,mBAAmB,EAAE,wBAAwB;AAC/C,EAAE,cAAc,EAAE,mBAAmB;AACrC,EAAE,uBAAuB,EAAE,6BAA6B;AACxD,EAAE,cAAc,EAAE,mBAAmB;AACrC,EAAE,uBAAuB,EAAE,6BAA6B;AACxD,EAAE,YAAY,EAAE,gBAAgB;AAChC;AACA;AACA,EAAE,kBAAkB,EAAE,IAAI;AAC1B,CAAC;;ACpID;AAqBA;AACA,MAAM,UAAU,GAAG;AACnB,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,WAAW;AACb,iBAAEC,eAAa;AACf,EAAE,OAAO;AACT,EAAE,MAAM;AACR,CAAC,CAAC;AACF;AACA,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B;AACA,MAAM,MAAM,SAAS,WAAW,CAAC;AACjC,EAAE,WAAW,CAAC,GAAG,IAAI,EAAE;AACvB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;AACpF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK,MAAM;AACX,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC;AAC7B;AACA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AACvE,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;AAC5C,UAAU,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,CAAC;AAClF,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE;AAC/C,MAAM,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACxD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC5D,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO;AAC9E,QAAQ,IAAI,EAAE,eAAe,IAAI,MAAM,IAAI,SAAS,IAAI,YAAY,CAAC,EAAE,OAAO;AAC9E,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;AAC9C,UAAU,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACtD,SAAS;AACT,QAAQ;AACR,UAAU,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,QAAQ;AACrD,aAAa,EAAE,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;AACpD,UAAU;AACV,UAAU,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnF,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAC1C;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC7E,IAAI,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAI,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACnD;AACA;AACA,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB;AACA;AACA,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK;AACvC,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AACxE,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/B;AACA;AACA,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE;AAC5D,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF;AACA,MAAM,UAAU,CAAC,QAAQ,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/D,KAAK,MAAM;AACX,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,GAAG;AACT,MAAM,EAAE;AACR,MAAM,UAAU;AAChB,MAAM,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9B;AACA;AACA,MAAM,UAAU,EAAE,EAAE;AACpB;AACA;AACA,MAAM,MAAM,EAAE,CAAC,EAAE;AACjB,MAAM,UAAU,EAAE,EAAE;AACpB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,eAAe,EAAE,EAAE;AACzB;AACA;AACA,MAAM,YAAY,GAAG;AACrB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC;AACxD,OAAO;AACP,MAAM,UAAU,GAAG;AACnB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC;AACtD,OAAO;AACP;AACA,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC;AAC7E,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,YAAY,KAAK,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC;AAClI,MAAM,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,aAAa;AAC3D;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,MAAM,SAAS,EAAE,CAAC;AAClB;AACA;AACA,MAAM,WAAW,EAAE,IAAI;AACvB,MAAM,KAAK,EAAE,KAAK;AAClB;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,iBAAiB,EAAE,CAAC;AAC1B,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,SAAS,EAAE,KAAK;AACtB;AACA;AACA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD;AACA;AACA,MAAM,WAAW,GAAG,SAAS,WAAW,GAAG;AAC3C,QAAQ,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC7E,QAAQ,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC5D,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE;AACnC,UAAU,OAAO,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACzB,UAAU,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACxB,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvB,UAAU,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1B,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,kBAAkB,GAAG;AACpC,UAAU,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3B,UAAU,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1B,UAAU,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACzB,SAAS,CAAC;AACV,QAAQ,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACnH,OAAO,EAAE,CAAC;AACV,MAAM,eAAe,EAAE;AACvB,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,mBAAmB,EAAE,SAAS;AACtC,QAAQ,cAAc,EAAE,SAAS;AACjC,QAAQ,WAAW,EAAE,SAAS;AAC9B,QAAQ,gBAAgB,EAAE,SAAS;AACnC,QAAQ,cAAc,EAAE,SAAS;AACjC,QAAQ,kBAAkB,EAAE,SAAS;AACrC;AACA,QAAQ,YAAY,EAAE,uDAAuD;AAC7E;AACA,QAAQ,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE;AAClC,QAAQ,YAAY,EAAE,SAAS;AAC/B;AACA,QAAQ,UAAU,EAAE,EAAE;AACtB,QAAQ,mBAAmB,EAAE,SAAS;AACtC,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,WAAW,EAAE,SAAS;AAC9B,OAAO;AACP;AACA;AACA,MAAM,UAAU,EAAE,IAAI;AACtB;AACA;AACA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;AAClD;AACA,MAAM,OAAO,EAAE;AACf,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO;AACP;AACA;AACA,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,YAAY,EAAE,CAAC;AACrB;AACA,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,oBAAoB,GAAG;AACzB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW;AAC/D,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AAC/B,MAAM,IAAI,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC;AAC1D,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACrC,UAAU,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACjD,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,UAAU,IAAI,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;AACvD,SAAS;AACT,OAAO;AACP,MAAM,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACrC,UAAU,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACjD,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,UAAU,IAAI,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;AACvD,SAAS;AACT,OAAO;AACP,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,EAAE;AAClE,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AACxC;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE;AAC5B,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;AAC5B,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC;AACA,IAAI,SAAS,YAAY,GAAG;AAC5B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5F,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5G,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACxC,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACjC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AAChC,MAAM,YAAY,EAAE,CAAC;AACrB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,QAAQ,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAClC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACxI,QAAQ,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9E,OAAO,MAAM;AACb,QAAQ,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,OAAO;AACP,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,YAAY,EAAE,CAAC;AACvB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;AAC9D,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI,EAAE;AACnD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AACrD,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB;AACA,MAAM,YAAY,GAAG,gBAAgB,KAAK,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;AACnF,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,KAAK,gBAAgB,MAAM,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,UAAU,CAAC,EAAE;AAC/G,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,GAAG;AACd,OAAO,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAChF,OAAO,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1E;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;AAC3C;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,KAAK;AAChD,MAAM,IAAI,YAAY,KAAK,UAAU,EAAE;AACvC,QAAQ,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AACjC,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAClC,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACpC;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO;AACnC;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9B;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;AACnC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1B;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AACrC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AACrC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC5G,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACtF,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1B;AACA;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B;AACA;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,cAAc,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE;AACrD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;AACrC,KAAK,GAAG,MAAM,CAAC;AACf;AACA,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE;AAClE,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjC;AACA;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1B;AACA;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9B,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACnC,QAAQ,MAAM;AACd,WAAW,WAAW,CAAC;AACvB,YAAY,MAAM,CAAC,iBAAiB;AACpC,YAAY,MAAM,CAAC,gBAAgB;AACnC,YAAY,MAAM,CAAC,cAAc;AACjC,YAAY,MAAM,CAAC,cAAc;AACjC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,WAAW,UAAU,CAAC,OAAO,CAAC;AAC9B,WAAW,UAAU,CAAC,yBAAyB,CAAC,CAAC;AACjD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3B;AACA;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC/D,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,cAAc,KAAK,KAAK,EAAE;AAClC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AAClC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtC,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,OAAO,cAAc,CAAC,WAAW,EAAE;AACrC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;AAChD,GAAG;AACH;AACA,EAAE,WAAW,gBAAgB,GAAG;AAChC,IAAI,OAAO,gBAAgB,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,WAAW,QAAQ,GAAG;AACxB,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,WAAW,KAAK,GAAG;AACrB,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH;AACA,EAAE,WAAW,CAAC,GAAG;AACjB,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;;ACreA,eAAe;AACf,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,KAAK,EAAE;AACT,IAAI,MAAM,EAAE,MAAM;AAClB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,MAAM,EAAE,MAAM;AAClB,GAAG;AACH,CAAC;;ACRD,gBAAe;AACf,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,CAAC;;ACRD,MAAM,OAAO,IAAI,SAAS,OAAO,GAAG;AACpC,EAAE,SAAS,QAAQ,GAAG;AACtB,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AACxD,IAAI,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAChG,GAAG;AACH,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;AACvD,IAAI,QAAQ,EAAE,QAAQ,EAAE;AACxB,IAAI,WAAW,EAAE,8CAA8C,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AAChG,GAAG,CAAC;AACJ,CAAC,EAAE,CAAC;;ACVJ,gBAAe;AACf,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,CAAC;;ACPD,aAAe;AACf,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,EAAE;AACd,QAAQ,aAAa,GAAG;AACxB,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;AACzE,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACtC,UAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,wBAAwB,GAAG;AACnC,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO;AACzE,UAAU,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3C,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B;AACA,MAAM,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrE;AACA;AACA,MAAM,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACxE,MAAM,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC9F,KAAK;AACL,GAAG;AACH,CAAC;;AChCD,MAAM,QAAQ,GAAG;AACjB,EAAE,IAAI,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,sBAAsB;AAChE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,SAAS,KAAK;AACrD;AACA;AACA;AACA,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,cAAc,GAAG,SAAS,cAAc,GAAG;AACvD,QAAQ,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,OAAO,CAAC;AACR;AACA,MAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE;AACxC,QAAQ,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;AACrD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC7C,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7B,MAAM,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU;AACvF,MAAM,SAAS,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS;AACpF,MAAM,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa;AAChG,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO;AAC7D,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACpD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,QAAQ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC7F;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACpD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;AACnC,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,MAAM,EAAE;AACV,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,oBAAoB,EAAE,KAAK;AAC/B,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,QAAQ,EAAE;AAChB,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAQ,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChC,KAAK;AACL,GAAG;AACH,CAAC;;ACtFD,MAAM,OAAO,GAAG;AAChB,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5E,IAAI,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACtE,IAAI,MAAM;AACV,MAAM,IAAI,EAAE,YAAY;AACxB,MAAM,EAAE,EAAE,UAAU;AACpB,MAAM,MAAM;AACZ,MAAM,UAAU,EAAE,kBAAkB;AACpC,MAAM,WAAW;AACjB,MAAM,MAAM,EAAE,cAAc;AAC5B,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AACvB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC/B,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC;AAClD,SAAS,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAC7D;AACA,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,eAAe,CAAC;AACrF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC;AACrF,KAAK,MAAM;AACX,MAAM,WAAW,GAAG,aAAa,IAAI,cAAc,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAC3E,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AACrD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7E,IAAI,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,MAAM,IAAI;AACV,MAAM,EAAE;AACR,MAAM,MAAM;AACZ,MAAM,UAAU,EAAE,MAAM,CAAC,UAAU;AACnC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,SAAS,UAAU,GAAG;AAC1B,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AACrD,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,YAAY,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC9D,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,kBAAkB,IAAI,MAAM,KAAK,cAAc,EAAE;AACjF,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,OAAO;AACP,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;AAC9C,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE;AACxD,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,EAAE;AACV,QAAQ,MAAM,GAAG,SAAS,SAAS,GAAG;AACtC,UAAU,MAAM,cAAc,GAAG,EAAE,CAAC;AACpC,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAY,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,WAAW;AACX,UAAU,OAAO,cAAc,CAAC;AAChC,SAAS,EAAE,CAAC;AACZ,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,EAAE,CAAC;AACnB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC;AAC9B,IAAI,MAAM,aAAa,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtE,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AAChC,UAAU,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1G,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAChC,QAAQ,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,KAAK,EAAE;AACxD,UAAU,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,GAAG,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpD,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACrC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClE,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5D,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACnE,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,IAAI,UAAU,EAAE,CAAC;AACjB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrD,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;AACvC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,2BAA2B,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACxG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;AACnG,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;AAC7D,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE;AAC1D,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3C,IAAI,IAAI,cAAc,GAAG,WAAW,GAAG,CAAC,CAAC;AACzC,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,OAAO;AACP,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACrC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC1B,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AAClD,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAC7C,QAAQ,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACxE,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,iBAAiB,CAAC,GAAG,SAAS,CAAC;AAC5E,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,WAAW,CAAC,aAAa,EAAE;AAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,IAAI,EAAE,OAAO;AAC/E,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACtC,MAAM,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACzC,UAAU,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC;AAC7D,QAAQ,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACvC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,aAAa,GAAG,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC;AACxD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC/B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACrC,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAe;AACf,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,MAAM,EAAE;AACV,IAAI,OAAO,EAAE;AACb,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,MAAM,EAAE,EAAE;AAChB,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,WAAW,EAAE,IAAI;AACvB,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,CAAC;AACvB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAQ,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAQ,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD,QAAQ,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAQ,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,QAAQ,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AAC5C,QAAQ,KAAK,EAAE,EAAE;AACjB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO;AACjD,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,mBAAmB,EAAE,IAAI;AACjC,OAAO,CAAC;AACR,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACnD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3D;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;AACvC,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAChC,OAAO;AACP,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO;AACjD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,CAAC;;AChPD,MAAM,QAAQ,GAAG;AACjB,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;AAC7H,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;AAC7H,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;AAC1D,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,IAAI,IAAID,UAAQ,CAAC,aAAa,IAAIA,UAAQ,CAAC,aAAa,CAAC,QAAQ,KAAKA,UAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,IAAIA,UAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,EAAE;AAClM,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;AAC/H,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC;AACzB;AACA,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAClJ,QAAQ,OAAO,SAAS,CAAC;AACzB,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC/C,MAAM,IAAI,GAAG,EAAE,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG;AAC1B,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;AAC7C,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;AAC5D,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7D,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5E,OAAO,CAAC;AACR,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ;AACR,UAAU,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW;AAClD,aAAa,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY;AACtD,UAAU;AACV,UAAU,MAAM,GAAG,IAAI,CAAC;AACxB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;AAC5D,QAAQ,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACjD,aAAa,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACtG,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACtG,KAAK,MAAM;AACX,MAAM,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;AAC5D,QAAQ,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACjD,aAAa,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACrD,MAAM,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACrD,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAChC,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AACxC,IAAI,CAAC,CAACA,UAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AACzC,IAAI,CAAC,CAACA,UAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AACpC,GAAG;AACH,CAAC,CAAC;AACF;AACA,eAAe;AACf,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,MAAM,EAAE;AACV,IAAI,QAAQ,EAAE;AACd,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,QAAQ,EAAE;AAChB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAQ,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,QAAQ,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAClC,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AChHD,SAAS,gBAAgB,GAAG;AAC5B,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;AAC9B,EAAE,IAAI,WAAW,GAAG,SAAS,IAAIA,UAAQ,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,MAAM,OAAO,GAAGA,UAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAG,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW;AAClB,OAAOA,UAAQ,CAAC,cAAc;AAC9B,OAAOA,UAAQ,CAAC,cAAc,CAAC,UAAU;AACzC;AACA;AACA,OAAOA,UAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI;AAC1D,IAAI;AACJ;AACA,IAAI,WAAW,GAAGA,UAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC5E,GAAG;AACH;AACA,EAAE,OAAO,WAAW,CAAC;AACrB,CAAC;AACD,MAAM,UAAU,GAAG;AACnB,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE;AAC7B,EAAE,mBAAmB,EAAE,SAAS;AAChC,EAAE,iBAAiB,EAAE,EAAE;AACvB,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,gBAAgB,CAAC;AACpF,IAAI,OAAO,gBAAgB,EAAE,GAAG,OAAO,GAAG,YAAY,CAAC;AACvD,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,EAAE;AACf;AACA,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC;AAC5B;AACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf;AACA;AACA,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,YAAY,IAAI,CAAC,EAAE;AAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,aAAa,IAAI,CAAC,EAAE;AAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,aAAa,IAAI,CAAC,EAAE;AAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;AAChC,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE;AACrD,MAAM,EAAE,GAAG,EAAE,CAAC;AACd,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK;AACL;AACA,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;AACzB,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;AACzB;AACA,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE;AAC3B,MAAM,EAAE,GAAG,EAAE,CAAC;AACd,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE;AACnC,MAAM,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,EAAE;AAC7B,QAAQ,EAAE,IAAI,WAAW,CAAC;AAC1B,QAAQ,EAAE,IAAI,WAAW,CAAC;AAC1B,OAAO,MAAM;AACb,QAAQ,EAAE,IAAI,WAAW,CAAC;AAC1B,QAAQ,EAAE,IAAI,WAAW,CAAC;AAC1B,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;AACnB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;AACnB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,EAAE;AACf,MAAM,KAAK,EAAE,EAAE;AACf,MAAM,MAAM,EAAE,EAAE;AAChB,MAAM,MAAM,EAAE,EAAE;AAChB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,GAAG;AACH,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,IAAI,CAAC;AACrG;AACA,IAAI,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;AAC7C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE;AAC5B,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC3F,aAAa,OAAO,IAAI,CAAC;AACzB,OAAO,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACpF,WAAW,OAAO,IAAI,CAAC;AACvB,KAAK,MAAM;AACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACtG,KAAK;AACL;AACA,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC;AACjC;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;AACtC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjC;AACA,MAAM,MAAM,QAAQ,GAAG;AACvB,QAAQ,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;AACzB,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAQ,GAAG,EAAE,KAAK;AAClB,OAAO,CAAC;AACR;AACA;AACA,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;AACpE,MAAM,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE;AACzC,QAAQ,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAClC,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC/G,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE;AACpI,UAAU,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,OAAO;AACP;AACA;AACA;AACA,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AACrD,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAClG,MAAM,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,mBAAmB;AACnD,WAAW,QAAQ,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,GAAG,GAAG;AACzD,WAAW,QAAQ,CAAC,KAAK,IAAI,mBAAmB,CAAC,KAAK;AACtD,WAAW,QAAQ,CAAC,SAAS,KAAK,mBAAmB,CAAC,SAAS,CAAC;AAChE,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9B,QAAQ,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,SAAS,CAAC;AAC1D;AACA,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAChC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5E,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAChD,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACpC;AACA,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChF,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAChF;AACA,QAAQ,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,cAAc,EAAE,CAAC;AAChC,QAAQ,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACnC,QAAQ,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACrC;AACA,QAAQ,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;AAChF,UAAU,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACvC,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAClD,UAAU,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;AAChD,UAAU,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;AACxE,UAAU,IAAI,iBAAiB,CAAC,MAAM,IAAI,EAAE,EAAE;AAC9C,YAAY,iBAAiB,CAAC,KAAK,EAAE,CAAC;AACtC,WAAW;AACX,UAAU,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACnH,UAAU,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAClD,UAAU,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,UAAU,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE;AAC7G;AACA,YAAY,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,WAAW,MAAM,IAAI,iBAAiB,CAAC,MAAM,IAAI,EAAE;AACnD,iBAAiB,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG;AACtD,iBAAiB,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC;AACvD,iBAAiB,QAAQ,CAAC,KAAK,IAAI,CAAC;AACpC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,YAAY,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AAC7D,YAAY,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC7D,cAAc,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3F,aAAa,EAAE,CAAC,CAAC,CAAC;AAClB,WAAW;AACX,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AAC1C;AACA;AACA;AACA,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC7D,cAAc,MAAM,eAAe,GAAG,GAAG,CAAC;AAC1C,cAAc,MAAM,CAAC,UAAU,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AAC/D,cAAc,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,cAAc,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC3F,aAAa,EAAE,GAAG,CAAC,CAAC;AACpB,WAAW;AACX,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzD;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzG;AACA,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,YAAY,EAAE,IAAI,QAAQ,KAAK,MAAM,CAAC,YAAY,EAAE,EAAE,OAAO,IAAI,CAAC;AAClG,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AAC7C,SAAS,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,GAAG,EAAE,EAAE;AACpF;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;AAChC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;AACtE,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3B,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5C,OAAO;AACP,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;AACjF,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AACzB,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1C,KAAK;AACL;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;AAChC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AACxE;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;AACnF;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;AACrC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,MAAM,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;AAC7B,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC;AAChD,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;AACrC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACzE,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC;AACjD,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,cAAc,EAAE,KAAK;AAC3B,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,WAAW,EAAE,KAAK;AACxB,MAAM,WAAW,EAAE,CAAC;AACpB,MAAM,YAAY,EAAE,WAAW;AAC/B,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAChD,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClE,QAAQ,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClE,QAAQ,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,QAAQ,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,QAAQ,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE;AACnC,QAAQ,mBAAmB,EAAE,SAAS;AACtC,QAAQ,iBAAiB,EAAE,EAAE;AAC7B,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACtE,QAAQ,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACpC,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACvE,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACjE,KAAK;AACL,GAAG;AACH,CAAC;;ACpaD,MAAM,UAAU,GAAG;AACnB,EAAE,MAAM,GAAG;AACX;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;AACnC,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACnD;AACA,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,OAAO;AACP,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;AACxB,QAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,OAAO;AACP,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7G,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;AAC1D,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;AACpD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;AAClD;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,MAAM;AACN,QAAQ,MAAM,CAAC,MAAM,CAAC,iBAAiB;AACvC,WAAW,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;AAC5C,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC;AAC7B,WAAW,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;AACtD,QAAQ;AACR,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjD,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,MAAM;AACN,QAAQ,MAAM,CAAC,MAAM,CAAC,iBAAiB;AACvC,WAAW,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;AAC5C,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC;AAC7B,WAAW,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;AACtD,QAAQ;AACR,QAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjD,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACzD,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,MAAM,OAAO;AACb,MAAM,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO;AACb,MAAM,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACnD,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACnC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACnC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC1D,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClE,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,IAAI;AAClB;AACA,MAAM,WAAW,EAAE,KAAK;AACxB,MAAM,aAAa,EAAE,wBAAwB;AAC7C,MAAM,WAAW,EAAE,sBAAsB;AACzC,MAAM,SAAS,EAAE,oBAAoB;AACrC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAChD,QAAQ,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,QAAQ,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,CAAC,CAAC,EAAE;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACrD,MAAM;AACN,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;AAC5C,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AACnC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AACnC,QAAQ;AACR,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5E,SAAS,MAAM,IAAI,OAAO,EAAE;AAC5B,UAAU,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/B,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAChD,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpE,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;ACvKD,MAAM,UAAU,GAAG;AACnB,EAAE,MAAM,GAAG;AACX;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACpH,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/H,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACtC;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrJ,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACrG,MAAM,IAAI,OAAO,GAAG,YAAY,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE;AAClE,QAAQ,OAAO,KAAK,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,IAAI,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;AAChD,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAC/F,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AACxD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,KAAK,MAAM;AACX,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;AACxC,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxG,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAChD,MAAM,IAAI,UAAU,CAAC;AACrB,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,QAAQ,CAAC;AACnB,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACjC,QAAQ,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AACjH,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnI,QAAQ,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;AACjF,UAAU,MAAM,CAAC,UAAU,CAAC,kBAAkB,KAAK,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACnF,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE;AACtF,YAAY,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACjF,WAAW,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,CAAC,EAAE;AAC/D,YAAY,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACrD,WAAW;AACX,SAAS;AACT,QAAQ,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;AACpE,QAAQ,SAAS,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3F,QAAQ,QAAQ,GAAG,CAAC,SAAS,GAAG,UAAU,IAAI,CAAC,CAAC;AAChD,OAAO;AACP,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxO,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK;AACxC,UAAU,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,UAAU,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9C,UAAU,IAAI,WAAW,KAAK,OAAO,EAAE;AACvC,YAAY,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvD,WAAW;AACX,UAAU,IAAI,MAAM,CAAC,cAAc,EAAE;AACrC,YAAY,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,IAAI,SAAS,EAAE;AACvE,cAAc,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,YAAY,IAAI,WAAW,KAAK,UAAU,EAAE;AAC5C,cAAc,OAAO;AACrB,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC7D,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,YAAY,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3C,cAAc,OAAO;AACrB,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC7D,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC5C,QAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnD,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE;AACnC,UAAU,MAAM,qBAAqB,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAC/D,UAAU,MAAM,oBAAoB,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7D,UAAU,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,YAAY,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,WAAW;AACX,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE;AAC3E,cAAc,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtE,gBAAgB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5F,eAAe;AACf,cAAc,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtH,aAAa,MAAM;AACnB,cAAc,qBAAqB;AACnC,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC7D,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,cAAc,oBAAoB;AAClC,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC7D,iBAAiB,IAAI,EAAE;AACvB,iBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,WAAW,MAAM;AACjB,YAAY,qBAAqB;AACjC,eAAe,IAAI,EAAE;AACrB,eAAe,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC3D,eAAe,IAAI,EAAE;AACrB,eAAe,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACjE,YAAY,oBAAoB;AAChC,eAAe,IAAI,EAAE;AACrB,eAAe,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC3D,eAAe,IAAI,EAAE;AACrB,eAAe,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACjE,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACjC,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC7F,QAAQ,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,oBAAoB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzK,QAAQ,MAAM,UAAU,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC;AAClD,QAAQ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;AACpC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AACvC,MAAM,IAAI,oBAAoB,CAAC;AAC/B,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACtC,QAAQ,oBAAoB,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,UAAU,GAAG,YAAY,CAAC;AACjF,OAAO,MAAM;AACb,QAAQ,oBAAoB,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,GAAG,UAAU,CAAC;AACjF,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC;AAC1C,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,oBAAoB,KAAK,YAAY,EAAE;AACjD,QAAQ,MAAM,GAAG,KAAK,CAAC;AACvB,OAAO,MAAM;AACb,QAAQ,MAAM,GAAG,KAAK,CAAC;AACvB,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtJ,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACzD,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvG,GAAG;AACH,EAAE,MAAM,GAAG;AACX;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACpH,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/H;AACA,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,cAAc,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACnC,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,UAAU,cAAc,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACpF,SAAS,MAAM;AACf,UAAU,cAAc,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAChH,SAAS;AACT,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/B,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;AACpC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACjC,QAAQ,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACpG,OAAO,MAAM;AACb,QAAQ,cAAc,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AACvE,UAAU,KAAK;AACf,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACvD,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AACvC,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE;AACpC,QAAQ,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC5F,OAAO,MAAM;AACb,QAAQ,cAAc,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAChF,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK;AACL,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO;AAC3B;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACjC;AACA,IAAI;AACJ,MAAM,MAAM,CAAC,MAAM,CAAC,iBAAiB;AACrC,SAAS,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;AACtC,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC;AACvB,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;AAChD,MAAM;AACN,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;AACvD,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1C,KAAK;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrD;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE;AAC5D,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,MAAM,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC/C,MAAM,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACtC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACrE,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,EAAE;AACpE,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3B,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;AACnE,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7D,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,MAAM,GAAG;AACT,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAChB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACpH,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACtC;AACA,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnG,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,EAAE,EAAE,IAAI;AACd,MAAM,aAAa,EAAE,MAAM;AAC3B,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,WAAW,EAAE,KAAK;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,iBAAiB,EAAE,IAAI;AAC7B,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,mBAAmB,EAAE,KAAK;AAChC,MAAM,IAAI,EAAE,SAAS;AACrB,MAAM,cAAc,EAAE,KAAK;AAC3B,MAAM,kBAAkB,EAAE,CAAC;AAC3B,MAAM,qBAAqB,EAAE,CAAC,MAAM,KAAK,MAAM;AAC/C,MAAM,mBAAmB,EAAE,CAAC,MAAM,KAAK,MAAM;AAC7C,MAAM,WAAW,EAAE,0BAA0B;AAC7C,MAAM,iBAAiB,EAAE,iCAAiC;AAC1D,MAAM,aAAa,EAAE,oBAAoB;AACzC,MAAM,YAAY,EAAE,2BAA2B;AAC/C,MAAM,UAAU,EAAE,yBAAyB;AAC3C,MAAM,WAAW,EAAE,0BAA0B;AAC7C,MAAM,oBAAoB,EAAE,oCAAoC;AAChE,MAAM,wBAAwB,EAAE,wCAAwC;AACxE,MAAM,cAAc,EAAE,6BAA6B;AACnD,MAAM,SAAS,EAAE,wBAAwB;AACzC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAChD,QAAQ,kBAAkB,EAAE,CAAC;AAC7B,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AAC1D,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,KAAK;AACL,IAAI,oBAAoB,GAAG;AAC3B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,CAAC,CAAC,EAAE;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM;AACN,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACnC,WAAW,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;AAC/C,WAAW,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAC3C,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AACtE,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC9F,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/B,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAChD,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AClWD,MAAM,SAAS,GAAG;AAClB,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AACpE,IAAI,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;AAC9D,IAAI,MAAM;AACV,MAAM,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG;AACvC,KAAK,GAAG,SAAS,CAAC;AAClB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C;AACA,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC;AAC3B,IAAI,IAAI,MAAM,GAAG,CAAC,SAAS,GAAG,QAAQ,IAAI,QAAQ,CAAC;AACnD,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC;AACvB,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;AACtB,QAAQ,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACpC,QAAQ,MAAM,GAAG,CAAC,CAAC;AACnB,OAAO,MAAM,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE;AACjD,QAAQ,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACrC,OAAO;AACP,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;AAC3B,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,MAAM,IAAI,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE;AAC9C,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9C,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC/B,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;AAClD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO,EAAE,IAAI,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AACpE,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AACpE;AACA,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACjC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;AACvC;AACA,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACjC,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACvF;AACA,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACrD,IAAI,MAAM,WAAW,GAAG,OAAO,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,EAAE;AACrD,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChE,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE;AACtB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACpC,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;AACtC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5B,MAAM,SAAS;AACf,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAClI,GAAG;AACH,EAAE,kBAAkB,CAAC,CAAC,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AAC/B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;AAC5G,KAAK;AACL,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;AAC1G,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACpD,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,YAAY;AAClB,KAAK,GAAG,SAAS,CAAC;AAClB;AACA,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAC7G,SAAS,YAAY,KAAK,IAAI,GAAG,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,SAAS,GAAG,QAAQ,CAAC,CAAC;AACxF,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC;AACxC,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,aAAa,CAAC,CAAC;AAC/G;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC/B,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjC,GAAG;AACH,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C,IAAI,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AACvC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;AACtC,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AACpF,QAAQ,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;AAC1H,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjC;AACA,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/C;AACA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,UAAU,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO;AAC5C,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AAC7C,SAAS,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,EAAE;AACf,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C,IAAI,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO;AAC5C,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;AACvC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/B,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACpD,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACjD,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC1D,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO,EAAE,IAAI,CAAC,CAAC;AACf,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAC9B,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AAC5C,IAAI,MAAM;AACV,MAAM,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM;AAC7D,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC3H,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC3H,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,MAAM,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACtG,MAAMA,UAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACtG,MAAMA,UAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACrG,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACpG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAClG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACjG,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AAC5C,IAAI,MAAM;AACV,MAAM,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM;AAC7D,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC3H,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC3H,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,MAAM,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACzG,MAAMA,UAAQ,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACzG,MAAMA,UAAQ,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACxG,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACvG,MAAM,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACrG,MAAM,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACpG,KAAK;AACL,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO;AAC5C,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtC,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5B,MAAM,GAAG;AACT,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,OAAO;AACb,MAAM,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;AAClC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;AACxC,GAAG;AACH,CAAC,CAAC;AACF;AACA,gBAAe;AACf,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,MAAM,EAAE;AACV,IAAI,SAAS,EAAE;AACf,MAAM,EAAE,EAAE,IAAI;AACd,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,SAAS,EAAE,uBAAuB;AACxC,MAAM,SAAS,EAAE,uBAAuB;AACxC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,SAAS,EAAE;AACjB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/C,QAAQ,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAQ,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzD,QAAQ,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3D,QAAQ,eAAe,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAQ,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,QAAQ,eAAe,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAQ,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AACrE,QAAQ,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD,QAAQ,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAQ,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,WAAW,EAAE,IAAI;AACzB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC9B,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACpC,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,GAAG;AACH,CAAC;;ACzUD,MAAM,QAAQ,GAAG;AACjB,EAAE,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,IAAI,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,GAAG,CAAC;AACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC/C,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACzD,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC7D;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACnB,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACnB,KAAK,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AACtC,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK;AACL;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE;AAC5D,MAAM,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;AACxD,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK,MAAM;AACX,MAAM,MAAM,YAAY,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;AACrC,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,GAAG,CAAC,QAAQ,CAAC,0IAA0I,CAAC;AAC5J,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK;AAC3B,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,OAAO,CAAC,CAAC;AACT,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,KAAK;AACzC,MAAM,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC3C,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,EAAE;AACtF,QAAQ,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF,OAAO;AACP,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,0IAA0I,CAAC;AACjK,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK;AAC7B,UAAU,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1D,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,0IAA0I,CAAC;AACxJ,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK;AACnC,QAAQ,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAQ,IAAI,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC3G,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;AACjD,QAAQ,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACjD,OAAO,CAAC,CAAC;AACT,GAAG;AACH,CAAC,CAAC;AACF;AACA,eAAe;AACf,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,MAAM,EAAE;AACV,IAAI,QAAQ,EAAE;AACd,MAAM,OAAO,EAAE,KAAK;AACpB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,QAAQ,EAAE;AAChB,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,QAAQ,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,QAAQ,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,CAAC,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,CAAC;;ACvHD,MAAM,IAAI,GAAG;AACb;AACA,EAAE,yBAAyB,CAAC,CAAC,EAAE;AAC/B,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,cAAc,CAAC,CAAC,EAAE;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACpC,IAAI,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAClC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACrC,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvD,MAAM,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACjG,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AACjG,MAAM,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC1F,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,QAAQ,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACrC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACjC,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAC5F,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnC,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC;AAChF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;AACvC,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,GAAG;AACH,EAAE,YAAY,CAAC,CAAC,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC9D,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9G,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnF,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AACnC,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACvD,GAAG;AACH,EAAE,YAAY,CAAC,CAAC,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO;AAChC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3D,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC3B,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACxF,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACxF,GAAG;AACH,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO;AACtD;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,MAAM,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACpD,MAAM,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACtD,MAAM,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3D,MAAM,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7D,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE;AACtB,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AACrC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AACrC,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AACnD;AACA,IAAI,IAAI,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO;AACvF;AACA,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B;AACA,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACzF,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACzF;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC3C,MAAM;AACN,QAAQ,MAAM,CAAC,YAAY,EAAE;AAC7B;AACA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/G,cAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACnH,SAAS;AACT,QAAQ;AACR,QAAQ,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,QAAQ,OAAO;AACf,OAAO,CAAC;AACR,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE;AAC9B;AACA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/G,cAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACnH,SAAS;AACT,QAAQ;AACR,QAAQ,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE;AACtB,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB;AACA,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACzB,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;AACpF,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;AACpF;AACA,IAAI,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,MAAM,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,MAAM,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvF,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,MAAM,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,MAAM,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACvF,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACjF,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACjF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3D,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1G,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1G,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACtF,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACtF,IAAI,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACpD,IAAI,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACpD,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC;AACA,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC5C,MAAM,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAC9B,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,IAAI,IAAI,iBAAiB,GAAG,GAAG,CAAC;AAChC,IAAI,IAAI,iBAAiB,GAAG,GAAG,CAAC;AAChC,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC5D,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC5D;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrG,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrG,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAC5E;AACA,IAAI,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;AAClC,IAAI,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;AAClC;AACA;AACA,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AACnD,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAChF,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAChF;AACA,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3H,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,EAAE;AACzE,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC5B,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;AAClE,OAAO;AACP,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE;AAChC,QAAQ,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAC7D,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,MAAM,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,CAAC,CAAC,EAAE;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACxC;AACA,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AACjB,KAAK,MAAM;AACX;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjB,KAAK;AACL,GAAG;AACH,EAAE,EAAE,CAAC,CAAC,EAAE;AACR,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AACpC;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;AACpF,QAAQ,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5F,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AACjG,MAAM,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE;AACA,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,WAAW,CAAC;AACpB;AACA,IAAI,IAAI,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,EAAE;AAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3E,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3E,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACpC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AAClF,IAAI,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;AACzF,IAAI,IAAI,CAAC,EAAE;AACX,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACnD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;AAC9C,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;AACpD,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;AACrD;AACA,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACnD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5C,MAAM,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9C;AACA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,MAAM,aAAa,GAAG,CAAC,aAAa,CAAC;AACrC,MAAM,aAAa,GAAG,CAAC,aAAa,CAAC;AACrC;AACA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC;AACA,MAAM,IAAI,UAAU,GAAG,aAAa,EAAE;AACtC,QAAQ,UAAU,GAAG,aAAa,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,UAAU,GAAG,aAAa,EAAE;AACtC,QAAQ,UAAU,GAAG,aAAa,CAAC;AACnC,OAAO;AACP;AACA,MAAM,IAAI,UAAU,GAAG,aAAa,EAAE;AACtC,QAAQ,UAAU,GAAG,aAAa,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,UAAU,GAAG,aAAa,EAAE;AACtC,QAAQ,UAAU,GAAG,aAAa,CAAC;AACnC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACtG,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,GAAG;AACH,EAAE,GAAG,GAAG;AACR,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAC7B;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;AACpF,QAAQ,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5F,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AACjG,MAAM,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACnE;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACjC,GAAG;AACH;AACA,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC/K,IAAI,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AACzG;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD;AACA;AACA,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAChG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAClG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC5F,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,YAAY,EAAE;AAC1D,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC1G,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;AACpH,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACtG,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC3G,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;AACxI,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9B;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAChC;AACA,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC/K,IAAI,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AACzG;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD;AACA;AACA,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACjG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AACnG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC7F,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,YAAY,EAAE;AAC1D,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3G,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;AACrH,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACvG,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC5G,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;AACzI,GAAG;AACH,CAAC,CAAC;AACF;AACA,WAAe;AACf,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,cAAc,EAAE,uBAAuB;AAC7C,MAAM,gBAAgB,EAAE,qBAAqB;AAC7C,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,YAAY,EAAE,CAAC;AACrB,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,OAAO,EAAE;AACf,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,UAAU,EAAE,SAAS;AAC7B,QAAQ,WAAW,EAAE,SAAS;AAC9B,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,QAAQ,EAAE,CAAC;AACnB,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,YAAY,EAAE,EAAE;AACxB,QAAQ,cAAc,EAAE,EAAE;AAC1B,OAAO;AACP,MAAM,QAAQ,EAAE;AAChB,QAAQ,CAAC,EAAE,SAAS;AACpB,QAAQ,CAAC,EAAE,SAAS;AACpB,QAAQ,aAAa,EAAE,SAAS;AAChC,QAAQ,aAAa,EAAE,SAAS;AAChC,QAAQ,QAAQ,EAAE,SAAS;AAC3B,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,CAAC,8HAA8H,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACxK,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,IAAI;AACV,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAChD,MAAM,GAAG,GAAG;AACZ,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,GAAG,CAAC,KAAK,EAAE;AACjB,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;AAC7B,UAAU,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACrG,UAAU,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACrG,UAAU,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,UAAU,CAAC,CAAC,EAAE;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,QAAQ,CAAC,CAAC,EAAE;AAChB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,SAAS,CAAC,CAAC,EAAE;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1F,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,OAAO;AACP,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7D,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,OAAO;AACP,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACtF,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AC7iBD,MAAM,IAAI,GAAG;AACb,EAAE,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,OAAO;AAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AAC3C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACtE;AACA,IAAI,MAAM,QAAQ,GAAG,SAAS;AAC9B,QAAQ,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACtG,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACpH,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AACrI,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,KAAK;AAC1C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7C;AACA,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1D,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpD;AACA,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;AACrF,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAClI,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,UAAU,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD,SAAS,MAAM;AACf,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5C,YAAY,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC/C,WAAW;AACX,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAY,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC9C,WAAW;AACX,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;AACjC,YAAY,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,KAAK;AAC1E,cAAc,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1C;AACA,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC/C,gBAAgB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACpE,gBAAgB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClD,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW;AACX,UAAU,IAAI,GAAG,EAAE;AACnB,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,YAAY,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5C,WAAW;AACX,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/E,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5D,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,EAAE;AACnD,UAAU,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC9E,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACpE,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7J,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;AAClE,WAAW,MAAM;AACjB,YAAY,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;AACzJ,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;AACpE,WAAW;AACX,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACpC,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;AAC3D,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AACrE,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;AACrC;AACA,IAAI,IAAI,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;AACnD,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE;AAClC,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,SAAS,UAAU,CAAC,KAAK,EAAE;AAC/B,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3G,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS;AACT,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC;AAC5C,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,SAAS,UAAU,CAAC,OAAO,EAAE;AACjC,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC1D,OAAO;AACP,MAAM,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/E,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC7C,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK;AAC3F,QAAQ,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAClG,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM,IAAI,aAAa,GAAG,CAAC,EAAE;AAClC,MAAM,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,WAAW,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE;AACzE,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtD,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;AAC7B,MAAM,IAAI,aAAa,GAAG,CAAC,KAAK,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE;AAC7F,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACjD,QAAQ,MAAM,GAAG,GAAG,aAAa,CAAC;AAClC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5F,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,aAAa,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;AACxE,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxD,SAAS;AACT;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACjF;AACA,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACjF,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,WAAe;AACf,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,YAAY,EAAE,KAAK;AACzB,MAAM,kBAAkB,EAAE,CAAC;AAC3B,MAAM,qBAAqB,EAAE,KAAK;AAClC;AACA,MAAM,YAAY,EAAE,aAAa;AACjC,MAAM,YAAY,EAAE,qBAAqB;AACzC,MAAM,WAAW,EAAE,oBAAoB;AACvC,MAAM,cAAc,EAAE,uBAAuB;AAC7C,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,IAAI,EAAE;AACZ,QAAQ,kBAAkB,EAAE,KAAK;AACjC,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,QAAQ,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AACrE,QAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;AACjG,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACnE,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACxI,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACnF,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/D,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AClOD;AAGA;AACA,MAAM,UAAU,GAAG;AACnB,EAAE,YAAY,EAAE,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5C,IAAI,MAAM,YAAY,IAAI,SAAS,MAAM,GAAG;AAC5C,MAAM,IAAI,QAAQ,CAAC;AACnB,MAAM,IAAI,QAAQ,CAAC;AACnB,MAAM,IAAI,KAAK,CAAC;AAChB,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK;AAC7B,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC;AACtB,QAAQ,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,QAAQ,OAAO,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAAE;AACxC,UAAU,KAAK,GAAG,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC;AAC3C,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACnC,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,WAAW,MAAM;AACjB,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,WAAW;AACX,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,OAAO,CAAC;AACR,KAAK,EAAE,CAAC,CAAC;AACT,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC;AACA;AACA;AACA,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,EAAE,CAAC;AACX;AACA,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,EAAE,EAAE;AAChD,MAAM,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACxB;AACA;AACA,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClB;AACA;AACA;AACA,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxG,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,sBAAsB,CAAC,CAAC,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACnC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;AACnD,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC;AACtE,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnE,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AACjD,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,mBAAmB,CAAC;AAC5B,IAAI,SAAS,sBAAsB,CAAC,CAAC,EAAE;AACvC;AACA;AACA;AACA;AACA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnF,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,EAAE;AACnD,QAAQ,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACpD;AACA;AACA,QAAQ,mBAAmB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC;AAChF,OAAO;AACP;AACA,MAAM,IAAI,CAAC,mBAAmB,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,WAAW,EAAE;AAC/E,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7G,QAAQ,mBAAmB,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,UAAU,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;AACpG,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AAC5C,QAAQ,mBAAmB,GAAG,CAAC,CAAC,YAAY,EAAE,GAAG,mBAAmB,CAAC;AACrE,OAAO;AACP,MAAM,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAC5C,MAAM,CAAC,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAClD,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC5B,MAAM,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACnC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,UAAU,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE;AAC/E,UAAU,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,UAAU,YAAY,MAAM,IAAI,YAAY,KAAK,UAAU,EAAE;AAC5E,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACzC,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AACjD,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,SAAS,uBAAuB,CAAC,CAAC,EAAE;AACxC,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,MAAM,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC1B,QAAQ,CAAC,CAAC,eAAe,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;AACjC,UAAU,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC/B,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACjC,WAAW,CAAC,CAAC;AACb,SAAS;AACT,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM;AACzC,UAAU,IAAI,CAAC,UAAU,EAAE,OAAO;AAClC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,OAAO,EAAE;AACxE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;AACxB,WAAW;AACX,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACnC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,UAAU,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE;AAC/E,UAAU,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,UAAU,YAAY,MAAM,IAAI,YAAY,KAAK,UAAU,EAAE;AAC5E,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF,iBAAe;AACf,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,OAAO,EAAE,SAAS;AACxB,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,EAAE,EAAE,OAAO;AACjB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;AACjD,QAAQ,sBAAsB,EAAE,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9E,QAAQ,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,QAAQ,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;AAC7C,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACpC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7C,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;AAC7C,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACpC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7C,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;AAC7C,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;AACpC,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7C,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE;AAC1C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;AAC7C,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE;AAC1C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;AAC7C,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC9D,KAAK;AACL,GAAG;AACH,CAAC;;ACtLD,MAAM,IAAI,GAAG;AACb,EAAE,eAAe,CAAC,GAAG,EAAE;AACvB,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,kBAAkB,CAAC,GAAG,EAAE;AAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;AACvB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3B,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE;AACzB,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACrC,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,UAAU,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,EAAE,OAAO;AACjC,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnG,MAAM,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3B,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpD,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnG,MAAM,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACxD,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3B,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACrD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpD,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACvF,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3B,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,IAAI,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;AAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO;AACzD,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACnD;AACA,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC7C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC7C,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;AAClI,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,KAAK;AAChE,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1H,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C;AACA;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC/D,MAAM,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC/D,MAAM,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpD,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;AAClI,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9G,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACrG;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;AACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrD,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;AAClI,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/G,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF,aAAe;AACf,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,iBAAiB,EAAE,qBAAqB;AAC9C,MAAM,gBAAgB,EAAE,gBAAgB;AACxC,MAAM,gBAAgB,EAAE,YAAY;AACpC,MAAM,iBAAiB,EAAE,yBAAyB;AAClD,MAAM,gBAAgB,EAAE,wBAAwB;AAChD,MAAM,uBAAuB,EAAE,uBAAuB;AACtD,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,IAAI,EAAE;AACZ,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,kDAAkD,CAAC,CAAC;AAC/H,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC;;AChND,MAAM,OAAO,GAAG;AAChB,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;AACtD,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;AAClD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC/B,IAAI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO;AAC3D,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7C,MAAM,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC7E,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7C,MAAM,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAChF,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACnD,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzF,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;AACjG,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACnC,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACvC,IAAI,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE;AACzB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO;AAC9E,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjD,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9C,IAAI,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;AAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;AAC1B,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3B,OAAO,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC9B,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3B,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACzB,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACzE,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACzE,QAAQ,IAAI,YAAY,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC1F,UAAU,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AACtC,UAAU,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD,SAAS;AACT,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7C,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAe;AACf,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,MAAM,EAAE;AACV,IAAI,OAAO,EAAE;AACb,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,YAAY,EAAE,KAAK;AACzB,MAAM,GAAG,EAAE,QAAQ;AACnB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,QAAQ,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AACnE,QAAQ,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACzD,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;AACzC,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC9B,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;AACzC,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;AACtC,QAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACjF,OAAO;AACP,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/D,QAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACjF,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AC7HD,MAAM,cAAc,GAAG;AACvB,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9B,IAAI,MAAM,OAAO,GAAGA,UAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC5D,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnF,IAAI,IAAI,OAAO,KAAK,eAAe,EAAE;AACrC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClH,MAAM,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO;AAC5F,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;AACpG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACpH,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAK,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzD,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzE,MAAMA,UAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;AAClH,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7C,IAAI,MAAM,IAAI,GAAGA,UAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC;AACtB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACzE,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAChF,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACtF,UAAU,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AACtC,UAAU,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC/E,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;AACjD,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACpE,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;AACjD,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACrE,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF,qBAAe;AACf,EAAE,IAAI,EAAE,iBAAiB;AACzB,EAAE,MAAM,EAAE;AACV,IAAI,cAAc,EAAE;AACpB,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,YAAY,EAAE,KAAK;AACzB,MAAM,UAAU,EAAE,KAAK;AACvB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,cAAc,EAAE;AACtB,QAAQ,WAAW,EAAE,KAAK;AAC1B,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,QAAQ,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,QAAQ,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AACrC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE;AAC7C,QAAQ,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AACtE,QAAQ,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACxC,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;ACvGD;AAEA;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,GAAG,GAAG;AACR,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;AACrD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1F,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;AACnD,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AACnD,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAChC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,UAAU,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACxC,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,UAAU,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC5D,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpF,UAAU,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,SAAS;AACT,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AACzB,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC1D,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAClF,KAAK,EAAE,KAAK,CAAC,CAAC;AACd,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC;AACrE,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC;AAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC;AAC/C,IAAI,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC;AACrE;AACA,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjC,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AACpC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAChC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;AACzC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO;AACvC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAClC,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAClE,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AACrC,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC5B,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC9F,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACpG,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,eAAe;AACf,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,MAAM,EAAE;AACV,IAAI,QAAQ,EAAE;AACd,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,iBAAiB,EAAE,IAAI;AAC7B,MAAM,oBAAoB,EAAE,IAAI;AAChC,MAAM,eAAe,EAAE,KAAK;AAC5B,MAAM,gBAAgB,EAAE,KAAK;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,QAAQ,EAAE;AAChB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAQ,kBAAkB,GAAG;AAC7B,UAAU,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AAChF,YAAY,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACpC,WAAW;AACX,UAAU,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAChF,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAClC,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3C,WAAW;AACX,SAAS;AACT,QAAQ,eAAe,CAAC,CAAC,EAAE;AAC3B,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO;AACxE,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,OAAO;AACxC,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACrG,UAAU,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC3G,UAAU,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AACzC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACxC,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,WAAW,MAAM;AACjB,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAClC,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAChC,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC1F,OAAO;AACP,KAAK;AACL,IAAI,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACtE,UAAU,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACzD,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAClC,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AAC3G,QAAQ,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC9B,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,OAAO;AACP,MAAM,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC3F,KAAK;AACL,GAAG;AACH,CAAC;;ACvKD,MAAM,IAAI,GAAG;AACb,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACnD,MAAM,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;AACvB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC;AAClE,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AAClC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAC;AACf,OAAO;AACP,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS;AAC7D,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,MAAM,QAAQ;AACd,SAAS,GAAG,CAAC;AACb,UAAU,OAAO,EAAE,YAAY;AAC/B,SAAS,CAAC;AACV,SAAS,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC1C,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACjC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM;AACjC,QAAQ,IAAI,cAAc,EAAE,OAAO;AACnC,QAAQ,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAChD,QAAQ,cAAc,GAAG,IAAI,CAAC;AAC9B,QAAQ,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AACjC,QAAQ,MAAM,aAAa,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,UAAU,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,CAAC;AAC1B,QAAQ,cAAc,EAAE,CAAC;AACzB,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,OAAO,CAAC;AACR,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACnD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,KAAK;AACL,GAAG;AACH,CAAC;;ACrFD,MAAM,IAAI,GAAG;AACb,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU;AAC5G,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAC5C,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACtE,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/D,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,UAAU,aAAa,GAAG,CAAC,CAAC,wCAAwC,CAAC,CAAC;AACtE,UAAU,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,OAAO,MAAM;AACb,QAAQ,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACxD,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,UAAU,aAAa,GAAG,CAAC,CAAC,wCAAwC,CAAC,CAAC;AACtE,UAAU,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC;AACzB,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5E,OAAO;AACP,MAAM,IAAI,UAAU,GAAG,UAAU,GAAG,EAAE,CAAC;AACvC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AAC/C,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,UAAU,GAAG,CAAC,UAAU,CAAC;AACjC,QAAQ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;AACrC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACf,OAAO,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,QAAQ,EAAE,GAAG,CAAC,CAAC;AACf,QAAQ,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;AACrC,OAAO,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,QAAQ,EAAE,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;AACnD,QAAQ,EAAE,GAAG,UAAU,CAAC;AACxB,OAAO,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC;AACzB,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,UAAU,KAAK,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACzD,OAAO;AACP,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;AACjB,OAAO;AACP;AACA,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,EAAE,GAAG,EAAE,CAAC;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAC;AACf,OAAO;AACP;AACA,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5J,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC1C,QAAQ,aAAa,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC5D,QAAQ,IAAI,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC,UAAU,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;AACtE,OAAO;AACP,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B;AACA,QAAQ,IAAI,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACjI,QAAQ,IAAI,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACpI,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvG,UAAU,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,UAAU,WAAW,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1G,UAAU,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxF,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrF,OAAO;AACP,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,CAAC;AACnB,MAAM,0BAA0B,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AAChE,MAAM,uBAAuB,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7D,MAAM,sBAAsB,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5D,MAAM,kBAAkB,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AACxD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,aAAa,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,uCAAuC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACnL,OAAO,MAAM;AACb,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,QAAQ,MAAM,UAAU,GAAG,GAAG;AAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;AAC1D,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;AACvD,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3C,QAAQ,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC,YAAY,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACxK,OAAO;AACP,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;AACtF,IAAI,UAAU;AACd,OAAO,SAAS,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvK,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AACnC,IAAI,MAAM;AACV,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC3B,OAAO,IAAI,CAAC,8GAA8G,CAAC;AAC3H,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AACnE,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,WAAW,EAAE,IAAI;AACvB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,CAAC;AAC1B,QAAQ,cAAc,EAAE,CAAC;AACzB,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,eAAe,EAAE,CAAC;AAC1B,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,OAAO,CAAC;AACR,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACnD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,KAAK;AACL,GAAG;AACH,CAAC;;AChLD,MAAM,IAAI,GAAG;AACb,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1C,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE;AAClD,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC;AACrC,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC;AAC3B,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;AACvB,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AAClC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAC;AACf,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC;AAC3B,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,OAAO,MAAM,IAAI,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC;AAC3B,OAAO;AACP;AACA,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACjF;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE;AACjD;AACA,QAAQ,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC1I,QAAQ,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC7I,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChH,UAAU,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,UAAU,WAAW,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnH,UAAU,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxF,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrF,OAAO;AACP,MAAM,QAAQ;AACd,SAAS,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AACvD,IAAI,MAAM;AACV,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC3B,OAAO,IAAI,CAAC,8GAA8G,CAAC;AAC3H,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACjC;AACA,MAAM,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,SAAS,eAAe,GAAG;AACtE,QAAQ,IAAI,cAAc,EAAE,OAAO;AACnC,QAAQ,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO;AAChD;AACA,QAAQ,cAAc,GAAG,IAAI,CAAC;AAC9B,QAAQ,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AACjC,QAAQ,MAAM,aAAa,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,UAAU,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,iBAAe;AACf,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,MAAM,EAAE;AACV,IAAI,UAAU,EAAE;AAChB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,UAAU,EAAE;AAClB,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,CAAC;AAC1B,QAAQ,cAAc,EAAE,CAAC;AACzB,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,OAAO,CAAC;AACR,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACnD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO;AAClD,MAAM,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,KAAK;AACL,GAAG;AACH,CAAC;;ACnHD,MAAM,SAAS,GAAG;AAClB,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe;AACnF,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/C,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,IAAI,MAAM,MAAM,GAAG,YAAY,GAAG,CAAC,SAAS,IAAI,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;AACnG,IAAI,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,GAAG,WAAW,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC;AACxG;AACA,MAAM,IAAI,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC;AACjE,MAAM,IAAI,OAAO,GAAG,YAAY,GAAG,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC;AACjE;AACA,MAAM,IAAI,UAAU,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/D;AACA,MAAM,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC;AACA,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACtE,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC;AACnE,OAAO;AACP,MAAM,IAAI,UAAU,GAAG,YAAY,GAAG,CAAC,GAAG,OAAO,IAAI,gBAAgB,CAAC,CAAC;AACvE,MAAM,IAAI,UAAU,GAAG,YAAY,GAAG,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACvE;AACA;AACA,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;AACvD,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;AACvD,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;AACvD,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;AACjD,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;AACjD;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3I;AACA,MAAM,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACzC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7E,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B;AACA,QAAQ,IAAI,eAAe,GAAG,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACpI,QAAQ,IAAI,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACvI,QAAQ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,UAAU,eAAe,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1G,UAAU,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,UAAU,cAAc,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7G,UAAU,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;AACnH,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACrH,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAChE,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,MAAM,EAAE,CAAC,iBAAiB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/C,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,CAAC,MAAM;AACjB,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC3B,OAAO,IAAI,CAAC,8GAA8G,CAAC;AAC3H,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,GAAG;AACH,CAAC,CAAC;AACF;AACA,sBAAe;AACf,EAAE,IAAI,EAAE,kBAAkB;AAC1B,EAAE,MAAM,EAAE;AACV,IAAI,eAAe,EAAE;AACrB,MAAM,MAAM,EAAE,EAAE;AAChB,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,KAAK,EAAE,GAAG;AAChB,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,eAAe,EAAE;AACvB,QAAQ,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzD,QAAQ,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3D,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,OAAO;AACvD;AACA,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;AACjF,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E;AACA,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,CAAC,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACvD,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,OAAO;AACvD,MAAM,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AAC5C,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,OAAO;AACvD,MAAM,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrD,KAAK;AACL,GAAG;AACH,CAAC;;ACtHD,MAAM,MAAM,GAAG;AACf,EAAE,IAAI,GAAG;AACT,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3C,IAAI,IAAI,YAAY,CAAC,MAAM,YAAY,WAAW,EAAE;AACpD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACjD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACxD,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,mBAAmB,EAAE,KAAK;AAClC,OAAO,CAAC,CAAC;AACT,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAChD,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,mBAAmB,EAAE,KAAK;AAClC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACpD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE;AACnF,QAAQ,qBAAqB,EAAE,IAAI;AACnC,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,mBAAmB,EAAE,KAAK;AAClC,OAAO,CAAC,CAAC,CAAC;AACV,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACjF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO;AAC9B,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;AACnD,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;AACnD,IAAI,IAAI,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,OAAO;AACrG,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO;AAC7E,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;AAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAC;AAChG,KAAK,MAAM;AACX,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,MAAM,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5C,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACtF,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AACzB;AACA,QAAQ,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,QAAQ,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,0BAA0B,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5H,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,0BAA0B,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5H,MAAM,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;AACrE,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;AAC1E,WAAW,IAAI,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;AAC7F,WAAW,YAAY,GAAG,SAAS,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO;AAC9B;AACA,IAAI,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM;AACtE,QAAQ,YAAY,CAAC,oBAAoB,EAAE;AAC3C,QAAQ,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC;AAC1C;AACA,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACnE,IAAI,MAAM,SAAS,GAAG,gBAAgB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AACpE,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,SAAS,IAAI,SAAS,EAAE;AAClE,MAAM,IAAI,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC;AACxD,MAAM,IAAI,cAAc,CAAC;AACzB,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC1G,UAAU,YAAY,CAAC,OAAO,EAAE,CAAC;AACjC;AACA,UAAU,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3E,UAAU,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC;AACxD,SAAS;AACT;AACA,QAAQ,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM;AACnD,WAAW,EAAE,CAAC,kBAAkB,CAAC;AACjC,WAAW,OAAO,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,WAAW,KAAK,EAAE,CAAC;AACnB,QAAQ,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM;AACnD,WAAW,EAAE,CAAC,kBAAkB,CAAC;AACjC,WAAW,OAAO,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,WAAW,KAAK,EAAE,CAAC;AACnB,QAAQ,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,cAAc,GAAG,eAAe,CAAC;AACrF,aAAa,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,cAAc,GAAG,eAAe,CAAC;AAC1F,aAAa,IAAI,eAAe,GAAG,kBAAkB,KAAK,kBAAkB,GAAG,eAAe,EAAE,cAAc,GAAG,kBAAkB,CAAC;AACpI,aAAa,IAAI,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,eAAe,EAAE,cAAc,GAAG,eAAe,CAAC;AAC/H,aAAa,cAAc,GAAG,eAAe,CAAC;AAC9C,QAAQ,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,OAAO,MAAM;AACb,QAAQ,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1C,QAAQ,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAC5E,OAAO;AACP,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,cAAc,IAAI,SAAS,KAAK,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAC1F,OAAO;AACP;AACA,MAAM,IAAI,YAAY,CAAC,oBAAoB,IAAI,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9G,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE;AAChD,UAAU,IAAI,cAAc,GAAG,kBAAkB,EAAE;AACnD,YAAY,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChF,WAAW,MAAM;AACjB,YAAY,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChF,WAAW;AACX,SAAS,MAAM,IAAI,cAAc,GAAG,kBAAkB,EAAE;AACxD,UAAU,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAC7B,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;AACxE;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAC1E,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACrD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;AACpD,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACpD;AACA,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACtD,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1G,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,QAAQ,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC3H,OAAO;AACP,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,QAAQ,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF,aAAe;AACf,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,MAAM,EAAE;AACV,IAAI,MAAM,EAAE;AACZ,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,oBAAoB,EAAE,IAAI;AAChC,MAAM,gBAAgB,EAAE,CAAC;AACzB,MAAM,qBAAqB,EAAE,2BAA2B;AACxD,MAAM,oBAAoB,EAAE,yBAAyB;AACrD,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,EAAE;AACd,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAQ,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,EAAE,EAAE;AACN,IAAI,UAAU,GAAG;AACjB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AACvC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;AAC5C,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;AACxC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;AACxC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;AACxC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;AACxC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAChD,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO;AAChC,MAAM,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAChD,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO;AAChC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,YAAY,EAAE;AACvD,QAAQ,YAAY,CAAC,OAAO,EAAE,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AClND;AAWA;AACA,MAAM,UAAU,GAAG;AACnB,EAAEE,QAAM;AACR,EAAEC,SAAO;AACT,EAAEC,SAAO;AACT,EAAE,MAAM;AACR,EAAEC,UAAQ;AACV;AACA,CAAC,CAAC;AACF;AACA,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;AACvC,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,EAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;AACpD,CAAC;AACD;AACA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;;;;"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,8791 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-(function (global, factory) {
14
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
15
-    typeof define === 'function' && define.amd ? define(factory) :
16
-    (global = global || self, global.Swiper = factory());
17
-}(this, (function () { 'use strict';
18
-
19
-    /**
20
-     * SSR Window 2.0.0
21
-     * Better handling for window object in SSR environment
22
-     * https://github.com/nolimits4web/ssr-window
23
-     *
24
-     * Copyright 2020, Vladimir Kharlampidi
25
-     *
26
-     * Licensed under MIT
27
-     *
28
-     * Released on: May 12, 2020
29
-     */
30
-    /* eslint-disable no-param-reassign */
31
-    function isObject(obj) {
32
-        return (obj !== null &&
33
-            typeof obj === 'object' &&
34
-            'constructor' in obj &&
35
-            obj.constructor === Object);
36
-    }
37
-    function extend(target, src) {
38
-        if (target === void 0) { target = {}; }
39
-        if (src === void 0) { src = {}; }
40
-        Object.keys(src).forEach(function (key) {
41
-            if (typeof target[key] === 'undefined')
42
-                { target[key] = src[key]; }
43
-            else if (isObject(src[key]) &&
44
-                isObject(target[key]) &&
45
-                Object.keys(src[key]).length > 0) {
46
-                extend(target[key], src[key]);
47
-            }
48
-        });
49
-    }
50
-
51
-    var doc = typeof document !== 'undefined' ? document : {};
52
-    var ssrDocument = {
53
-        body: {},
54
-        addEventListener: function () { },
55
-        removeEventListener: function () { },
56
-        activeElement: {
57
-            blur: function () { },
58
-            nodeName: '',
59
-        },
60
-        querySelector: function () {
61
-            return null;
62
-        },
63
-        querySelectorAll: function () {
64
-            return [];
65
-        },
66
-        getElementById: function () {
67
-            return null;
68
-        },
69
-        createEvent: function () {
70
-            return {
71
-                initEvent: function () { },
72
-            };
73
-        },
74
-        createElement: function () {
75
-            return {
76
-                children: [],
77
-                childNodes: [],
78
-                style: {},
79
-                setAttribute: function () { },
80
-                getElementsByTagName: function () {
81
-                    return [];
82
-                },
83
-            };
84
-        },
85
-        createElementNS: function () {
86
-            return {};
87
-        },
88
-        importNode: function () {
89
-            return null;
90
-        },
91
-        location: {
92
-            hash: '',
93
-            host: '',
94
-            hostname: '',
95
-            href: '',
96
-            origin: '',
97
-            pathname: '',
98
-            protocol: '',
99
-            search: '',
100
-        },
101
-    };
102
-    extend(doc, ssrDocument);
103
-
104
-    var win = typeof window !== 'undefined' ? window : {};
105
-    var ssrWindow = {
106
-        document: ssrDocument,
107
-        navigator: {
108
-            userAgent: '',
109
-        },
110
-        location: {
111
-            hash: '',
112
-            host: '',
113
-            hostname: '',
114
-            href: '',
115
-            origin: '',
116
-            pathname: '',
117
-            protocol: '',
118
-            search: '',
119
-        },
120
-        history: {
121
-            replaceState: function () { },
122
-            pushState: function () { },
123
-            go: function () { },
124
-            back: function () { },
125
-        },
126
-        CustomEvent: function CustomEvent() {
127
-            return this;
128
-        },
129
-        addEventListener: function () { },
130
-        removeEventListener: function () { },
131
-        getComputedStyle: function () {
132
-            return {
133
-                getPropertyValue: function () {
134
-                    return '';
135
-                },
136
-            };
137
-        },
138
-        Image: function () { },
139
-        Date: function () { },
140
-        screen: {},
141
-        setTimeout: function () { },
142
-        clearTimeout: function () { },
143
-        matchMedia: function () {
144
-            return {};
145
-        },
146
-    };
147
-    extend(win, ssrWindow);
148
-
149
-    /**
150
-     * Dom7 2.1.5
151
-     * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
152
-     * http://framework7.io/docs/dom.html
153
-     *
154
-     * Copyright 2020, Vladimir Kharlampidi
155
-     * The iDangero.us
156
-     * http://www.idangero.us/
157
-     *
158
-     * Licensed under MIT
159
-     *
160
-     * Released on: May 15, 2020
161
-     */
162
-
163
-    var Dom7 = function Dom7(arr) {
164
-      var self = this;
165
-      // Create array-like object
166
-      for (var i = 0; i < arr.length; i += 1) {
167
-        self[i] = arr[i];
168
-      }
169
-      self.length = arr.length;
170
-      // Return collection with methods
171
-      return this;
172
-    };
173
-
174
-    function $(selector, context) {
175
-      var arr = [];
176
-      var i = 0;
177
-      if (selector && !context) {
178
-        if (selector instanceof Dom7) {
179
-          return selector;
180
-        }
181
-      }
182
-      if (selector) {
183
-          // String
184
-        if (typeof selector === 'string') {
185
-          var els;
186
-          var tempParent;
187
-          var html = selector.trim();
188
-          if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
189
-            var toCreate = 'div';
190
-            if (html.indexOf('<li') === 0) { toCreate = 'ul'; }
191
-            if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }
192
-            if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }
193
-            if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }
194
-            if (html.indexOf('<option') === 0) { toCreate = 'select'; }
195
-            tempParent = doc.createElement(toCreate);
196
-            tempParent.innerHTML = html;
197
-            for (i = 0; i < tempParent.childNodes.length; i += 1) {
198
-              arr.push(tempParent.childNodes[i]);
199
-            }
200
-          } else {
201
-            if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
202
-              // Pure ID selector
203
-              els = [doc.getElementById(selector.trim().split('#')[1])];
204
-            } else {
205
-              // Other selectors
206
-              els = (context || doc).querySelectorAll(selector.trim());
207
-            }
208
-            for (i = 0; i < els.length; i += 1) {
209
-              if (els[i]) { arr.push(els[i]); }
210
-            }
211
-          }
212
-        } else if (selector.nodeType || selector === win || selector === doc) {
213
-          // Node/element
214
-          arr.push(selector);
215
-        } else if (selector.length > 0 && selector[0].nodeType) {
216
-          // Array of elements or instance of Dom
217
-          for (i = 0; i < selector.length; i += 1) {
218
-            arr.push(selector[i]);
219
-          }
220
-        }
221
-      }
222
-      return new Dom7(arr);
223
-    }
224
-
225
-    $.fn = Dom7.prototype;
226
-    $.Class = Dom7;
227
-    $.Dom7 = Dom7;
228
-
229
-    function unique(arr) {
230
-      var uniqueArray = [];
231
-      for (var i = 0; i < arr.length; i += 1) {
232
-        if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }
233
-      }
234
-      return uniqueArray;
235
-    }
236
-
237
-    // Classes and attributes
238
-    function addClass(className) {
239
-      if (typeof className === 'undefined') {
240
-        return this;
241
-      }
242
-      var classes = className.split(' ');
243
-      for (var i = 0; i < classes.length; i += 1) {
244
-        for (var j = 0; j < this.length; j += 1) {
245
-          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }
246
-        }
247
-      }
248
-      return this;
249
-    }
250
-    function removeClass(className) {
251
-      var classes = className.split(' ');
252
-      for (var i = 0; i < classes.length; i += 1) {
253
-        for (var j = 0; j < this.length; j += 1) {
254
-          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }
255
-        }
256
-      }
257
-      return this;
258
-    }
259
-    function hasClass(className) {
260
-      if (!this[0]) { return false; }
261
-      return this[0].classList.contains(className);
262
-    }
263
-    function toggleClass(className) {
264
-      var classes = className.split(' ');
265
-      for (var i = 0; i < classes.length; i += 1) {
266
-        for (var j = 0; j < this.length; j += 1) {
267
-          if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }
268
-        }
269
-      }
270
-      return this;
271
-    }
272
-    function attr(attrs, value) {
273
-      var arguments$1 = arguments;
274
-
275
-      if (arguments.length === 1 && typeof attrs === 'string') {
276
-        // Get attr
277
-        if (this[0]) { return this[0].getAttribute(attrs); }
278
-        return undefined;
279
-      }
280
-
281
-      // Set attrs
282
-      for (var i = 0; i < this.length; i += 1) {
283
-        if (arguments$1.length === 2) {
284
-          // String
285
-          this[i].setAttribute(attrs, value);
286
-        } else {
287
-          // Object
288
-          // eslint-disable-next-line
289
-          for (var attrName in attrs) {
290
-            this[i][attrName] = attrs[attrName];
291
-            this[i].setAttribute(attrName, attrs[attrName]);
292
-          }
293
-        }
294
-      }
295
-      return this;
296
-    }
297
-    // eslint-disable-next-line
298
-    function removeAttr(attr) {
299
-      for (var i = 0; i < this.length; i += 1) {
300
-        this[i].removeAttribute(attr);
301
-      }
302
-      return this;
303
-    }
304
-    function data(key, value) {
305
-      var el;
306
-      if (typeof value === 'undefined') {
307
-        el = this[0];
308
-        // Get value
309
-        if (el) {
310
-          if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
311
-            return el.dom7ElementDataStorage[key];
312
-          }
313
-
314
-          var dataKey = el.getAttribute(("data-" + key));
315
-          if (dataKey) {
316
-            return dataKey;
317
-          }
318
-          return undefined;
319
-        }
320
-        return undefined;
321
-      }
322
-
323
-      // Set value
324
-      for (var i = 0; i < this.length; i += 1) {
325
-        el = this[i];
326
-        if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }
327
-        el.dom7ElementDataStorage[key] = value;
328
-      }
329
-      return this;
330
-    }
331
-    // Transforms
332
-    // eslint-disable-next-line
333
-    function transform(transform) {
334
-      for (var i = 0; i < this.length; i += 1) {
335
-        var elStyle = this[i].style;
336
-        elStyle.webkitTransform = transform;
337
-        elStyle.transform = transform;
338
-      }
339
-      return this;
340
-    }
341
-    function transition(duration) {
342
-      if (typeof duration !== 'string') {
343
-        duration = duration + "ms"; // eslint-disable-line
344
-      }
345
-      for (var i = 0; i < this.length; i += 1) {
346
-        var elStyle = this[i].style;
347
-        elStyle.webkitTransitionDuration = duration;
348
-        elStyle.transitionDuration = duration;
349
-      }
350
-      return this;
351
-    }
352
-    // Events
353
-    function on() {
354
-      var assign;
355
-
356
-      var args = [], len = arguments.length;
357
-      while ( len-- ) args[ len ] = arguments[ len ];
358
-      var eventType = args[0];
359
-      var targetSelector = args[1];
360
-      var listener = args[2];
361
-      var capture = args[3];
362
-      if (typeof args[1] === 'function') {
363
-        (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
364
-        targetSelector = undefined;
365
-      }
366
-      if (!capture) { capture = false; }
367
-
368
-      function handleLiveEvent(e) {
369
-        var target = e.target;
370
-        if (!target) { return; }
371
-        var eventData = e.target.dom7EventData || [];
372
-        if (eventData.indexOf(e) < 0) {
373
-          eventData.unshift(e);
374
-        }
375
-        if ($(target).is(targetSelector)) { listener.apply(target, eventData); }
376
-        else {
377
-          var parents = $(target).parents(); // eslint-disable-line
378
-          for (var k = 0; k < parents.length; k += 1) {
379
-            if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }
380
-          }
381
-        }
382
-      }
383
-      function handleEvent(e) {
384
-        var eventData = e && e.target ? e.target.dom7EventData || [] : [];
385
-        if (eventData.indexOf(e) < 0) {
386
-          eventData.unshift(e);
387
-        }
388
-        listener.apply(this, eventData);
389
-      }
390
-      var events = eventType.split(' ');
391
-      var j;
392
-      for (var i = 0; i < this.length; i += 1) {
393
-        var el = this[i];
394
-        if (!targetSelector) {
395
-          for (j = 0; j < events.length; j += 1) {
396
-            var event = events[j];
397
-            if (!el.dom7Listeners) { el.dom7Listeners = {}; }
398
-            if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }
399
-            el.dom7Listeners[event].push({
400
-              listener: listener,
401
-              proxyListener: handleEvent,
402
-            });
403
-            el.addEventListener(event, handleEvent, capture);
404
-          }
405
-        } else {
406
-          // Live events
407
-          for (j = 0; j < events.length; j += 1) {
408
-            var event$1 = events[j];
409
-            if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }
410
-            if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }
411
-            el.dom7LiveListeners[event$1].push({
412
-              listener: listener,
413
-              proxyListener: handleLiveEvent,
414
-            });
415
-            el.addEventListener(event$1, handleLiveEvent, capture);
416
-          }
417
-        }
418
-      }
419
-      return this;
420
-    }
421
-    function off() {
422
-      var assign;
423
-
424
-      var args = [], len = arguments.length;
425
-      while ( len-- ) args[ len ] = arguments[ len ];
426
-      var eventType = args[0];
427
-      var targetSelector = args[1];
428
-      var listener = args[2];
429
-      var capture = args[3];
430
-      if (typeof args[1] === 'function') {
431
-        (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
432
-        targetSelector = undefined;
433
-      }
434
-      if (!capture) { capture = false; }
435
-
436
-      var events = eventType.split(' ');
437
-      for (var i = 0; i < events.length; i += 1) {
438
-        var event = events[i];
439
-        for (var j = 0; j < this.length; j += 1) {
440
-          var el = this[j];
441
-          var handlers = (void 0);
442
-          if (!targetSelector && el.dom7Listeners) {
443
-            handlers = el.dom7Listeners[event];
444
-          } else if (targetSelector && el.dom7LiveListeners) {
445
-            handlers = el.dom7LiveListeners[event];
446
-          }
447
-          if (handlers && handlers.length) {
448
-            for (var k = handlers.length - 1; k >= 0; k -= 1) {
449
-              var handler = handlers[k];
450
-              if (listener && handler.listener === listener) {
451
-                el.removeEventListener(event, handler.proxyListener, capture);
452
-                handlers.splice(k, 1);
453
-              } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
454
-                el.removeEventListener(event, handler.proxyListener, capture);
455
-                handlers.splice(k, 1);
456
-              } else if (!listener) {
457
-                el.removeEventListener(event, handler.proxyListener, capture);
458
-                handlers.splice(k, 1);
459
-              }
460
-            }
461
-          }
462
-        }
463
-      }
464
-      return this;
465
-    }
466
-    function trigger() {
467
-      var args = [], len = arguments.length;
468
-      while ( len-- ) args[ len ] = arguments[ len ];
469
-
470
-      var events = args[0].split(' ');
471
-      var eventData = args[1];
472
-      for (var i = 0; i < events.length; i += 1) {
473
-        var event = events[i];
474
-        for (var j = 0; j < this.length; j += 1) {
475
-          var el = this[j];
476
-          var evt = (void 0);
477
-          try {
478
-            evt = new win.CustomEvent(event, {
479
-              detail: eventData,
480
-              bubbles: true,
481
-              cancelable: true,
482
-            });
483
-          } catch (e) {
484
-            evt = doc.createEvent('Event');
485
-            evt.initEvent(event, true, true);
486
-            evt.detail = eventData;
487
-          }
488
-          // eslint-disable-next-line
489
-          el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });
490
-          el.dispatchEvent(evt);
491
-          el.dom7EventData = [];
492
-          delete el.dom7EventData;
493
-        }
494
-      }
495
-      return this;
496
-    }
497
-    function transitionEnd(callback) {
498
-      var events = ['webkitTransitionEnd', 'transitionend'];
499
-      var dom = this;
500
-      var i;
501
-      function fireCallBack(e) {
502
-        /* jshint validthis:true */
503
-        if (e.target !== this) { return; }
504
-        callback.call(this, e);
505
-        for (i = 0; i < events.length; i += 1) {
506
-          dom.off(events[i], fireCallBack);
507
-        }
508
-      }
509
-      if (callback) {
510
-        for (i = 0; i < events.length; i += 1) {
511
-          dom.on(events[i], fireCallBack);
512
-        }
513
-      }
514
-      return this;
515
-    }
516
-    function outerWidth(includeMargins) {
517
-      if (this.length > 0) {
518
-        if (includeMargins) {
519
-          // eslint-disable-next-line
520
-          var styles = this.styles();
521
-          return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
522
-        }
523
-        return this[0].offsetWidth;
524
-      }
525
-      return null;
526
-    }
527
-    function outerHeight(includeMargins) {
528
-      if (this.length > 0) {
529
-        if (includeMargins) {
530
-          // eslint-disable-next-line
531
-          var styles = this.styles();
532
-          return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
533
-        }
534
-        return this[0].offsetHeight;
535
-      }
536
-      return null;
537
-    }
538
-    function offset() {
539
-      if (this.length > 0) {
540
-        var el = this[0];
541
-        var box = el.getBoundingClientRect();
542
-        var body = doc.body;
543
-        var clientTop = el.clientTop || body.clientTop || 0;
544
-        var clientLeft = el.clientLeft || body.clientLeft || 0;
545
-        var scrollTop = el === win ? win.scrollY : el.scrollTop;
546
-        var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
547
-        return {
548
-          top: (box.top + scrollTop) - clientTop,
549
-          left: (box.left + scrollLeft) - clientLeft,
550
-        };
551
-      }
552
-
553
-      return null;
554
-    }
555
-    function styles() {
556
-      if (this[0]) { return win.getComputedStyle(this[0], null); }
557
-      return {};
558
-    }
559
-    function css(props, value) {
560
-      var i;
561
-      if (arguments.length === 1) {
562
-        if (typeof props === 'string') {
563
-          if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }
564
-        } else {
565
-          for (i = 0; i < this.length; i += 1) {
566
-            // eslint-disable-next-line
567
-            for (var prop in props) {
568
-              this[i].style[prop] = props[prop];
569
-            }
570
-          }
571
-          return this;
572
-        }
573
-      }
574
-      if (arguments.length === 2 && typeof props === 'string') {
575
-        for (i = 0; i < this.length; i += 1) {
576
-          this[i].style[props] = value;
577
-        }
578
-        return this;
579
-      }
580
-      return this;
581
-    }
582
-    // Iterate over the collection passing elements to `callback`
583
-    function each(callback) {
584
-      // Don't bother continuing without a callback
585
-      if (!callback) { return this; }
586
-      // Iterate over the current collection
587
-      for (var i = 0; i < this.length; i += 1) {
588
-        // If the callback returns false
589
-        if (callback.call(this[i], i, this[i]) === false) {
590
-          // End the loop early
591
-          return this;
592
-        }
593
-      }
594
-      // Return `this` to allow chained DOM operations
595
-      return this;
596
-    }
597
-    function filter(callback) {
598
-      var matchedItems = [];
599
-      var dom = this;
600
-      for (var i = 0; i < dom.length; i += 1) {
601
-        if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }
602
-      }
603
-      return new Dom7(matchedItems);
604
-    }
605
-    // eslint-disable-next-line
606
-    function html(html) {
607
-      if (typeof html === 'undefined') {
608
-        return this[0] ? this[0].innerHTML : undefined;
609
-      }
610
-
611
-      for (var i = 0; i < this.length; i += 1) {
612
-        this[i].innerHTML = html;
613
-      }
614
-      return this;
615
-    }
616
-    // eslint-disable-next-line
617
-    function text(text) {
618
-      if (typeof text === 'undefined') {
619
-        if (this[0]) {
620
-          return this[0].textContent.trim();
621
-        }
622
-        return null;
623
-      }
624
-
625
-      for (var i = 0; i < this.length; i += 1) {
626
-        this[i].textContent = text;
627
-      }
628
-      return this;
629
-    }
630
-    function is(selector) {
631
-      var el = this[0];
632
-      var compareWith;
633
-      var i;
634
-      if (!el || typeof selector === 'undefined') { return false; }
635
-      if (typeof selector === 'string') {
636
-        if (el.matches) { return el.matches(selector); }
637
-        else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }
638
-        else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }
639
-
640
-        compareWith = $(selector);
641
-        for (i = 0; i < compareWith.length; i += 1) {
642
-          if (compareWith[i] === el) { return true; }
643
-        }
644
-        return false;
645
-      } else if (selector === doc) { return el === doc; }
646
-      else if (selector === win) { return el === win; }
647
-
648
-      if (selector.nodeType || selector instanceof Dom7) {
649
-        compareWith = selector.nodeType ? [selector] : selector;
650
-        for (i = 0; i < compareWith.length; i += 1) {
651
-          if (compareWith[i] === el) { return true; }
652
-        }
653
-        return false;
654
-      }
655
-      return false;
656
-    }
657
-    function index() {
658
-      var child = this[0];
659
-      var i;
660
-      if (child) {
661
-        i = 0;
662
-        // eslint-disable-next-line
663
-        while ((child = child.previousSibling) !== null) {
664
-          if (child.nodeType === 1) { i += 1; }
665
-        }
666
-        return i;
667
-      }
668
-      return undefined;
669
-    }
670
-    // eslint-disable-next-line
671
-    function eq(index) {
672
-      if (typeof index === 'undefined') { return this; }
673
-      var length = this.length;
674
-      var returnIndex;
675
-      if (index > length - 1) {
676
-        return new Dom7([]);
677
-      }
678
-      if (index < 0) {
679
-        returnIndex = length + index;
680
-        if (returnIndex < 0) { return new Dom7([]); }
681
-        return new Dom7([this[returnIndex]]);
682
-      }
683
-      return new Dom7([this[index]]);
684
-    }
685
-    function append() {
686
-      var args = [], len = arguments.length;
687
-      while ( len-- ) args[ len ] = arguments[ len ];
688
-
689
-      var newChild;
690
-
691
-      for (var k = 0; k < args.length; k += 1) {
692
-        newChild = args[k];
693
-        for (var i = 0; i < this.length; i += 1) {
694
-          if (typeof newChild === 'string') {
695
-            var tempDiv = doc.createElement('div');
696
-            tempDiv.innerHTML = newChild;
697
-            while (tempDiv.firstChild) {
698
-              this[i].appendChild(tempDiv.firstChild);
699
-            }
700
-          } else if (newChild instanceof Dom7) {
701
-            for (var j = 0; j < newChild.length; j += 1) {
702
-              this[i].appendChild(newChild[j]);
703
-            }
704
-          } else {
705
-            this[i].appendChild(newChild);
706
-          }
707
-        }
708
-      }
709
-
710
-      return this;
711
-    }
712
-    function prepend(newChild) {
713
-      var i;
714
-      var j;
715
-      for (i = 0; i < this.length; i += 1) {
716
-        if (typeof newChild === 'string') {
717
-          var tempDiv = doc.createElement('div');
718
-          tempDiv.innerHTML = newChild;
719
-          for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
720
-            this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
721
-          }
722
-        } else if (newChild instanceof Dom7) {
723
-          for (j = 0; j < newChild.length; j += 1) {
724
-            this[i].insertBefore(newChild[j], this[i].childNodes[0]);
725
-          }
726
-        } else {
727
-          this[i].insertBefore(newChild, this[i].childNodes[0]);
728
-        }
729
-      }
730
-      return this;
731
-    }
732
-    function next(selector) {
733
-      if (this.length > 0) {
734
-        if (selector) {
735
-          if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
736
-            return new Dom7([this[0].nextElementSibling]);
737
-          }
738
-          return new Dom7([]);
739
-        }
740
-
741
-        if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }
742
-        return new Dom7([]);
743
-      }
744
-      return new Dom7([]);
745
-    }
746
-    function nextAll(selector) {
747
-      var nextEls = [];
748
-      var el = this[0];
749
-      if (!el) { return new Dom7([]); }
750
-      while (el.nextElementSibling) {
751
-        var next = el.nextElementSibling; // eslint-disable-line
752
-        if (selector) {
753
-          if ($(next).is(selector)) { nextEls.push(next); }
754
-        } else { nextEls.push(next); }
755
-        el = next;
756
-      }
757
-      return new Dom7(nextEls);
758
-    }
759
-    function prev(selector) {
760
-      if (this.length > 0) {
761
-        var el = this[0];
762
-        if (selector) {
763
-          if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
764
-            return new Dom7([el.previousElementSibling]);
765
-          }
766
-          return new Dom7([]);
767
-        }
768
-
769
-        if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }
770
-        return new Dom7([]);
771
-      }
772
-      return new Dom7([]);
773
-    }
774
-    function prevAll(selector) {
775
-      var prevEls = [];
776
-      var el = this[0];
777
-      if (!el) { return new Dom7([]); }
778
-      while (el.previousElementSibling) {
779
-        var prev = el.previousElementSibling; // eslint-disable-line
780
-        if (selector) {
781
-          if ($(prev).is(selector)) { prevEls.push(prev); }
782
-        } else { prevEls.push(prev); }
783
-        el = prev;
784
-      }
785
-      return new Dom7(prevEls);
786
-    }
787
-    function parent(selector) {
788
-      var parents = []; // eslint-disable-line
789
-      for (var i = 0; i < this.length; i += 1) {
790
-        if (this[i].parentNode !== null) {
791
-          if (selector) {
792
-            if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }
793
-          } else {
794
-            parents.push(this[i].parentNode);
795
-          }
796
-        }
797
-      }
798
-      return $(unique(parents));
799
-    }
800
-    function parents(selector) {
801
-      var parents = []; // eslint-disable-line
802
-      for (var i = 0; i < this.length; i += 1) {
803
-        var parent = this[i].parentNode; // eslint-disable-line
804
-        while (parent) {
805
-          if (selector) {
806
-            if ($(parent).is(selector)) { parents.push(parent); }
807
-          } else {
808
-            parents.push(parent);
809
-          }
810
-          parent = parent.parentNode;
811
-        }
812
-      }
813
-      return $(unique(parents));
814
-    }
815
-    function closest(selector) {
816
-      var closest = this; // eslint-disable-line
817
-      if (typeof selector === 'undefined') {
818
-        return new Dom7([]);
819
-      }
820
-      if (!closest.is(selector)) {
821
-        closest = closest.parents(selector).eq(0);
822
-      }
823
-      return closest;
824
-    }
825
-    function find(selector) {
826
-      var foundElements = [];
827
-      for (var i = 0; i < this.length; i += 1) {
828
-        var found = this[i].querySelectorAll(selector);
829
-        for (var j = 0; j < found.length; j += 1) {
830
-          foundElements.push(found[j]);
831
-        }
832
-      }
833
-      return new Dom7(foundElements);
834
-    }
835
-    function children(selector) {
836
-      var children = []; // eslint-disable-line
837
-      for (var i = 0; i < this.length; i += 1) {
838
-        var childNodes = this[i].childNodes;
839
-
840
-        for (var j = 0; j < childNodes.length; j += 1) {
841
-          if (!selector) {
842
-            if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }
843
-          } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
844
-            children.push(childNodes[j]);
845
-          }
846
-        }
847
-      }
848
-      return new Dom7(unique(children));
849
-    }
850
-    function remove() {
851
-      for (var i = 0; i < this.length; i += 1) {
852
-        if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }
853
-      }
854
-      return this;
855
-    }
856
-    function add() {
857
-      var args = [], len = arguments.length;
858
-      while ( len-- ) args[ len ] = arguments[ len ];
859
-
860
-      var dom = this;
861
-      var i;
862
-      var j;
863
-      for (i = 0; i < args.length; i += 1) {
864
-        var toAdd = $(args[i]);
865
-        for (j = 0; j < toAdd.length; j += 1) {
866
-          dom[dom.length] = toAdd[j];
867
-          dom.length += 1;
868
-        }
869
-      }
870
-      return dom;
871
-    }
872
-
873
-    var Methods = {
874
-      addClass: addClass,
875
-      removeClass: removeClass,
876
-      hasClass: hasClass,
877
-      toggleClass: toggleClass,
878
-      attr: attr,
879
-      removeAttr: removeAttr,
880
-      data: data,
881
-      transform: transform,
882
-      transition: transition,
883
-      on: on,
884
-      off: off,
885
-      trigger: trigger,
886
-      transitionEnd: transitionEnd,
887
-      outerWidth: outerWidth,
888
-      outerHeight: outerHeight,
889
-      offset: offset,
890
-      css: css,
891
-      each: each,
892
-      html: html,
893
-      text: text,
894
-      is: is,
895
-      index: index,
896
-      eq: eq,
897
-      append: append,
898
-      prepend: prepend,
899
-      next: next,
900
-      nextAll: nextAll,
901
-      prev: prev,
902
-      prevAll: prevAll,
903
-      parent: parent,
904
-      parents: parents,
905
-      closest: closest,
906
-      find: find,
907
-      children: children,
908
-      filter: filter,
909
-      remove: remove,
910
-      add: add,
911
-      styles: styles,
912
-    };
913
-
914
-    Object.keys(Methods).forEach(function (methodName) {
915
-      $.fn[methodName] = $.fn[methodName] || Methods[methodName];
916
-    });
917
-
918
-    var Utils = {
919
-      deleteProps: function deleteProps(obj) {
920
-        var object = obj;
921
-        Object.keys(object).forEach(function (key) {
922
-          try {
923
-            object[key] = null;
924
-          } catch (e) {
925
-            // no getter for object
926
-          }
927
-          try {
928
-            delete object[key];
929
-          } catch (e) {
930
-            // something got wrong
931
-          }
932
-        });
933
-      },
934
-      nextTick: function nextTick(callback, delay) {
935
-        if ( delay === void 0 ) delay = 0;
936
-
937
-        return setTimeout(callback, delay);
938
-      },
939
-      now: function now() {
940
-        return Date.now();
941
-      },
942
-      getTranslate: function getTranslate(el, axis) {
943
-        if ( axis === void 0 ) axis = 'x';
944
-
945
-        var matrix;
946
-        var curTransform;
947
-        var transformMatrix;
948
-
949
-        var curStyle = win.getComputedStyle(el, null);
950
-
951
-        if (win.WebKitCSSMatrix) {
952
-          curTransform = curStyle.transform || curStyle.webkitTransform;
953
-          if (curTransform.split(',').length > 6) {
954
-            curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');
955
-          }
956
-          // Some old versions of Webkit choke when 'none' is passed; pass
957
-          // empty string instead in this case
958
-          transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
959
-        } else {
960
-          transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
961
-          matrix = transformMatrix.toString().split(',');
962
-        }
963
-
964
-        if (axis === 'x') {
965
-          // Latest Chrome and webkits Fix
966
-          if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }
967
-          // Crazy IE10 Matrix
968
-          else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }
969
-          // Normal Browsers
970
-          else { curTransform = parseFloat(matrix[4]); }
971
-        }
972
-        if (axis === 'y') {
973
-          // Latest Chrome and webkits Fix
974
-          if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }
975
-          // Crazy IE10 Matrix
976
-          else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }
977
-          // Normal Browsers
978
-          else { curTransform = parseFloat(matrix[5]); }
979
-        }
980
-        return curTransform || 0;
981
-      },
982
-      parseUrlQuery: function parseUrlQuery(url) {
983
-        var query = {};
984
-        var urlToParse = url || win.location.href;
985
-        var i;
986
-        var params;
987
-        var param;
988
-        var length;
989
-        if (typeof urlToParse === 'string' && urlToParse.length) {
990
-          urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
991
-          params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });
992
-          length = params.length;
993
-
994
-          for (i = 0; i < length; i += 1) {
995
-            param = params[i].replace(/#\S+/g, '').split('=');
996
-            query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
997
-          }
998
-        }
999
-        return query;
1000
-      },
1001
-      isObject: function isObject(o) {
1002
-        return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1003
-      },
1004
-      extend: function extend() {
1005
-        var args = [], len$1 = arguments.length;
1006
-        while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];
1007
-
1008
-        var to = Object(args[0]);
1009
-        for (var i = 1; i < args.length; i += 1) {
1010
-          var nextSource = args[i];
1011
-          if (nextSource !== undefined && nextSource !== null) {
1012
-            var keysArray = Object.keys(Object(nextSource));
1013
-            for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1014
-              var nextKey = keysArray[nextIndex];
1015
-              var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1016
-              if (desc !== undefined && desc.enumerable) {
1017
-                if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
1018
-                  Utils.extend(to[nextKey], nextSource[nextKey]);
1019
-                } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
1020
-                  to[nextKey] = {};
1021
-                  Utils.extend(to[nextKey], nextSource[nextKey]);
1022
-                } else {
1023
-                  to[nextKey] = nextSource[nextKey];
1024
-                }
1025
-              }
1026
-            }
1027
-          }
1028
-        }
1029
-        return to;
1030
-      },
1031
-    };
1032
-
1033
-    var Support = (function Support() {
1034
-      return {
1035
-        touch: !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)),
1036
-
1037
-        pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints >= 0,
1038
-
1039
-        observer: (function checkObserver() {
1040
-          return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
1041
-        }()),
1042
-
1043
-        passiveListener: (function checkPassiveListener() {
1044
-          var supportsPassive = false;
1045
-          try {
1046
-            var opts = Object.defineProperty({}, 'passive', {
1047
-              // eslint-disable-next-line
1048
-              get: function get() {
1049
-                supportsPassive = true;
1050
-              },
1051
-            });
1052
-            win.addEventListener('testPassiveListener', null, opts);
1053
-          } catch (e) {
1054
-            // No support
1055
-          }
1056
-          return supportsPassive;
1057
-        }()),
1058
-
1059
-        gestures: (function checkGestures() {
1060
-          return 'ongesturestart' in win;
1061
-        }()),
1062
-      };
1063
-    }());
1064
-
1065
-    var SwiperClass = function SwiperClass(params) {
1066
-      if ( params === void 0 ) params = {};
1067
-
1068
-      var self = this;
1069
-      self.params = params;
1070
-
1071
-      // Events
1072
-      self.eventsListeners = {};
1073
-
1074
-      if (self.params && self.params.on) {
1075
-        Object.keys(self.params.on).forEach(function (eventName) {
1076
-          self.on(eventName, self.params.on[eventName]);
1077
-        });
1078
-      }
1079
-    };
1080
-
1081
-    var staticAccessors = { components: { configurable: true } };
1082
-
1083
-    SwiperClass.prototype.on = function on (events, handler, priority) {
1084
-      var self = this;
1085
-      if (typeof handler !== 'function') { return self; }
1086
-      var method = priority ? 'unshift' : 'push';
1087
-      events.split(' ').forEach(function (event) {
1088
-        if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }
1089
-        self.eventsListeners[event][method](handler);
1090
-      });
1091
-      return self;
1092
-    };
1093
-
1094
-    SwiperClass.prototype.once = function once (events, handler, priority) {
1095
-      var self = this;
1096
-      if (typeof handler !== 'function') { return self; }
1097
-      function onceHandler() {
1098
-          var args = [], len = arguments.length;
1099
-          while ( len-- ) args[ len ] = arguments[ len ];
1100
-
1101
-        self.off(events, onceHandler);
1102
-        if (onceHandler.f7proxy) {
1103
-          delete onceHandler.f7proxy;
1104
-        }
1105
-        handler.apply(self, args);
1106
-      }
1107
-      onceHandler.f7proxy = handler;
1108
-      return self.on(events, onceHandler, priority);
1109
-    };
1110
-
1111
-    SwiperClass.prototype.off = function off (events, handler) {
1112
-      var self = this;
1113
-      if (!self.eventsListeners) { return self; }
1114
-      events.split(' ').forEach(function (event) {
1115
-        if (typeof handler === 'undefined') {
1116
-          self.eventsListeners[event] = [];
1117
-        } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
1118
-          self.eventsListeners[event].forEach(function (eventHandler, index) {
1119
-            if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
1120
-              self.eventsListeners[event].splice(index, 1);
1121
-            }
1122
-          });
1123
-        }
1124
-      });
1125
-      return self;
1126
-    };
1127
-
1128
-    SwiperClass.prototype.emit = function emit () {
1129
-        var args = [], len = arguments.length;
1130
-        while ( len-- ) args[ len ] = arguments[ len ];
1131
-
1132
-      var self = this;
1133
-      if (!self.eventsListeners) { return self; }
1134
-      var events;
1135
-      var data;
1136
-      var context;
1137
-      if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1138
-        events = args[0];
1139
-        data = args.slice(1, args.length);
1140
-        context = self;
1141
-      } else {
1142
-        events = args[0].events;
1143
-        data = args[0].data;
1144
-        context = args[0].context || self;
1145
-      }
1146
-      var eventsArray = Array.isArray(events) ? events : events.split(' ');
1147
-      eventsArray.forEach(function (event) {
1148
-        if (self.eventsListeners && self.eventsListeners[event]) {
1149
-          var handlers = [];
1150
-          self.eventsListeners[event].forEach(function (eventHandler) {
1151
-            handlers.push(eventHandler);
1152
-          });
1153
-          handlers.forEach(function (eventHandler) {
1154
-            eventHandler.apply(context, data);
1155
-          });
1156
-        }
1157
-      });
1158
-      return self;
1159
-    };
1160
-
1161
-    SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {
1162
-      var instance = this;
1163
-      if (!instance.modules) { return; }
1164
-      Object.keys(instance.modules).forEach(function (moduleName) {
1165
-        var module = instance.modules[moduleName];
1166
-        // Extend params
1167
-        if (module.params) {
1168
-          Utils.extend(instanceParams, module.params);
1169
-        }
1170
-      });
1171
-    };
1172
-
1173
-    SwiperClass.prototype.useModules = function useModules (modulesParams) {
1174
-        if ( modulesParams === void 0 ) modulesParams = {};
1175
-
1176
-      var instance = this;
1177
-      if (!instance.modules) { return; }
1178
-      Object.keys(instance.modules).forEach(function (moduleName) {
1179
-        var module = instance.modules[moduleName];
1180
-        var moduleParams = modulesParams[moduleName] || {};
1181
-        // Extend instance methods and props
1182
-        if (module.instance) {
1183
-          Object.keys(module.instance).forEach(function (modulePropName) {
1184
-            var moduleProp = module.instance[modulePropName];
1185
-            if (typeof moduleProp === 'function') {
1186
-              instance[modulePropName] = moduleProp.bind(instance);
1187
-            } else {
1188
-              instance[modulePropName] = moduleProp;
1189
-            }
1190
-          });
1191
-        }
1192
-        // Add event listeners
1193
-        if (module.on && instance.on) {
1194
-          Object.keys(module.on).forEach(function (moduleEventName) {
1195
-            instance.on(moduleEventName, module.on[moduleEventName]);
1196
-          });
1197
-        }
1198
-
1199
-        // Module create callback
1200
-        if (module.create) {
1201
-          module.create.bind(instance)(moduleParams);
1202
-        }
1203
-      });
1204
-    };
1205
-
1206
-    staticAccessors.components.set = function (components) {
1207
-      var Class = this;
1208
-      if (!Class.use) { return; }
1209
-      Class.use(components);
1210
-    };
1211
-
1212
-    SwiperClass.installModule = function installModule (module) {
1213
-        var params = [], len = arguments.length - 1;
1214
-        while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
1215
-
1216
-      var Class = this;
1217
-      if (!Class.prototype.modules) { Class.prototype.modules = {}; }
1218
-      var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now())));
1219
-      Class.prototype.modules[name] = module;
1220
-      // Prototype
1221
-      if (module.proto) {
1222
-        Object.keys(module.proto).forEach(function (key) {
1223
-          Class.prototype[key] = module.proto[key];
1224
-        });
1225
-      }
1226
-      // Class
1227
-      if (module.static) {
1228
-        Object.keys(module.static).forEach(function (key) {
1229
-          Class[key] = module.static[key];
1230
-        });
1231
-      }
1232
-      // Callback
1233
-      if (module.install) {
1234
-        module.install.apply(Class, params);
1235
-      }
1236
-      return Class;
1237
-    };
1238
-
1239
-    SwiperClass.use = function use (module) {
1240
-        var params = [], len = arguments.length - 1;
1241
-        while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
1242
-
1243
-      var Class = this;
1244
-      if (Array.isArray(module)) {
1245
-        module.forEach(function (m) { return Class.installModule(m); });
1246
-        return Class;
1247
-      }
1248
-      return Class.installModule.apply(Class, [ module ].concat( params ));
1249
-    };
1250
-
1251
-    Object.defineProperties( SwiperClass, staticAccessors );
1252
-
1253
-    function updateSize () {
1254
-      var swiper = this;
1255
-      var width;
1256
-      var height;
1257
-      var $el = swiper.$el;
1258
-      if (typeof swiper.params.width !== 'undefined') {
1259
-        width = swiper.params.width;
1260
-      } else {
1261
-        width = $el[0].clientWidth;
1262
-      }
1263
-      if (typeof swiper.params.height !== 'undefined') {
1264
-        height = swiper.params.height;
1265
-      } else {
1266
-        height = $el[0].clientHeight;
1267
-      }
1268
-      if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
1269
-        return;
1270
-      }
1271
-
1272
-      // Subtract paddings
1273
-      width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
1274
-      height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
1275
-
1276
-      Utils.extend(swiper, {
1277
-        width: width,
1278
-        height: height,
1279
-        size: swiper.isHorizontal() ? width : height,
1280
-      });
1281
-    }
1282
-
1283
-    function updateSlides () {
1284
-      var swiper = this;
1285
-      var params = swiper.params;
1286
-
1287
-      var $wrapperEl = swiper.$wrapperEl;
1288
-      var swiperSize = swiper.size;
1289
-      var rtl = swiper.rtlTranslate;
1290
-      var wrongRTL = swiper.wrongRTL;
1291
-      var isVirtual = swiper.virtual && params.virtual.enabled;
1292
-      var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1293
-      var slides = $wrapperEl.children(("." + (swiper.params.slideClass)));
1294
-      var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1295
-      var snapGrid = [];
1296
-      var slidesGrid = [];
1297
-      var slidesSizesGrid = [];
1298
-
1299
-      function slidesForMargin(slideIndex) {
1300
-        if (!params.cssMode) { return true; }
1301
-        if (slideIndex === slides.length - 1) {
1302
-          return false;
1303
-        }
1304
-        return true;
1305
-      }
1306
-
1307
-      var offsetBefore = params.slidesOffsetBefore;
1308
-      if (typeof offsetBefore === 'function') {
1309
-        offsetBefore = params.slidesOffsetBefore.call(swiper);
1310
-      }
1311
-
1312
-      var offsetAfter = params.slidesOffsetAfter;
1313
-      if (typeof offsetAfter === 'function') {
1314
-        offsetAfter = params.slidesOffsetAfter.call(swiper);
1315
-      }
1316
-
1317
-      var previousSnapGridLength = swiper.snapGrid.length;
1318
-      var previousSlidesGridLength = swiper.snapGrid.length;
1319
-
1320
-      var spaceBetween = params.spaceBetween;
1321
-      var slidePosition = -offsetBefore;
1322
-      var prevSlideSize = 0;
1323
-      var index = 0;
1324
-      if (typeof swiperSize === 'undefined') {
1325
-        return;
1326
-      }
1327
-      if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1328
-        spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
1329
-      }
1330
-
1331
-      swiper.virtualSize = -spaceBetween;
1332
-
1333
-      // reset margins
1334
-      if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }
1335
-      else { slides.css({ marginRight: '', marginBottom: '' }); }
1336
-
1337
-      var slidesNumberEvenToRows;
1338
-      if (params.slidesPerColumn > 1) {
1339
-        if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1340
-          slidesNumberEvenToRows = slidesLength;
1341
-        } else {
1342
-          slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1343
-        }
1344
-        if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1345
-          slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1346
-        }
1347
-      }
1348
-
1349
-      // Calc slides
1350
-      var slideSize;
1351
-      var slidesPerColumn = params.slidesPerColumn;
1352
-      var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1353
-      var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1354
-      for (var i = 0; i < slidesLength; i += 1) {
1355
-        slideSize = 0;
1356
-        var slide = slides.eq(i);
1357
-        if (params.slidesPerColumn > 1) {
1358
-          // Set slides order
1359
-          var newSlideOrderIndex = (void 0);
1360
-          var column = (void 0);
1361
-          var row = (void 0);
1362
-          if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1363
-            var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1364
-            var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1365
-            var columnsInGroup = groupIndex === 0
1366
-              ? params.slidesPerGroup
1367
-              : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1368
-            row = Math.floor(slideIndexInGroup / columnsInGroup);
1369
-            column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
1370
-
1371
-            newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
1372
-            slide
1373
-              .css({
1374
-                '-webkit-box-ordinal-group': newSlideOrderIndex,
1375
-                '-moz-box-ordinal-group': newSlideOrderIndex,
1376
-                '-ms-flex-order': newSlideOrderIndex,
1377
-                '-webkit-order': newSlideOrderIndex,
1378
-                order: newSlideOrderIndex,
1379
-              });
1380
-          } else if (params.slidesPerColumnFill === 'column') {
1381
-            column = Math.floor(i / slidesPerColumn);
1382
-            row = i - (column * slidesPerColumn);
1383
-            if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
1384
-              row += 1;
1385
-              if (row >= slidesPerColumn) {
1386
-                row = 0;
1387
-                column += 1;
1388
-              }
1389
-            }
1390
-          } else {
1391
-            row = Math.floor(i / slidesPerRow);
1392
-            column = i - (row * slidesPerRow);
1393
-          }
1394
-          slide.css(
1395
-            ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')),
1396
-            (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px"))
1397
-          );
1398
-        }
1399
-        if (slide.css('display') === 'none') { continue; } // eslint-disable-line
1400
-
1401
-        if (params.slidesPerView === 'auto') {
1402
-          var slideStyles = win.getComputedStyle(slide[0], null);
1403
-          var currentTransform = slide[0].style.transform;
1404
-          var currentWebKitTransform = slide[0].style.webkitTransform;
1405
-          if (currentTransform) {
1406
-            slide[0].style.transform = 'none';
1407
-          }
1408
-          if (currentWebKitTransform) {
1409
-            slide[0].style.webkitTransform = 'none';
1410
-          }
1411
-          if (params.roundLengths) {
1412
-            slideSize = swiper.isHorizontal()
1413
-              ? slide.outerWidth(true)
1414
-              : slide.outerHeight(true);
1415
-          } else {
1416
-            // eslint-disable-next-line
1417
-            if (swiper.isHorizontal()) {
1418
-              var width = parseFloat(slideStyles.getPropertyValue('width'));
1419
-              var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
1420
-              var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
1421
-              var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
1422
-              var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
1423
-              var boxSizing = slideStyles.getPropertyValue('box-sizing');
1424
-              if (boxSizing && boxSizing === 'border-box') {
1425
-                slideSize = width + marginLeft + marginRight;
1426
-              } else {
1427
-                slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
1428
-              }
1429
-            } else {
1430
-              var height = parseFloat(slideStyles.getPropertyValue('height'));
1431
-              var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
1432
-              var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
1433
-              var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
1434
-              var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
1435
-              var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');
1436
-              if (boxSizing$1 && boxSizing$1 === 'border-box') {
1437
-                slideSize = height + marginTop + marginBottom;
1438
-              } else {
1439
-                slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
1440
-              }
1441
-            }
1442
-          }
1443
-          if (currentTransform) {
1444
-            slide[0].style.transform = currentTransform;
1445
-          }
1446
-          if (currentWebKitTransform) {
1447
-            slide[0].style.webkitTransform = currentWebKitTransform;
1448
-          }
1449
-          if (params.roundLengths) { slideSize = Math.floor(slideSize); }
1450
-        } else {
1451
-          slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
1452
-          if (params.roundLengths) { slideSize = Math.floor(slideSize); }
1453
-
1454
-          if (slides[i]) {
1455
-            if (swiper.isHorizontal()) {
1456
-              slides[i].style.width = slideSize + "px";
1457
-            } else {
1458
-              slides[i].style.height = slideSize + "px";
1459
-            }
1460
-          }
1461
-        }
1462
-        if (slides[i]) {
1463
-          slides[i].swiperSlideSize = slideSize;
1464
-        }
1465
-        slidesSizesGrid.push(slideSize);
1466
-
1467
-
1468
-        if (params.centeredSlides) {
1469
-          slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
1470
-          if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
1471
-          if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
1472
-          if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }
1473
-          if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
1474
-          if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
1475
-          slidesGrid.push(slidePosition);
1476
-        } else {
1477
-          if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
1478
-          if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
1479
-          slidesGrid.push(slidePosition);
1480
-          slidePosition = slidePosition + slideSize + spaceBetween;
1481
-        }
1482
-
1483
-        swiper.virtualSize += slideSize + spaceBetween;
1484
-
1485
-        prevSlideSize = slideSize;
1486
-
1487
-        index += 1;
1488
-      }
1489
-      swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1490
-      var newSlidesGrid;
1491
-
1492
-      if (
1493
-        rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1494
-        $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });
1495
-      }
1496
-      if (params.setWrapperSize) {
1497
-        if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1498
-        else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1499
-      }
1500
-
1501
-      if (params.slidesPerColumn > 1) {
1502
-        swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1503
-        swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1504
-        if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1505
-        else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1506
-        if (params.centeredSlides) {
1507
-          newSlidesGrid = [];
1508
-          for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
1509
-            var slidesGridItem = snapGrid[i$1];
1510
-            if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }
1511
-            if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }
1512
-          }
1513
-          snapGrid = newSlidesGrid;
1514
-        }
1515
-      }
1516
-
1517
-      // Remove last grid elements depending on width
1518
-      if (!params.centeredSlides) {
1519
-        newSlidesGrid = [];
1520
-        for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
1521
-          var slidesGridItem$1 = snapGrid[i$2];
1522
-          if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }
1523
-          if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
1524
-            newSlidesGrid.push(slidesGridItem$1);
1525
-          }
1526
-        }
1527
-        snapGrid = newSlidesGrid;
1528
-        if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
1529
-          snapGrid.push(swiper.virtualSize - swiperSize);
1530
-        }
1531
-      }
1532
-      if (snapGrid.length === 0) { snapGrid = [0]; }
1533
-
1534
-      if (params.spaceBetween !== 0) {
1535
-        if (swiper.isHorizontal()) {
1536
-          if (rtl) { slides.filter(slidesForMargin).css({ marginLeft: (spaceBetween + "px") }); }
1537
-          else { slides.filter(slidesForMargin).css({ marginRight: (spaceBetween + "px") }); }
1538
-        } else { slides.filter(slidesForMargin).css({ marginBottom: (spaceBetween + "px") }); }
1539
-      }
1540
-
1541
-      if (params.centeredSlides && params.centeredSlidesBounds) {
1542
-        var allSlidesSize = 0;
1543
-        slidesSizesGrid.forEach(function (slideSizeValue) {
1544
-          allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1545
-        });
1546
-        allSlidesSize -= params.spaceBetween;
1547
-        var maxSnap = allSlidesSize - swiperSize;
1548
-        snapGrid = snapGrid.map(function (snap) {
1549
-          if (snap < 0) { return -offsetBefore; }
1550
-          if (snap > maxSnap) { return maxSnap + offsetAfter; }
1551
-          return snap;
1552
-        });
1553
-      }
1554
-
1555
-      if (params.centerInsufficientSlides) {
1556
-        var allSlidesSize$1 = 0;
1557
-        slidesSizesGrid.forEach(function (slideSizeValue) {
1558
-          allSlidesSize$1 += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1559
-        });
1560
-        allSlidesSize$1 -= params.spaceBetween;
1561
-        if (allSlidesSize$1 < swiperSize) {
1562
-          var allSlidesOffset = (swiperSize - allSlidesSize$1) / 2;
1563
-          snapGrid.forEach(function (snap, snapIndex) {
1564
-            snapGrid[snapIndex] = snap - allSlidesOffset;
1565
-          });
1566
-          slidesGrid.forEach(function (snap, snapIndex) {
1567
-            slidesGrid[snapIndex] = snap + allSlidesOffset;
1568
-          });
1569
-        }
1570
-      }
1571
-
1572
-      Utils.extend(swiper, {
1573
-        slides: slides,
1574
-        snapGrid: snapGrid,
1575
-        slidesGrid: slidesGrid,
1576
-        slidesSizesGrid: slidesSizesGrid,
1577
-      });
1578
-
1579
-      if (slidesLength !== previousSlidesLength) {
1580
-        swiper.emit('slidesLengthChange');
1581
-      }
1582
-      if (snapGrid.length !== previousSnapGridLength) {
1583
-        if (swiper.params.watchOverflow) { swiper.checkOverflow(); }
1584
-        swiper.emit('snapGridLengthChange');
1585
-      }
1586
-      if (slidesGrid.length !== previousSlidesGridLength) {
1587
-        swiper.emit('slidesGridLengthChange');
1588
-      }
1589
-
1590
-      if (params.watchSlidesProgress || params.watchSlidesVisibility) {
1591
-        swiper.updateSlidesOffset();
1592
-      }
1593
-    }
1594
-
1595
-    function updateAutoHeight (speed) {
1596
-      var swiper = this;
1597
-      var activeSlides = [];
1598
-      var newHeight = 0;
1599
-      var i;
1600
-      if (typeof speed === 'number') {
1601
-        swiper.setTransition(speed);
1602
-      } else if (speed === true) {
1603
-        swiper.setTransition(swiper.params.speed);
1604
-      }
1605
-      // Find slides currently in view
1606
-      if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
1607
-        if (swiper.params.centeredSlides) {
1608
-          swiper.visibleSlides.each(function (index, slide) {
1609
-            activeSlides.push(slide);
1610
-          });
1611
-        } else {
1612
-          for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1613
-            var index = swiper.activeIndex + i;
1614
-            if (index > swiper.slides.length) { break; }
1615
-            activeSlides.push(swiper.slides.eq(index)[0]);
1616
-          }
1617
-        }
1618
-      } else {
1619
-        activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
1620
-      }
1621
-
1622
-      // Find new height from highest slide in view
1623
-      for (i = 0; i < activeSlides.length; i += 1) {
1624
-        if (typeof activeSlides[i] !== 'undefined') {
1625
-          var height = activeSlides[i].offsetHeight;
1626
-          newHeight = height > newHeight ? height : newHeight;
1627
-        }
1628
-      }
1629
-
1630
-      // Update Height
1631
-      if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); }
1632
-    }
1633
-
1634
-    function updateSlidesOffset () {
1635
-      var swiper = this;
1636
-      var slides = swiper.slides;
1637
-      for (var i = 0; i < slides.length; i += 1) {
1638
-        slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
1639
-      }
1640
-    }
1641
-
1642
-    function updateSlidesProgress (translate) {
1643
-      if ( translate === void 0 ) translate = (this && this.translate) || 0;
1644
-
1645
-      var swiper = this;
1646
-      var params = swiper.params;
1647
-
1648
-      var slides = swiper.slides;
1649
-      var rtl = swiper.rtlTranslate;
1650
-
1651
-      if (slides.length === 0) { return; }
1652
-      if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }
1653
-
1654
-      var offsetCenter = -translate;
1655
-      if (rtl) { offsetCenter = translate; }
1656
-
1657
-      // Visible Slides
1658
-      slides.removeClass(params.slideVisibleClass);
1659
-
1660
-      swiper.visibleSlidesIndexes = [];
1661
-      swiper.visibleSlides = [];
1662
-
1663
-      for (var i = 0; i < slides.length; i += 1) {
1664
-        var slide = slides[i];
1665
-        var slideProgress = (
1666
-          (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
1667
-        ) / (slide.swiperSlideSize + params.spaceBetween);
1668
-        if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
1669
-          var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
1670
-          var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
1671
-          var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
1672
-                    || (slideAfter > 1 && slideAfter <= swiper.size)
1673
-                    || (slideBefore <= 0 && slideAfter >= swiper.size);
1674
-          if (isVisible) {
1675
-            swiper.visibleSlides.push(slide);
1676
-            swiper.visibleSlidesIndexes.push(i);
1677
-            slides.eq(i).addClass(params.slideVisibleClass);
1678
-          }
1679
-        }
1680
-        slide.progress = rtl ? -slideProgress : slideProgress;
1681
-      }
1682
-      swiper.visibleSlides = $(swiper.visibleSlides);
1683
-    }
1684
-
1685
-    function updateProgress (translate) {
1686
-      var swiper = this;
1687
-      if (typeof translate === 'undefined') {
1688
-        var multiplier = swiper.rtlTranslate ? -1 : 1;
1689
-        // eslint-disable-next-line
1690
-        translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
1691
-      }
1692
-      var params = swiper.params;
1693
-      var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1694
-      var progress = swiper.progress;
1695
-      var isBeginning = swiper.isBeginning;
1696
-      var isEnd = swiper.isEnd;
1697
-      var wasBeginning = isBeginning;
1698
-      var wasEnd = isEnd;
1699
-      if (translatesDiff === 0) {
1700
-        progress = 0;
1701
-        isBeginning = true;
1702
-        isEnd = true;
1703
-      } else {
1704
-        progress = (translate - swiper.minTranslate()) / (translatesDiff);
1705
-        isBeginning = progress <= 0;
1706
-        isEnd = progress >= 1;
1707
-      }
1708
-      Utils.extend(swiper, {
1709
-        progress: progress,
1710
-        isBeginning: isBeginning,
1711
-        isEnd: isEnd,
1712
-      });
1713
-
1714
-      if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) { swiper.updateSlidesProgress(translate); }
1715
-
1716
-      if (isBeginning && !wasBeginning) {
1717
-        swiper.emit('reachBeginning toEdge');
1718
-      }
1719
-      if (isEnd && !wasEnd) {
1720
-        swiper.emit('reachEnd toEdge');
1721
-      }
1722
-      if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
1723
-        swiper.emit('fromEdge');
1724
-      }
1725
-
1726
-      swiper.emit('progress', progress);
1727
-    }
1728
-
1729
-    function updateSlidesClasses () {
1730
-      var swiper = this;
1731
-
1732
-      var slides = swiper.slides;
1733
-      var params = swiper.params;
1734
-      var $wrapperEl = swiper.$wrapperEl;
1735
-      var activeIndex = swiper.activeIndex;
1736
-      var realIndex = swiper.realIndex;
1737
-      var isVirtual = swiper.virtual && params.virtual.enabled;
1738
-
1739
-      slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass)));
1740
-
1741
-      var activeSlide;
1742
-      if (isVirtual) {
1743
-        activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]"));
1744
-      } else {
1745
-        activeSlide = slides.eq(activeIndex);
1746
-      }
1747
-
1748
-      // Active classes
1749
-      activeSlide.addClass(params.slideActiveClass);
1750
-
1751
-      if (params.loop) {
1752
-        // Duplicate to all looped slides
1753
-        if (activeSlide.hasClass(params.slideDuplicateClass)) {
1754
-          $wrapperEl
1755
-            .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]"))
1756
-            .addClass(params.slideDuplicateActiveClass);
1757
-        } else {
1758
-          $wrapperEl
1759
-            .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]"))
1760
-            .addClass(params.slideDuplicateActiveClass);
1761
-        }
1762
-      }
1763
-      // Next Slide
1764
-      var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass);
1765
-      if (params.loop && nextSlide.length === 0) {
1766
-        nextSlide = slides.eq(0);
1767
-        nextSlide.addClass(params.slideNextClass);
1768
-      }
1769
-      // Prev Slide
1770
-      var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass);
1771
-      if (params.loop && prevSlide.length === 0) {
1772
-        prevSlide = slides.eq(-1);
1773
-        prevSlide.addClass(params.slidePrevClass);
1774
-      }
1775
-      if (params.loop) {
1776
-        // Duplicate to all looped slides
1777
-        if (nextSlide.hasClass(params.slideDuplicateClass)) {
1778
-          $wrapperEl
1779
-            .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
1780
-            .addClass(params.slideDuplicateNextClass);
1781
-        } else {
1782
-          $wrapperEl
1783
-            .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
1784
-            .addClass(params.slideDuplicateNextClass);
1785
-        }
1786
-        if (prevSlide.hasClass(params.slideDuplicateClass)) {
1787
-          $wrapperEl
1788
-            .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
1789
-            .addClass(params.slideDuplicatePrevClass);
1790
-        } else {
1791
-          $wrapperEl
1792
-            .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
1793
-            .addClass(params.slideDuplicatePrevClass);
1794
-        }
1795
-      }
1796
-    }
1797
-
1798
-    function updateActiveIndex (newActiveIndex) {
1799
-      var swiper = this;
1800
-      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1801
-      var slidesGrid = swiper.slidesGrid;
1802
-      var snapGrid = swiper.snapGrid;
1803
-      var params = swiper.params;
1804
-      var previousIndex = swiper.activeIndex;
1805
-      var previousRealIndex = swiper.realIndex;
1806
-      var previousSnapIndex = swiper.snapIndex;
1807
-      var activeIndex = newActiveIndex;
1808
-      var snapIndex;
1809
-      if (typeof activeIndex === 'undefined') {
1810
-        for (var i = 0; i < slidesGrid.length; i += 1) {
1811
-          if (typeof slidesGrid[i + 1] !== 'undefined') {
1812
-            if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
1813
-              activeIndex = i;
1814
-            } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
1815
-              activeIndex = i + 1;
1816
-            }
1817
-          } else if (translate >= slidesGrid[i]) {
1818
-            activeIndex = i;
1819
-          }
1820
-        }
1821
-        // Normalize slideIndex
1822
-        if (params.normalizeSlideIndex) {
1823
-          if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }
1824
-        }
1825
-      }
1826
-      if (snapGrid.indexOf(translate) >= 0) {
1827
-        snapIndex = snapGrid.indexOf(translate);
1828
-      } else {
1829
-        var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
1830
-        snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
1831
-      }
1832
-      if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
1833
-      if (activeIndex === previousIndex) {
1834
-        if (snapIndex !== previousSnapIndex) {
1835
-          swiper.snapIndex = snapIndex;
1836
-          swiper.emit('snapIndexChange');
1837
-        }
1838
-        return;
1839
-      }
1840
-
1841
-      // Get real index
1842
-      var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
1843
-
1844
-      Utils.extend(swiper, {
1845
-        snapIndex: snapIndex,
1846
-        realIndex: realIndex,
1847
-        previousIndex: previousIndex,
1848
-        activeIndex: activeIndex,
1849
-      });
1850
-      swiper.emit('activeIndexChange');
1851
-      swiper.emit('snapIndexChange');
1852
-      if (previousRealIndex !== realIndex) {
1853
-        swiper.emit('realIndexChange');
1854
-      }
1855
-      if (swiper.initialized || swiper.params.runCallbacksOnInit) {
1856
-        swiper.emit('slideChange');
1857
-      }
1858
-    }
1859
-
1860
-    function updateClickedSlide (e) {
1861
-      var swiper = this;
1862
-      var params = swiper.params;
1863
-      var slide = $(e.target).closest(("." + (params.slideClass)))[0];
1864
-      var slideFound = false;
1865
-      if (slide) {
1866
-        for (var i = 0; i < swiper.slides.length; i += 1) {
1867
-          if (swiper.slides[i] === slide) { slideFound = true; }
1868
-        }
1869
-      }
1870
-
1871
-      if (slide && slideFound) {
1872
-        swiper.clickedSlide = slide;
1873
-        if (swiper.virtual && swiper.params.virtual.enabled) {
1874
-          swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
1875
-        } else {
1876
-          swiper.clickedIndex = $(slide).index();
1877
-        }
1878
-      } else {
1879
-        swiper.clickedSlide = undefined;
1880
-        swiper.clickedIndex = undefined;
1881
-        return;
1882
-      }
1883
-      if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
1884
-        swiper.slideToClickedSlide();
1885
-      }
1886
-    }
1887
-
1888
-    var update = {
1889
-      updateSize: updateSize,
1890
-      updateSlides: updateSlides,
1891
-      updateAutoHeight: updateAutoHeight,
1892
-      updateSlidesOffset: updateSlidesOffset,
1893
-      updateSlidesProgress: updateSlidesProgress,
1894
-      updateProgress: updateProgress,
1895
-      updateSlidesClasses: updateSlidesClasses,
1896
-      updateActiveIndex: updateActiveIndex,
1897
-      updateClickedSlide: updateClickedSlide,
1898
-    };
1899
-
1900
-    function getTranslate (axis) {
1901
-      if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';
1902
-
1903
-      var swiper = this;
1904
-
1905
-      var params = swiper.params;
1906
-      var rtl = swiper.rtlTranslate;
1907
-      var translate = swiper.translate;
1908
-      var $wrapperEl = swiper.$wrapperEl;
1909
-
1910
-      if (params.virtualTranslate) {
1911
-        return rtl ? -translate : translate;
1912
-      }
1913
-      if (params.cssMode) {
1914
-        return translate;
1915
-      }
1916
-
1917
-      var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
1918
-      if (rtl) { currentTranslate = -currentTranslate; }
1919
-
1920
-      return currentTranslate || 0;
1921
-    }
1922
-
1923
-    function setTranslate (translate, byController) {
1924
-      var swiper = this;
1925
-      var rtl = swiper.rtlTranslate;
1926
-      var params = swiper.params;
1927
-      var $wrapperEl = swiper.$wrapperEl;
1928
-      var wrapperEl = swiper.wrapperEl;
1929
-      var progress = swiper.progress;
1930
-      var x = 0;
1931
-      var y = 0;
1932
-      var z = 0;
1933
-
1934
-      if (swiper.isHorizontal()) {
1935
-        x = rtl ? -translate : translate;
1936
-      } else {
1937
-        y = translate;
1938
-      }
1939
-
1940
-      if (params.roundLengths) {
1941
-        x = Math.floor(x);
1942
-        y = Math.floor(y);
1943
-      }
1944
-
1945
-      if (params.cssMode) {
1946
-        wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
1947
-      } else if (!params.virtualTranslate) {
1948
-        $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)"));
1949
-      }
1950
-      swiper.previousTranslate = swiper.translate;
1951
-      swiper.translate = swiper.isHorizontal() ? x : y;
1952
-
1953
-      // Check if we need to update progress
1954
-      var newProgress;
1955
-      var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1956
-      if (translatesDiff === 0) {
1957
-        newProgress = 0;
1958
-      } else {
1959
-        newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
1960
-      }
1961
-      if (newProgress !== progress) {
1962
-        swiper.updateProgress(translate);
1963
-      }
1964
-
1965
-      swiper.emit('setTranslate', swiper.translate, byController);
1966
-    }
1967
-
1968
-    function minTranslate () {
1969
-      return (-this.snapGrid[0]);
1970
-    }
1971
-
1972
-    function maxTranslate () {
1973
-      return (-this.snapGrid[this.snapGrid.length - 1]);
1974
-    }
1975
-
1976
-    function translateTo (translate, speed, runCallbacks, translateBounds, internal) {
1977
-      var obj;
1978
-
1979
-      if ( translate === void 0 ) translate = 0;
1980
-      if ( speed === void 0 ) speed = this.params.speed;
1981
-      if ( runCallbacks === void 0 ) runCallbacks = true;
1982
-      if ( translateBounds === void 0 ) translateBounds = true;
1983
-      var swiper = this;
1984
-
1985
-      var params = swiper.params;
1986
-      var wrapperEl = swiper.wrapperEl;
1987
-
1988
-      if (swiper.animating && params.preventInteractionOnTransition) {
1989
-        return false;
1990
-      }
1991
-
1992
-      var minTranslate = swiper.minTranslate();
1993
-      var maxTranslate = swiper.maxTranslate();
1994
-      var newTranslate;
1995
-      if (translateBounds && translate > minTranslate) { newTranslate = minTranslate; }
1996
-      else if (translateBounds && translate < maxTranslate) { newTranslate = maxTranslate; }
1997
-      else { newTranslate = translate; }
1998
-
1999
-      // Update progress
2000
-      swiper.updateProgress(newTranslate);
2001
-
2002
-      if (params.cssMode) {
2003
-        var isH = swiper.isHorizontal();
2004
-        if (speed === 0) {
2005
-          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2006
-        } else {
2007
-          // eslint-disable-next-line
2008
-          if (wrapperEl.scrollTo) {
2009
-            wrapperEl.scrollTo(( obj = {}, obj[isH ? 'left' : 'top'] = -newTranslate, obj.behavior = 'smooth', obj ));
2010
-          } else {
2011
-            wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2012
-          }
2013
-        }
2014
-        return true;
2015
-      }
2016
-
2017
-      if (speed === 0) {
2018
-        swiper.setTransition(0);
2019
-        swiper.setTranslate(newTranslate);
2020
-        if (runCallbacks) {
2021
-          swiper.emit('beforeTransitionStart', speed, internal);
2022
-          swiper.emit('transitionEnd');
2023
-        }
2024
-      } else {
2025
-        swiper.setTransition(speed);
2026
-        swiper.setTranslate(newTranslate);
2027
-        if (runCallbacks) {
2028
-          swiper.emit('beforeTransitionStart', speed, internal);
2029
-          swiper.emit('transitionStart');
2030
-        }
2031
-        if (!swiper.animating) {
2032
-          swiper.animating = true;
2033
-          if (!swiper.onTranslateToWrapperTransitionEnd) {
2034
-            swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
2035
-              if (!swiper || swiper.destroyed) { return; }
2036
-              if (e.target !== this) { return; }
2037
-              swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2038
-              swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2039
-              swiper.onTranslateToWrapperTransitionEnd = null;
2040
-              delete swiper.onTranslateToWrapperTransitionEnd;
2041
-              if (runCallbacks) {
2042
-                swiper.emit('transitionEnd');
2043
-              }
2044
-            };
2045
-          }
2046
-          swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2047
-          swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2048
-        }
2049
-      }
2050
-
2051
-      return true;
2052
-    }
2053
-
2054
-    var translate = {
2055
-      getTranslate: getTranslate,
2056
-      setTranslate: setTranslate,
2057
-      minTranslate: minTranslate,
2058
-      maxTranslate: maxTranslate,
2059
-      translateTo: translateTo,
2060
-    };
2061
-
2062
-    function setTransition (duration, byController) {
2063
-      var swiper = this;
2064
-
2065
-      if (!swiper.params.cssMode) {
2066
-        swiper.$wrapperEl.transition(duration);
2067
-      }
2068
-
2069
-      swiper.emit('setTransition', duration, byController);
2070
-    }
2071
-
2072
-    function transitionStart (runCallbacks, direction) {
2073
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2074
-
2075
-      var swiper = this;
2076
-      var activeIndex = swiper.activeIndex;
2077
-      var params = swiper.params;
2078
-      var previousIndex = swiper.previousIndex;
2079
-      if (params.cssMode) { return; }
2080
-      if (params.autoHeight) {
2081
-        swiper.updateAutoHeight();
2082
-      }
2083
-
2084
-      var dir = direction;
2085
-      if (!dir) {
2086
-        if (activeIndex > previousIndex) { dir = 'next'; }
2087
-        else if (activeIndex < previousIndex) { dir = 'prev'; }
2088
-        else { dir = 'reset'; }
2089
-      }
2090
-
2091
-      swiper.emit('transitionStart');
2092
-
2093
-      if (runCallbacks && activeIndex !== previousIndex) {
2094
-        if (dir === 'reset') {
2095
-          swiper.emit('slideResetTransitionStart');
2096
-          return;
2097
-        }
2098
-        swiper.emit('slideChangeTransitionStart');
2099
-        if (dir === 'next') {
2100
-          swiper.emit('slideNextTransitionStart');
2101
-        } else {
2102
-          swiper.emit('slidePrevTransitionStart');
2103
-        }
2104
-      }
2105
-    }
2106
-
2107
-    function transitionEnd$1 (runCallbacks, direction) {
2108
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2109
-
2110
-      var swiper = this;
2111
-      var activeIndex = swiper.activeIndex;
2112
-      var previousIndex = swiper.previousIndex;
2113
-      var params = swiper.params;
2114
-      swiper.animating = false;
2115
-      if (params.cssMode) { return; }
2116
-      swiper.setTransition(0);
2117
-
2118
-      var dir = direction;
2119
-      if (!dir) {
2120
-        if (activeIndex > previousIndex) { dir = 'next'; }
2121
-        else if (activeIndex < previousIndex) { dir = 'prev'; }
2122
-        else { dir = 'reset'; }
2123
-      }
2124
-
2125
-      swiper.emit('transitionEnd');
2126
-
2127
-      if (runCallbacks && activeIndex !== previousIndex) {
2128
-        if (dir === 'reset') {
2129
-          swiper.emit('slideResetTransitionEnd');
2130
-          return;
2131
-        }
2132
-        swiper.emit('slideChangeTransitionEnd');
2133
-        if (dir === 'next') {
2134
-          swiper.emit('slideNextTransitionEnd');
2135
-        } else {
2136
-          swiper.emit('slidePrevTransitionEnd');
2137
-        }
2138
-      }
2139
-    }
2140
-
2141
-    var transition$1 = {
2142
-      setTransition: setTransition,
2143
-      transitionStart: transitionStart,
2144
-      transitionEnd: transitionEnd$1,
2145
-    };
2146
-
2147
-    function slideTo (index, speed, runCallbacks, internal) {
2148
-      var obj;
2149
-
2150
-      if ( index === void 0 ) index = 0;
2151
-      if ( speed === void 0 ) speed = this.params.speed;
2152
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2153
-      var swiper = this;
2154
-      var slideIndex = index;
2155
-      if (slideIndex < 0) { slideIndex = 0; }
2156
-
2157
-      var params = swiper.params;
2158
-      var snapGrid = swiper.snapGrid;
2159
-      var slidesGrid = swiper.slidesGrid;
2160
-      var previousIndex = swiper.previousIndex;
2161
-      var activeIndex = swiper.activeIndex;
2162
-      var rtl = swiper.rtlTranslate;
2163
-      var wrapperEl = swiper.wrapperEl;
2164
-      if (swiper.animating && params.preventInteractionOnTransition) {
2165
-        return false;
2166
-      }
2167
-
2168
-      var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2169
-      var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2170
-      if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
2171
-
2172
-      if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2173
-        swiper.emit('beforeSlideChangeStart');
2174
-      }
2175
-
2176
-      var translate = -snapGrid[snapIndex];
2177
-
2178
-      // Update progress
2179
-      swiper.updateProgress(translate);
2180
-
2181
-      // Normalize slideIndex
2182
-      if (params.normalizeSlideIndex) {
2183
-        for (var i = 0; i < slidesGrid.length; i += 1) {
2184
-          if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2185
-            slideIndex = i;
2186
-          }
2187
-        }
2188
-      }
2189
-      // Directions locks
2190
-      if (swiper.initialized && slideIndex !== activeIndex) {
2191
-        if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2192
-          return false;
2193
-        }
2194
-        if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2195
-          if ((activeIndex || 0) !== slideIndex) { return false; }
2196
-        }
2197
-      }
2198
-
2199
-      var direction;
2200
-      if (slideIndex > activeIndex) { direction = 'next'; }
2201
-      else if (slideIndex < activeIndex) { direction = 'prev'; }
2202
-      else { direction = 'reset'; }
2203
-
2204
-
2205
-      // Update Index
2206
-      if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
2207
-        swiper.updateActiveIndex(slideIndex);
2208
-        // Update Height
2209
-        if (params.autoHeight) {
2210
-          swiper.updateAutoHeight();
2211
-        }
2212
-        swiper.updateSlidesClasses();
2213
-        if (params.effect !== 'slide') {
2214
-          swiper.setTranslate(translate);
2215
-        }
2216
-        if (direction !== 'reset') {
2217
-          swiper.transitionStart(runCallbacks, direction);
2218
-          swiper.transitionEnd(runCallbacks, direction);
2219
-        }
2220
-        return false;
2221
-      }
2222
-      if (params.cssMode) {
2223
-        var isH = swiper.isHorizontal();
2224
-        var t = -translate;
2225
-        if (rtl) {
2226
-          t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2227
-        }
2228
-        if (speed === 0) {
2229
-          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2230
-        } else {
2231
-          // eslint-disable-next-line
2232
-          if (wrapperEl.scrollTo) {
2233
-            wrapperEl.scrollTo(( obj = {}, obj[isH ? 'left' : 'top'] = t, obj.behavior = 'smooth', obj ));
2234
-          } else {
2235
-            wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2236
-          }
2237
-        }
2238
-        return true;
2239
-      }
2240
-
2241
-      if (speed === 0) {
2242
-        swiper.setTransition(0);
2243
-        swiper.setTranslate(translate);
2244
-        swiper.updateActiveIndex(slideIndex);
2245
-        swiper.updateSlidesClasses();
2246
-        swiper.emit('beforeTransitionStart', speed, internal);
2247
-        swiper.transitionStart(runCallbacks, direction);
2248
-        swiper.transitionEnd(runCallbacks, direction);
2249
-      } else {
2250
-        swiper.setTransition(speed);
2251
-        swiper.setTranslate(translate);
2252
-        swiper.updateActiveIndex(slideIndex);
2253
-        swiper.updateSlidesClasses();
2254
-        swiper.emit('beforeTransitionStart', speed, internal);
2255
-        swiper.transitionStart(runCallbacks, direction);
2256
-        if (!swiper.animating) {
2257
-          swiper.animating = true;
2258
-          if (!swiper.onSlideToWrapperTransitionEnd) {
2259
-            swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2260
-              if (!swiper || swiper.destroyed) { return; }
2261
-              if (e.target !== this) { return; }
2262
-              swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2263
-              swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2264
-              swiper.onSlideToWrapperTransitionEnd = null;
2265
-              delete swiper.onSlideToWrapperTransitionEnd;
2266
-              swiper.transitionEnd(runCallbacks, direction);
2267
-            };
2268
-          }
2269
-          swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2270
-          swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2271
-        }
2272
-      }
2273
-
2274
-      return true;
2275
-    }
2276
-
2277
-    function slideToLoop (index, speed, runCallbacks, internal) {
2278
-      if ( index === void 0 ) index = 0;
2279
-      if ( speed === void 0 ) speed = this.params.speed;
2280
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2281
-
2282
-      var swiper = this;
2283
-      var newIndex = index;
2284
-      if (swiper.params.loop) {
2285
-        newIndex += swiper.loopedSlides;
2286
-      }
2287
-
2288
-      return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2289
-    }
2290
-
2291
-    /* eslint no-unused-vars: "off" */
2292
-    function slideNext (speed, runCallbacks, internal) {
2293
-      if ( speed === void 0 ) speed = this.params.speed;
2294
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2295
-
2296
-      var swiper = this;
2297
-      var params = swiper.params;
2298
-      var animating = swiper.animating;
2299
-      var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2300
-      if (params.loop) {
2301
-        if (animating) { return false; }
2302
-        swiper.loopFix();
2303
-        // eslint-disable-next-line
2304
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2305
-      }
2306
-      return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2307
-    }
2308
-
2309
-    /* eslint no-unused-vars: "off" */
2310
-    function slidePrev (speed, runCallbacks, internal) {
2311
-      if ( speed === void 0 ) speed = this.params.speed;
2312
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2313
-
2314
-      var swiper = this;
2315
-      var params = swiper.params;
2316
-      var animating = swiper.animating;
2317
-      var snapGrid = swiper.snapGrid;
2318
-      var slidesGrid = swiper.slidesGrid;
2319
-      var rtlTranslate = swiper.rtlTranslate;
2320
-
2321
-      if (params.loop) {
2322
-        if (animating) { return false; }
2323
-        swiper.loopFix();
2324
-        // eslint-disable-next-line
2325
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2326
-      }
2327
-      var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2328
-      function normalize(val) {
2329
-        if (val < 0) { return -Math.floor(Math.abs(val)); }
2330
-        return Math.floor(val);
2331
-      }
2332
-      var normalizedTranslate = normalize(translate);
2333
-      var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });
2334
-      var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });
2335
-
2336
-      var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2337
-      var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2338
-      if (typeof prevSnap === 'undefined' && params.cssMode) {
2339
-        snapGrid.forEach(function (snap) {
2340
-          if (!prevSnap && normalizedTranslate >= snap) { prevSnap = snap; }
2341
-        });
2342
-      }
2343
-      var prevIndex;
2344
-      if (typeof prevSnap !== 'undefined') {
2345
-        prevIndex = slidesGrid.indexOf(prevSnap);
2346
-        if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }
2347
-      }
2348
-      return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2349
-    }
2350
-
2351
-    /* eslint no-unused-vars: "off" */
2352
-    function slideReset (speed, runCallbacks, internal) {
2353
-      if ( speed === void 0 ) speed = this.params.speed;
2354
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2355
-
2356
-      var swiper = this;
2357
-      return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2358
-    }
2359
-
2360
-    /* eslint no-unused-vars: "off" */
2361
-    function slideToClosest (speed, runCallbacks, internal, threshold) {
2362
-      if ( speed === void 0 ) speed = this.params.speed;
2363
-      if ( runCallbacks === void 0 ) runCallbacks = true;
2364
-      if ( threshold === void 0 ) threshold = 0.5;
2365
-
2366
-      var swiper = this;
2367
-      var index = swiper.activeIndex;
2368
-      var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
2369
-      var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
2370
-
2371
-      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2372
-
2373
-      if (translate >= swiper.snapGrid[snapIndex]) {
2374
-        // The current translate is on or after the current snap index, so the choice
2375
-        // is between the current index and the one after it.
2376
-        var currentSnap = swiper.snapGrid[snapIndex];
2377
-        var nextSnap = swiper.snapGrid[snapIndex + 1];
2378
-        if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
2379
-          index += swiper.params.slidesPerGroup;
2380
-        }
2381
-      } else {
2382
-        // The current translate is before the current snap index, so the choice
2383
-        // is between the current index and the one before it.
2384
-        var prevSnap = swiper.snapGrid[snapIndex - 1];
2385
-        var currentSnap$1 = swiper.snapGrid[snapIndex];
2386
-        if ((translate - prevSnap) <= (currentSnap$1 - prevSnap) * threshold) {
2387
-          index -= swiper.params.slidesPerGroup;
2388
-        }
2389
-      }
2390
-      index = Math.max(index, 0);
2391
-      index = Math.min(index, swiper.slidesGrid.length - 1);
2392
-
2393
-      return swiper.slideTo(index, speed, runCallbacks, internal);
2394
-    }
2395
-
2396
-    function slideToClickedSlide () {
2397
-      var swiper = this;
2398
-      var params = swiper.params;
2399
-      var $wrapperEl = swiper.$wrapperEl;
2400
-
2401
-      var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2402
-      var slideToIndex = swiper.clickedIndex;
2403
-      var realIndex;
2404
-      if (params.loop) {
2405
-        if (swiper.animating) { return; }
2406
-        realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
2407
-        if (params.centeredSlides) {
2408
-          if (
2409
-            (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
2410
-            || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
2411
-          ) {
2412
-            swiper.loopFix();
2413
-            slideToIndex = $wrapperEl
2414
-              .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
2415
-              .eq(0)
2416
-              .index();
2417
-
2418
-            Utils.nextTick(function () {
2419
-              swiper.slideTo(slideToIndex);
2420
-            });
2421
-          } else {
2422
-            swiper.slideTo(slideToIndex);
2423
-          }
2424
-        } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2425
-          swiper.loopFix();
2426
-          slideToIndex = $wrapperEl
2427
-            .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
2428
-            .eq(0)
2429
-            .index();
2430
-
2431
-          Utils.nextTick(function () {
2432
-            swiper.slideTo(slideToIndex);
2433
-          });
2434
-        } else {
2435
-          swiper.slideTo(slideToIndex);
2436
-        }
2437
-      } else {
2438
-        swiper.slideTo(slideToIndex);
2439
-      }
2440
-    }
2441
-
2442
-    var slide = {
2443
-      slideTo: slideTo,
2444
-      slideToLoop: slideToLoop,
2445
-      slideNext: slideNext,
2446
-      slidePrev: slidePrev,
2447
-      slideReset: slideReset,
2448
-      slideToClosest: slideToClosest,
2449
-      slideToClickedSlide: slideToClickedSlide,
2450
-    };
2451
-
2452
-    function loopCreate () {
2453
-      var swiper = this;
2454
-      var params = swiper.params;
2455
-      var $wrapperEl = swiper.$wrapperEl;
2456
-      // Remove duplicated slides
2457
-      $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
2458
-
2459
-      var slides = $wrapperEl.children(("." + (params.slideClass)));
2460
-
2461
-      if (params.loopFillGroupWithBlank) {
2462
-        var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
2463
-        if (blankSlidesNum !== params.slidesPerGroup) {
2464
-          for (var i = 0; i < blankSlidesNum; i += 1) {
2465
-            var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass)));
2466
-            $wrapperEl.append(blankNode);
2467
-          }
2468
-          slides = $wrapperEl.children(("." + (params.slideClass)));
2469
-        }
2470
-      }
2471
-
2472
-      if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }
2473
-
2474
-      swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
2475
-      swiper.loopedSlides += params.loopAdditionalSlides;
2476
-      if (swiper.loopedSlides > slides.length) {
2477
-        swiper.loopedSlides = slides.length;
2478
-      }
2479
-
2480
-      var prependSlides = [];
2481
-      var appendSlides = [];
2482
-      slides.each(function (index, el) {
2483
-        var slide = $(el);
2484
-        if (index < swiper.loopedSlides) { appendSlides.push(el); }
2485
-        if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }
2486
-        slide.attr('data-swiper-slide-index', index);
2487
-      });
2488
-      for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
2489
-        $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
2490
-      }
2491
-      for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
2492
-        $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
2493
-      }
2494
-    }
2495
-
2496
-    function loopFix () {
2497
-      var swiper = this;
2498
-
2499
-      swiper.emit('beforeLoopFix');
2500
-
2501
-      var activeIndex = swiper.activeIndex;
2502
-      var slides = swiper.slides;
2503
-      var loopedSlides = swiper.loopedSlides;
2504
-      var allowSlidePrev = swiper.allowSlidePrev;
2505
-      var allowSlideNext = swiper.allowSlideNext;
2506
-      var snapGrid = swiper.snapGrid;
2507
-      var rtl = swiper.rtlTranslate;
2508
-      var newIndex;
2509
-      swiper.allowSlidePrev = true;
2510
-      swiper.allowSlideNext = true;
2511
-
2512
-      var snapTranslate = -snapGrid[activeIndex];
2513
-      var diff = snapTranslate - swiper.getTranslate();
2514
-
2515
-      // Fix For Negative Oversliding
2516
-      if (activeIndex < loopedSlides) {
2517
-        newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
2518
-        newIndex += loopedSlides;
2519
-        var slideChanged = swiper.slideTo(newIndex, 0, false, true);
2520
-        if (slideChanged && diff !== 0) {
2521
-          swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2522
-        }
2523
-      } else if (activeIndex >= slides.length - loopedSlides) {
2524
-        // Fix For Positive Oversliding
2525
-        newIndex = -slides.length + activeIndex + loopedSlides;
2526
-        newIndex += loopedSlides;
2527
-        var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
2528
-        if (slideChanged$1 && diff !== 0) {
2529
-          swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2530
-        }
2531
-      }
2532
-      swiper.allowSlidePrev = allowSlidePrev;
2533
-      swiper.allowSlideNext = allowSlideNext;
2534
-
2535
-      swiper.emit('loopFix');
2536
-    }
2537
-
2538
-    function loopDestroy () {
2539
-      var swiper = this;
2540
-      var $wrapperEl = swiper.$wrapperEl;
2541
-      var params = swiper.params;
2542
-      var slides = swiper.slides;
2543
-      $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove();
2544
-      slides.removeAttr('data-swiper-slide-index');
2545
-    }
2546
-
2547
-    var loop = {
2548
-      loopCreate: loopCreate,
2549
-      loopFix: loopFix,
2550
-      loopDestroy: loopDestroy,
2551
-    };
2552
-
2553
-    function setGrabCursor (moving) {
2554
-      var swiper = this;
2555
-      if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }
2556
-      var el = swiper.el;
2557
-      el.style.cursor = 'move';
2558
-      el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
2559
-      el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
2560
-      el.style.cursor = moving ? 'grabbing' : 'grab';
2561
-    }
2562
-
2563
-    function unsetGrabCursor () {
2564
-      var swiper = this;
2565
-      if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }
2566
-      swiper.el.style.cursor = '';
2567
-    }
2568
-
2569
-    var grabCursor = {
2570
-      setGrabCursor: setGrabCursor,
2571
-      unsetGrabCursor: unsetGrabCursor,
2572
-    };
2573
-
2574
-    function appendSlide (slides) {
2575
-      var swiper = this;
2576
-      var $wrapperEl = swiper.$wrapperEl;
2577
-      var params = swiper.params;
2578
-      if (params.loop) {
2579
-        swiper.loopDestroy();
2580
-      }
2581
-      if (typeof slides === 'object' && 'length' in slides) {
2582
-        for (var i = 0; i < slides.length; i += 1) {
2583
-          if (slides[i]) { $wrapperEl.append(slides[i]); }
2584
-        }
2585
-      } else {
2586
-        $wrapperEl.append(slides);
2587
-      }
2588
-      if (params.loop) {
2589
-        swiper.loopCreate();
2590
-      }
2591
-      if (!(params.observer && Support.observer)) {
2592
-        swiper.update();
2593
-      }
2594
-    }
2595
-
2596
-    function prependSlide (slides) {
2597
-      var swiper = this;
2598
-      var params = swiper.params;
2599
-      var $wrapperEl = swiper.$wrapperEl;
2600
-      var activeIndex = swiper.activeIndex;
2601
-
2602
-      if (params.loop) {
2603
-        swiper.loopDestroy();
2604
-      }
2605
-      var newActiveIndex = activeIndex + 1;
2606
-      if (typeof slides === 'object' && 'length' in slides) {
2607
-        for (var i = 0; i < slides.length; i += 1) {
2608
-          if (slides[i]) { $wrapperEl.prepend(slides[i]); }
2609
-        }
2610
-        newActiveIndex = activeIndex + slides.length;
2611
-      } else {
2612
-        $wrapperEl.prepend(slides);
2613
-      }
2614
-      if (params.loop) {
2615
-        swiper.loopCreate();
2616
-      }
2617
-      if (!(params.observer && Support.observer)) {
2618
-        swiper.update();
2619
-      }
2620
-      swiper.slideTo(newActiveIndex, 0, false);
2621
-    }
2622
-
2623
-    function addSlide (index, slides) {
2624
-      var swiper = this;
2625
-      var $wrapperEl = swiper.$wrapperEl;
2626
-      var params = swiper.params;
2627
-      var activeIndex = swiper.activeIndex;
2628
-      var activeIndexBuffer = activeIndex;
2629
-      if (params.loop) {
2630
-        activeIndexBuffer -= swiper.loopedSlides;
2631
-        swiper.loopDestroy();
2632
-        swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
2633
-      }
2634
-      var baseLength = swiper.slides.length;
2635
-      if (index <= 0) {
2636
-        swiper.prependSlide(slides);
2637
-        return;
2638
-      }
2639
-      if (index >= baseLength) {
2640
-        swiper.appendSlide(slides);
2641
-        return;
2642
-      }
2643
-      var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
2644
-
2645
-      var slidesBuffer = [];
2646
-      for (var i = baseLength - 1; i >= index; i -= 1) {
2647
-        var currentSlide = swiper.slides.eq(i);
2648
-        currentSlide.remove();
2649
-        slidesBuffer.unshift(currentSlide);
2650
-      }
2651
-
2652
-      if (typeof slides === 'object' && 'length' in slides) {
2653
-        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
2654
-          if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }
2655
-        }
2656
-        newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
2657
-      } else {
2658
-        $wrapperEl.append(slides);
2659
-      }
2660
-
2661
-      for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
2662
-        $wrapperEl.append(slidesBuffer[i$2]);
2663
-      }
2664
-
2665
-      if (params.loop) {
2666
-        swiper.loopCreate();
2667
-      }
2668
-      if (!(params.observer && Support.observer)) {
2669
-        swiper.update();
2670
-      }
2671
-      if (params.loop) {
2672
-        swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2673
-      } else {
2674
-        swiper.slideTo(newActiveIndex, 0, false);
2675
-      }
2676
-    }
2677
-
2678
-    function removeSlide (slidesIndexes) {
2679
-      var swiper = this;
2680
-      var params = swiper.params;
2681
-      var $wrapperEl = swiper.$wrapperEl;
2682
-      var activeIndex = swiper.activeIndex;
2683
-
2684
-      var activeIndexBuffer = activeIndex;
2685
-      if (params.loop) {
2686
-        activeIndexBuffer -= swiper.loopedSlides;
2687
-        swiper.loopDestroy();
2688
-        swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
2689
-      }
2690
-      var newActiveIndex = activeIndexBuffer;
2691
-      var indexToRemove;
2692
-
2693
-      if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
2694
-        for (var i = 0; i < slidesIndexes.length; i += 1) {
2695
-          indexToRemove = slidesIndexes[i];
2696
-          if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
2697
-          if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
2698
-        }
2699
-        newActiveIndex = Math.max(newActiveIndex, 0);
2700
-      } else {
2701
-        indexToRemove = slidesIndexes;
2702
-        if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
2703
-        if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
2704
-        newActiveIndex = Math.max(newActiveIndex, 0);
2705
-      }
2706
-
2707
-      if (params.loop) {
2708
-        swiper.loopCreate();
2709
-      }
2710
-
2711
-      if (!(params.observer && Support.observer)) {
2712
-        swiper.update();
2713
-      }
2714
-      if (params.loop) {
2715
-        swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2716
-      } else {
2717
-        swiper.slideTo(newActiveIndex, 0, false);
2718
-      }
2719
-    }
2720
-
2721
-    function removeAllSlides () {
2722
-      var swiper = this;
2723
-
2724
-      var slidesIndexes = [];
2725
-      for (var i = 0; i < swiper.slides.length; i += 1) {
2726
-        slidesIndexes.push(i);
2727
-      }
2728
-      swiper.removeSlide(slidesIndexes);
2729
-    }
2730
-
2731
-    var manipulation = {
2732
-      appendSlide: appendSlide,
2733
-      prependSlide: prependSlide,
2734
-      addSlide: addSlide,
2735
-      removeSlide: removeSlide,
2736
-      removeAllSlides: removeAllSlides,
2737
-    };
2738
-
2739
-    var Device = (function Device() {
2740
-      var platform = win.navigator.platform;
2741
-      var ua = win.navigator.userAgent;
2742
-
2743
-      var device = {
2744
-        ios: false,
2745
-        android: false,
2746
-        androidChrome: false,
2747
-        desktop: false,
2748
-        iphone: false,
2749
-        ipod: false,
2750
-        ipad: false,
2751
-        edge: false,
2752
-        ie: false,
2753
-        firefox: false,
2754
-        macos: false,
2755
-        windows: false,
2756
-        cordova: !!(win.cordova || win.phonegap),
2757
-        phonegap: !!(win.cordova || win.phonegap),
2758
-        electron: false,
2759
-      };
2760
-
2761
-      var screenWidth = win.screen.width;
2762
-      var screenHeight = win.screen.height;
2763
-
2764
-      var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
2765
-      var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
2766
-      var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
2767
-      var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
2768
-      var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
2769
-      var edge = ua.indexOf('Edge/') >= 0;
2770
-      var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
2771
-      var windows = platform === 'Win32';
2772
-      var electron = ua.toLowerCase().indexOf('electron') >= 0;
2773
-      var macos = platform === 'MacIntel';
2774
-
2775
-      // iPadOs 13 fix
2776
-      if (!ipad
2777
-        && macos
2778
-        && Support.touch
2779
-        && (
2780
-          (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
2781
-          || (screenWidth === 834 && screenHeight === 1194) // Pro 11
2782
-          || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
2783
-          || (screenWidth === 768 && screenHeight === 1024) // other
2784
-        )
2785
-      ) {
2786
-        ipad = ua.match(/(Version)\/([\d.]+)/);
2787
-        macos = false;
2788
-      }
2789
-
2790
-      device.ie = ie;
2791
-      device.edge = edge;
2792
-      device.firefox = firefox;
2793
-
2794
-      // Android
2795
-      if (android && !windows) {
2796
-        device.os = 'android';
2797
-        device.osVersion = android[2];
2798
-        device.android = true;
2799
-        device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
2800
-      }
2801
-      if (ipad || iphone || ipod) {
2802
-        device.os = 'ios';
2803
-        device.ios = true;
2804
-      }
2805
-      // iOS
2806
-      if (iphone && !ipod) {
2807
-        device.osVersion = iphone[2].replace(/_/g, '.');
2808
-        device.iphone = true;
2809
-      }
2810
-      if (ipad) {
2811
-        device.osVersion = ipad[2].replace(/_/g, '.');
2812
-        device.ipad = true;
2813
-      }
2814
-      if (ipod) {
2815
-        device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
2816
-        device.ipod = true;
2817
-      }
2818
-      // iOS 8+ changed UA
2819
-      if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
2820
-        if (device.osVersion.split('.')[0] === '10') {
2821
-          device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
2822
-        }
2823
-      }
2824
-
2825
-      // Webview
2826
-      device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))
2827
-        || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);
2828
-      device.webview = device.webView;
2829
-      device.standalone = device.webView;
2830
-
2831
-      // Desktop
2832
-      device.desktop = !(device.ios || device.android) || electron;
2833
-      if (device.desktop) {
2834
-        device.electron = electron;
2835
-        device.macos = macos;
2836
-        device.windows = windows;
2837
-        if (device.macos) {
2838
-          device.os = 'macos';
2839
-        }
2840
-        if (device.windows) {
2841
-          device.os = 'windows';
2842
-        }
2843
-      }
2844
-
2845
-      // Pixel Ratio
2846
-      device.pixelRatio = win.devicePixelRatio || 1;
2847
-
2848
-      // Export object
2849
-      return device;
2850
-    }());
2851
-
2852
-    function onTouchStart (event) {
2853
-      var swiper = this;
2854
-      var data = swiper.touchEventsData;
2855
-      var params = swiper.params;
2856
-      var touches = swiper.touches;
2857
-
2858
-      if (swiper.animating && params.preventInteractionOnTransition) {
2859
-        return;
2860
-      }
2861
-      var e = event;
2862
-      if (e.originalEvent) { e = e.originalEvent; }
2863
-      var $targetEl = $(e.target);
2864
-
2865
-      if (params.touchEventsTarget === 'wrapper') {
2866
-        if (!$targetEl.closest(swiper.wrapperEl).length) { return; }
2867
-      }
2868
-      data.isTouchEvent = e.type === 'touchstart';
2869
-      if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }
2870
-      if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }
2871
-      if (data.isTouched && data.isMoved) { return; }
2872
-      if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) {
2873
-        swiper.allowClick = true;
2874
-        return;
2875
-      }
2876
-      if (params.swipeHandler) {
2877
-        if (!$targetEl.closest(params.swipeHandler)[0]) { return; }
2878
-      }
2879
-
2880
-      touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
2881
-      touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
2882
-      var startX = touches.currentX;
2883
-      var startY = touches.currentY;
2884
-
2885
-      // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
2886
-
2887
-      var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
2888
-      var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
2889
-      if (
2890
-        edgeSwipeDetection
2891
-        && ((startX <= edgeSwipeThreshold)
2892
-        || (startX >= win.screen.width - edgeSwipeThreshold))
2893
-      ) {
2894
-        return;
2895
-      }
2896
-
2897
-      Utils.extend(data, {
2898
-        isTouched: true,
2899
-        isMoved: false,
2900
-        allowTouchCallbacks: true,
2901
-        isScrolling: undefined,
2902
-        startMoving: undefined,
2903
-      });
2904
-
2905
-      touches.startX = startX;
2906
-      touches.startY = startY;
2907
-      data.touchStartTime = Utils.now();
2908
-      swiper.allowClick = true;
2909
-      swiper.updateSize();
2910
-      swiper.swipeDirection = undefined;
2911
-      if (params.threshold > 0) { data.allowThresholdMove = false; }
2912
-      if (e.type !== 'touchstart') {
2913
-        var preventDefault = true;
2914
-        if ($targetEl.is(data.formElements)) { preventDefault = false; }
2915
-        if (
2916
-          doc.activeElement
2917
-          && $(doc.activeElement).is(data.formElements)
2918
-          && doc.activeElement !== $targetEl[0]
2919
-        ) {
2920
-          doc.activeElement.blur();
2921
-        }
2922
-
2923
-        var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
2924
-        if (params.touchStartForcePreventDefault || shouldPreventDefault) {
2925
-          e.preventDefault();
2926
-        }
2927
-      }
2928
-      swiper.emit('touchStart', e);
2929
-    }
2930
-
2931
-    function onTouchMove (event) {
2932
-      var swiper = this;
2933
-      var data = swiper.touchEventsData;
2934
-      var params = swiper.params;
2935
-      var touches = swiper.touches;
2936
-      var rtl = swiper.rtlTranslate;
2937
-      var e = event;
2938
-      if (e.originalEvent) { e = e.originalEvent; }
2939
-      if (!data.isTouched) {
2940
-        if (data.startMoving && data.isScrolling) {
2941
-          swiper.emit('touchMoveOpposite', e);
2942
-        }
2943
-        return;
2944
-      }
2945
-      if (data.isTouchEvent && e.type !== 'touchmove') { return; }
2946
-      var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
2947
-      var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
2948
-      var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
2949
-      if (e.preventedByNestedSwiper) {
2950
-        touches.startX = pageX;
2951
-        touches.startY = pageY;
2952
-        return;
2953
-      }
2954
-      if (!swiper.allowTouchMove) {
2955
-        // isMoved = true;
2956
-        swiper.allowClick = false;
2957
-        if (data.isTouched) {
2958
-          Utils.extend(touches, {
2959
-            startX: pageX,
2960
-            startY: pageY,
2961
-            currentX: pageX,
2962
-            currentY: pageY,
2963
-          });
2964
-          data.touchStartTime = Utils.now();
2965
-        }
2966
-        return;
2967
-      }
2968
-      if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2969
-        if (swiper.isVertical()) {
2970
-          // Vertical
2971
-          if (
2972
-            (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
2973
-            || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
2974
-          ) {
2975
-            data.isTouched = false;
2976
-            data.isMoved = false;
2977
-            return;
2978
-          }
2979
-        } else if (
2980
-          (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
2981
-          || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
2982
-        ) {
2983
-          return;
2984
-        }
2985
-      }
2986
-      if (data.isTouchEvent && doc.activeElement) {
2987
-        if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
2988
-          data.isMoved = true;
2989
-          swiper.allowClick = false;
2990
-          return;
2991
-        }
2992
-      }
2993
-      if (data.allowTouchCallbacks) {
2994
-        swiper.emit('touchMove', e);
2995
-      }
2996
-      if (e.targetTouches && e.targetTouches.length > 1) { return; }
2997
-
2998
-      touches.currentX = pageX;
2999
-      touches.currentY = pageY;
3000
-
3001
-      var diffX = touches.currentX - touches.startX;
3002
-      var diffY = touches.currentY - touches.startY;
3003
-      if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }
3004
-
3005
-      if (typeof data.isScrolling === 'undefined') {
3006
-        var touchAngle;
3007
-        if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
3008
-          data.isScrolling = false;
3009
-        } else {
3010
-          // eslint-disable-next-line
3011
-          if ((diffX * diffX) + (diffY * diffY) >= 25) {
3012
-            touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
3013
-            data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
3014
-          }
3015
-        }
3016
-      }
3017
-      if (data.isScrolling) {
3018
-        swiper.emit('touchMoveOpposite', e);
3019
-      }
3020
-      if (typeof data.startMoving === 'undefined') {
3021
-        if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3022
-          data.startMoving = true;
3023
-        }
3024
-      }
3025
-      if (data.isScrolling) {
3026
-        data.isTouched = false;
3027
-        return;
3028
-      }
3029
-      if (!data.startMoving) {
3030
-        return;
3031
-      }
3032
-      swiper.allowClick = false;
3033
-      if (!params.cssMode && e.cancelable) {
3034
-        e.preventDefault();
3035
-      }
3036
-      if (params.touchMoveStopPropagation && !params.nested) {
3037
-        e.stopPropagation();
3038
-      }
3039
-
3040
-      if (!data.isMoved) {
3041
-        if (params.loop) {
3042
-          swiper.loopFix();
3043
-        }
3044
-        data.startTranslate = swiper.getTranslate();
3045
-        swiper.setTransition(0);
3046
-        if (swiper.animating) {
3047
-          swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
3048
-        }
3049
-        data.allowMomentumBounce = false;
3050
-        // Grab Cursor
3051
-        if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3052
-          swiper.setGrabCursor(true);
3053
-        }
3054
-        swiper.emit('sliderFirstMove', e);
3055
-      }
3056
-      swiper.emit('sliderMove', e);
3057
-      data.isMoved = true;
3058
-
3059
-      var diff = swiper.isHorizontal() ? diffX : diffY;
3060
-      touches.diff = diff;
3061
-
3062
-      diff *= params.touchRatio;
3063
-      if (rtl) { diff = -diff; }
3064
-
3065
-      swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3066
-      data.currentTranslate = diff + data.startTranslate;
3067
-
3068
-      var disableParentSwiper = true;
3069
-      var resistanceRatio = params.resistanceRatio;
3070
-      if (params.touchReleaseOnEdges) {
3071
-        resistanceRatio = 0;
3072
-      }
3073
-      if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
3074
-        disableParentSwiper = false;
3075
-        if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }
3076
-      } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
3077
-        disableParentSwiper = false;
3078
-        if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }
3079
-      }
3080
-
3081
-      if (disableParentSwiper) {
3082
-        e.preventedByNestedSwiper = true;
3083
-      }
3084
-
3085
-      // Directions locks
3086
-      if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3087
-        data.currentTranslate = data.startTranslate;
3088
-      }
3089
-      if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3090
-        data.currentTranslate = data.startTranslate;
3091
-      }
3092
-
3093
-
3094
-      // Threshold
3095
-      if (params.threshold > 0) {
3096
-        if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3097
-          if (!data.allowThresholdMove) {
3098
-            data.allowThresholdMove = true;
3099
-            touches.startX = touches.currentX;
3100
-            touches.startY = touches.currentY;
3101
-            data.currentTranslate = data.startTranslate;
3102
-            touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3103
-            return;
3104
-          }
3105
-        } else {
3106
-          data.currentTranslate = data.startTranslate;
3107
-          return;
3108
-        }
3109
-      }
3110
-
3111
-      if (!params.followFinger || params.cssMode) { return; }
3112
-
3113
-      // Update active index in free mode
3114
-      if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
3115
-        swiper.updateActiveIndex();
3116
-        swiper.updateSlidesClasses();
3117
-      }
3118
-      if (params.freeMode) {
3119
-        // Velocity
3120
-        if (data.velocities.length === 0) {
3121
-          data.velocities.push({
3122
-            position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3123
-            time: data.touchStartTime,
3124
-          });
3125
-        }
3126
-        data.velocities.push({
3127
-          position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3128
-          time: Utils.now(),
3129
-        });
3130
-      }
3131
-      // Update progress
3132
-      swiper.updateProgress(data.currentTranslate);
3133
-      // Update translate
3134
-      swiper.setTranslate(data.currentTranslate);
3135
-    }
3136
-
3137
-    function onTouchEnd (event) {
3138
-      var swiper = this;
3139
-      var data = swiper.touchEventsData;
3140
-
3141
-      var params = swiper.params;
3142
-      var touches = swiper.touches;
3143
-      var rtl = swiper.rtlTranslate;
3144
-      var $wrapperEl = swiper.$wrapperEl;
3145
-      var slidesGrid = swiper.slidesGrid;
3146
-      var snapGrid = swiper.snapGrid;
3147
-      var e = event;
3148
-      if (e.originalEvent) { e = e.originalEvent; }
3149
-      if (data.allowTouchCallbacks) {
3150
-        swiper.emit('touchEnd', e);
3151
-      }
3152
-      data.allowTouchCallbacks = false;
3153
-      if (!data.isTouched) {
3154
-        if (data.isMoved && params.grabCursor) {
3155
-          swiper.setGrabCursor(false);
3156
-        }
3157
-        data.isMoved = false;
3158
-        data.startMoving = false;
3159
-        return;
3160
-      }
3161
-      // Return Grab Cursor
3162
-      if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3163
-        swiper.setGrabCursor(false);
3164
-      }
3165
-
3166
-      // Time diff
3167
-      var touchEndTime = Utils.now();
3168
-      var timeDiff = touchEndTime - data.touchStartTime;
3169
-
3170
-      // Tap, doubleTap, Click
3171
-      if (swiper.allowClick) {
3172
-        swiper.updateClickedSlide(e);
3173
-        swiper.emit('tap click', e);
3174
-        if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
3175
-          swiper.emit('doubleTap doubleClick', e);
3176
-        }
3177
-      }
3178
-
3179
-      data.lastClickTime = Utils.now();
3180
-      Utils.nextTick(function () {
3181
-        if (!swiper.destroyed) { swiper.allowClick = true; }
3182
-      });
3183
-
3184
-      if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3185
-        data.isTouched = false;
3186
-        data.isMoved = false;
3187
-        data.startMoving = false;
3188
-        return;
3189
-      }
3190
-      data.isTouched = false;
3191
-      data.isMoved = false;
3192
-      data.startMoving = false;
3193
-
3194
-      var currentPos;
3195
-      if (params.followFinger) {
3196
-        currentPos = rtl ? swiper.translate : -swiper.translate;
3197
-      } else {
3198
-        currentPos = -data.currentTranslate;
3199
-      }
3200
-
3201
-      if (params.cssMode) {
3202
-        return;
3203
-      }
3204
-
3205
-      if (params.freeMode) {
3206
-        if (currentPos < -swiper.minTranslate()) {
3207
-          swiper.slideTo(swiper.activeIndex);
3208
-          return;
3209
-        }
3210
-        if (currentPos > -swiper.maxTranslate()) {
3211
-          if (swiper.slides.length < snapGrid.length) {
3212
-            swiper.slideTo(snapGrid.length - 1);
3213
-          } else {
3214
-            swiper.slideTo(swiper.slides.length - 1);
3215
-          }
3216
-          return;
3217
-        }
3218
-
3219
-        if (params.freeModeMomentum) {
3220
-          if (data.velocities.length > 1) {
3221
-            var lastMoveEvent = data.velocities.pop();
3222
-            var velocityEvent = data.velocities.pop();
3223
-
3224
-            var distance = lastMoveEvent.position - velocityEvent.position;
3225
-            var time = lastMoveEvent.time - velocityEvent.time;
3226
-            swiper.velocity = distance / time;
3227
-            swiper.velocity /= 2;
3228
-            if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3229
-              swiper.velocity = 0;
3230
-            }
3231
-            // this implies that the user stopped moving a finger then released.
3232
-            // There would be no events with distance zero, so the last event is stale.
3233
-            if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
3234
-              swiper.velocity = 0;
3235
-            }
3236
-          } else {
3237
-            swiper.velocity = 0;
3238
-          }
3239
-          swiper.velocity *= params.freeModeMomentumVelocityRatio;
3240
-
3241
-          data.velocities.length = 0;
3242
-          var momentumDuration = 1000 * params.freeModeMomentumRatio;
3243
-          var momentumDistance = swiper.velocity * momentumDuration;
3244
-
3245
-          var newPosition = swiper.translate + momentumDistance;
3246
-          if (rtl) { newPosition = -newPosition; }
3247
-
3248
-          var doBounce = false;
3249
-          var afterBouncePosition;
3250
-          var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3251
-          var needsLoopFix;
3252
-          if (newPosition < swiper.maxTranslate()) {
3253
-            if (params.freeModeMomentumBounce) {
3254
-              if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3255
-                newPosition = swiper.maxTranslate() - bounceAmount;
3256
-              }
3257
-              afterBouncePosition = swiper.maxTranslate();
3258
-              doBounce = true;
3259
-              data.allowMomentumBounce = true;
3260
-            } else {
3261
-              newPosition = swiper.maxTranslate();
3262
-            }
3263
-            if (params.loop && params.centeredSlides) { needsLoopFix = true; }
3264
-          } else if (newPosition > swiper.minTranslate()) {
3265
-            if (params.freeModeMomentumBounce) {
3266
-              if (newPosition - swiper.minTranslate() > bounceAmount) {
3267
-                newPosition = swiper.minTranslate() + bounceAmount;
3268
-              }
3269
-              afterBouncePosition = swiper.minTranslate();
3270
-              doBounce = true;
3271
-              data.allowMomentumBounce = true;
3272
-            } else {
3273
-              newPosition = swiper.minTranslate();
3274
-            }
3275
-            if (params.loop && params.centeredSlides) { needsLoopFix = true; }
3276
-          } else if (params.freeModeSticky) {
3277
-            var nextSlide;
3278
-            for (var j = 0; j < snapGrid.length; j += 1) {
3279
-              if (snapGrid[j] > -newPosition) {
3280
-                nextSlide = j;
3281
-                break;
3282
-              }
3283
-            }
3284
-
3285
-            if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3286
-              newPosition = snapGrid[nextSlide];
3287
-            } else {
3288
-              newPosition = snapGrid[nextSlide - 1];
3289
-            }
3290
-            newPosition = -newPosition;
3291
-          }
3292
-          if (needsLoopFix) {
3293
-            swiper.once('transitionEnd', function () {
3294
-              swiper.loopFix();
3295
-            });
3296
-          }
3297
-          // Fix duration
3298
-          if (swiper.velocity !== 0) {
3299
-            if (rtl) {
3300
-              momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3301
-            } else {
3302
-              momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3303
-            }
3304
-            if (params.freeModeSticky) {
3305
-              // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3306
-              // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3307
-              // It's easy to see this when simulating touch with mouse events. To fix this,
3308
-              // limit single-slide swipes to the default slide duration. This also has the
3309
-              // nice side effect of matching slide speed if the user stopped moving before
3310
-              // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3311
-              // For faster swipes, also apply limits (albeit higher ones).
3312
-              var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3313
-              var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3314
-              if (moveDistance < currentSlideSize) {
3315
-                momentumDuration = params.speed;
3316
-              } else if (moveDistance < 2 * currentSlideSize) {
3317
-                momentumDuration = params.speed * 1.5;
3318
-              } else {
3319
-                momentumDuration = params.speed * 2.5;
3320
-              }
3321
-            }
3322
-          } else if (params.freeModeSticky) {
3323
-            swiper.slideToClosest();
3324
-            return;
3325
-          }
3326
-
3327
-          if (params.freeModeMomentumBounce && doBounce) {
3328
-            swiper.updateProgress(afterBouncePosition);
3329
-            swiper.setTransition(momentumDuration);
3330
-            swiper.setTranslate(newPosition);
3331
-            swiper.transitionStart(true, swiper.swipeDirection);
3332
-            swiper.animating = true;
3333
-            $wrapperEl.transitionEnd(function () {
3334
-              if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }
3335
-              swiper.emit('momentumBounce');
3336
-              swiper.setTransition(params.speed);
3337
-              setTimeout(function () {
3338
-                swiper.setTranslate(afterBouncePosition);
3339
-                $wrapperEl.transitionEnd(function () {
3340
-                  if (!swiper || swiper.destroyed) { return; }
3341
-                  swiper.transitionEnd();
3342
-                });
3343
-              }, 0);
3344
-            });
3345
-          } else if (swiper.velocity) {
3346
-            swiper.updateProgress(newPosition);
3347
-            swiper.setTransition(momentumDuration);
3348
-            swiper.setTranslate(newPosition);
3349
-            swiper.transitionStart(true, swiper.swipeDirection);
3350
-            if (!swiper.animating) {
3351
-              swiper.animating = true;
3352
-              $wrapperEl.transitionEnd(function () {
3353
-                if (!swiper || swiper.destroyed) { return; }
3354
-                swiper.transitionEnd();
3355
-              });
3356
-            }
3357
-          } else {
3358
-            swiper.updateProgress(newPosition);
3359
-          }
3360
-
3361
-          swiper.updateActiveIndex();
3362
-          swiper.updateSlidesClasses();
3363
-        } else if (params.freeModeSticky) {
3364
-          swiper.slideToClosest();
3365
-          return;
3366
-        }
3367
-
3368
-        if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3369
-          swiper.updateProgress();
3370
-          swiper.updateActiveIndex();
3371
-          swiper.updateSlidesClasses();
3372
-        }
3373
-        return;
3374
-      }
3375
-
3376
-      // Find current slide
3377
-      var stopIndex = 0;
3378
-      var groupSize = swiper.slidesSizesGrid[0];
3379
-      for (var i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
3380
-        var increment$1 = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
3381
-        if (typeof slidesGrid[i + increment$1] !== 'undefined') {
3382
-          if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment$1]) {
3383
-            stopIndex = i;
3384
-            groupSize = slidesGrid[i + increment$1] - slidesGrid[i];
3385
-          }
3386
-        } else if (currentPos >= slidesGrid[i]) {
3387
-          stopIndex = i;
3388
-          groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3389
-        }
3390
-      }
3391
-
3392
-      // Find current slide size
3393
-      var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3394
-      var increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
3395
-
3396
-      if (timeDiff > params.longSwipesMs) {
3397
-        // Long touches
3398
-        if (!params.longSwipes) {
3399
-          swiper.slideTo(swiper.activeIndex);
3400
-          return;
3401
-        }
3402
-        if (swiper.swipeDirection === 'next') {
3403
-          if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + increment); }
3404
-          else { swiper.slideTo(stopIndex); }
3405
-        }
3406
-        if (swiper.swipeDirection === 'prev') {
3407
-          if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + increment); }
3408
-          else { swiper.slideTo(stopIndex); }
3409
-        }
3410
-      } else {
3411
-        // Short swipes
3412
-        if (!params.shortSwipes) {
3413
-          swiper.slideTo(swiper.activeIndex);
3414
-          return;
3415
-        }
3416
-        var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3417
-        if (!isNavButtonTarget) {
3418
-          if (swiper.swipeDirection === 'next') {
3419
-            swiper.slideTo(stopIndex + increment);
3420
-          }
3421
-          if (swiper.swipeDirection === 'prev') {
3422
-            swiper.slideTo(stopIndex);
3423
-          }
3424
-        } else if (e.target === swiper.navigation.nextEl) {
3425
-          swiper.slideTo(stopIndex + increment);
3426
-        } else {
3427
-          swiper.slideTo(stopIndex);
3428
-        }
3429
-      }
3430
-    }
3431
-
3432
-    function onResize () {
3433
-      var swiper = this;
3434
-
3435
-      var params = swiper.params;
3436
-      var el = swiper.el;
3437
-
3438
-      if (el && el.offsetWidth === 0) { return; }
3439
-
3440
-      // Breakpoints
3441
-      if (params.breakpoints) {
3442
-        swiper.setBreakpoint();
3443
-      }
3444
-
3445
-      // Save locks
3446
-      var allowSlideNext = swiper.allowSlideNext;
3447
-      var allowSlidePrev = swiper.allowSlidePrev;
3448
-      var snapGrid = swiper.snapGrid;
3449
-
3450
-      // Disable locks on resize
3451
-      swiper.allowSlideNext = true;
3452
-      swiper.allowSlidePrev = true;
3453
-
3454
-      swiper.updateSize();
3455
-      swiper.updateSlides();
3456
-
3457
-      swiper.updateSlidesClasses();
3458
-      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3459
-        swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3460
-      } else {
3461
-        swiper.slideTo(swiper.activeIndex, 0, false, true);
3462
-      }
3463
-
3464
-      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
3465
-        swiper.autoplay.run();
3466
-      }
3467
-      // Return locks after resize
3468
-      swiper.allowSlidePrev = allowSlidePrev;
3469
-      swiper.allowSlideNext = allowSlideNext;
3470
-
3471
-      if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
3472
-        swiper.checkOverflow();
3473
-      }
3474
-    }
3475
-
3476
-    function onClick (e) {
3477
-      var swiper = this;
3478
-      if (!swiper.allowClick) {
3479
-        if (swiper.params.preventClicks) { e.preventDefault(); }
3480
-        if (swiper.params.preventClicksPropagation && swiper.animating) {
3481
-          e.stopPropagation();
3482
-          e.stopImmediatePropagation();
3483
-        }
3484
-      }
3485
-    }
3486
-
3487
-    function onScroll () {
3488
-      var swiper = this;
3489
-      var wrapperEl = swiper.wrapperEl;
3490
-      var rtlTranslate = swiper.rtlTranslate;
3491
-      swiper.previousTranslate = swiper.translate;
3492
-      if (swiper.isHorizontal()) {
3493
-        if (rtlTranslate) {
3494
-          swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
3495
-        } else {
3496
-          swiper.translate = -wrapperEl.scrollLeft;
3497
-        }
3498
-      } else {
3499
-        swiper.translate = -wrapperEl.scrollTop;
3500
-      }
3501
-      // eslint-disable-next-line
3502
-      if (swiper.translate === -0) { swiper.translate = 0; }
3503
-
3504
-      swiper.updateActiveIndex();
3505
-      swiper.updateSlidesClasses();
3506
-
3507
-      var newProgress;
3508
-      var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
3509
-      if (translatesDiff === 0) {
3510
-        newProgress = 0;
3511
-      } else {
3512
-        newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
3513
-      }
3514
-      if (newProgress !== swiper.progress) {
3515
-        swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
3516
-      }
3517
-
3518
-      swiper.emit('setTranslate', swiper.translate, false);
3519
-    }
3520
-
3521
-    var dummyEventAttached = false;
3522
-    function dummyEventListener() {}
3523
-
3524
-    function attachEvents() {
3525
-      var swiper = this;
3526
-      var params = swiper.params;
3527
-      var touchEvents = swiper.touchEvents;
3528
-      var el = swiper.el;
3529
-      var wrapperEl = swiper.wrapperEl;
3530
-
3531
-      swiper.onTouchStart = onTouchStart.bind(swiper);
3532
-      swiper.onTouchMove = onTouchMove.bind(swiper);
3533
-      swiper.onTouchEnd = onTouchEnd.bind(swiper);
3534
-      if (params.cssMode) {
3535
-        swiper.onScroll = onScroll.bind(swiper);
3536
-      }
3537
-
3538
-      swiper.onClick = onClick.bind(swiper);
3539
-
3540
-      var capture = !!params.nested;
3541
-
3542
-      // Touch Events
3543
-      if (!Support.touch && Support.pointerEvents) {
3544
-        el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
3545
-        doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
3546
-        doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
3547
-      } else {
3548
-        if (Support.touch) {
3549
-          var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3550
-          el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3551
-          el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
3552
-          el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3553
-          if (touchEvents.cancel) {
3554
-            el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
3555
-          }
3556
-          if (!dummyEventAttached) {
3557
-            doc.addEventListener('touchstart', dummyEventListener);
3558
-            dummyEventAttached = true;
3559
-          }
3560
-        }
3561
-        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3562
-          el.addEventListener('mousedown', swiper.onTouchStart, false);
3563
-          doc.addEventListener('mousemove', swiper.onTouchMove, capture);
3564
-          doc.addEventListener('mouseup', swiper.onTouchEnd, false);
3565
-        }
3566
-      }
3567
-      // Prevent Links Clicks
3568
-      if (params.preventClicks || params.preventClicksPropagation) {
3569
-        el.addEventListener('click', swiper.onClick, true);
3570
-      }
3571
-      if (params.cssMode) {
3572
-        wrapperEl.addEventListener('scroll', swiper.onScroll);
3573
-      }
3574
-
3575
-      // Resize handler
3576
-      if (params.updateOnWindowResize) {
3577
-        swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
3578
-      } else {
3579
-        swiper.on('observerUpdate', onResize, true);
3580
-      }
3581
-    }
3582
-
3583
-    function detachEvents() {
3584
-      var swiper = this;
3585
-
3586
-      var params = swiper.params;
3587
-      var touchEvents = swiper.touchEvents;
3588
-      var el = swiper.el;
3589
-      var wrapperEl = swiper.wrapperEl;
3590
-
3591
-      var capture = !!params.nested;
3592
-
3593
-      // Touch Events
3594
-      if (!Support.touch && Support.pointerEvents) {
3595
-        el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
3596
-        doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3597
-        doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
3598
-      } else {
3599
-        if (Support.touch) {
3600
-          var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3601
-          el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3602
-          el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3603
-          el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3604
-          if (touchEvents.cancel) {
3605
-            el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
3606
-          }
3607
-        }
3608
-        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3609
-          el.removeEventListener('mousedown', swiper.onTouchStart, false);
3610
-          doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
3611
-          doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
3612
-        }
3613
-      }
3614
-      // Prevent Links Clicks
3615
-      if (params.preventClicks || params.preventClicksPropagation) {
3616
-        el.removeEventListener('click', swiper.onClick, true);
3617
-      }
3618
-
3619
-      if (params.cssMode) {
3620
-        wrapperEl.removeEventListener('scroll', swiper.onScroll);
3621
-      }
3622
-
3623
-      // Resize handler
3624
-      swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
3625
-    }
3626
-
3627
-    var events = {
3628
-      attachEvents: attachEvents,
3629
-      detachEvents: detachEvents,
3630
-    };
3631
-
3632
-    function setBreakpoint () {
3633
-      var swiper = this;
3634
-      var activeIndex = swiper.activeIndex;
3635
-      var initialized = swiper.initialized;
3636
-      var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;
3637
-      var params = swiper.params;
3638
-      var $el = swiper.$el;
3639
-      var breakpoints = params.breakpoints;
3640
-      if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }
3641
-
3642
-      // Get breakpoint for window width and update parameters
3643
-      var breakpoint = swiper.getBreakpoint(breakpoints);
3644
-
3645
-      if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
3646
-        var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
3647
-        if (breakpointOnlyParams) {
3648
-          ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
3649
-            var paramValue = breakpointOnlyParams[param];
3650
-            if (typeof paramValue === 'undefined') { return; }
3651
-            if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
3652
-              breakpointOnlyParams[param] = 'auto';
3653
-            } else if (param === 'slidesPerView') {
3654
-              breakpointOnlyParams[param] = parseFloat(paramValue);
3655
-            } else {
3656
-              breakpointOnlyParams[param] = parseInt(paramValue, 10);
3657
-            }
3658
-          });
3659
-        }
3660
-
3661
-        var breakpointParams = breakpointOnlyParams || swiper.originalParams;
3662
-        var wasMultiRow = params.slidesPerColumn > 1;
3663
-        var isMultiRow = breakpointParams.slidesPerColumn > 1;
3664
-        if (wasMultiRow && !isMultiRow) {
3665
-          $el.removeClass(((params.containerModifierClass) + "multirow " + (params.containerModifierClass) + "multirow-column"));
3666
-        } else if (!wasMultiRow && isMultiRow) {
3667
-          $el.addClass(((params.containerModifierClass) + "multirow"));
3668
-          if (breakpointParams.slidesPerColumnFill === 'column') {
3669
-            $el.addClass(((params.containerModifierClass) + "multirow-column"));
3670
-          }
3671
-        }
3672
-
3673
-        var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
3674
-        var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
3675
-
3676
-        if (directionChanged && initialized) {
3677
-          swiper.changeDirection();
3678
-        }
3679
-
3680
-        Utils.extend(swiper.params, breakpointParams);
3681
-
3682
-        Utils.extend(swiper, {
3683
-          allowTouchMove: swiper.params.allowTouchMove,
3684
-          allowSlideNext: swiper.params.allowSlideNext,
3685
-          allowSlidePrev: swiper.params.allowSlidePrev,
3686
-        });
3687
-
3688
-        swiper.currentBreakpoint = breakpoint;
3689
-
3690
-        if (needsReLoop && initialized) {
3691
-          swiper.loopDestroy();
3692
-          swiper.loopCreate();
3693
-          swiper.updateSlides();
3694
-          swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
3695
-        }
3696
-
3697
-        swiper.emit('breakpoint', breakpointParams);
3698
-      }
3699
-    }
3700
-
3701
-    function getBreakpoint (breakpoints) {
3702
-      // Get breakpoint for window width
3703
-      if (!breakpoints) { return undefined; }
3704
-      var breakpoint = false;
3705
-
3706
-      var points = Object.keys(breakpoints).map(function (point) {
3707
-        if (typeof point === 'string' && point.indexOf('@') === 0) {
3708
-          var minRatio = parseFloat(point.substr(1));
3709
-          var value = win.innerHeight * minRatio;
3710
-          return { value: value, point: point };
3711
-        }
3712
-        return { value: point, point: point };
3713
-      });
3714
-
3715
-      points.sort(function (a, b) { return parseInt(a.value, 10) - parseInt(b.value, 10); });
3716
-      for (var i = 0; i < points.length; i += 1) {
3717
-        var ref = points[i];
3718
-        var point = ref.point;
3719
-        var value = ref.value;
3720
-        if (value <= win.innerWidth) {
3721
-          breakpoint = point;
3722
-        }
3723
-      }
3724
-      return breakpoint || 'max';
3725
-    }
3726
-
3727
-    var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
3728
-
3729
-    function addClasses () {
3730
-      var swiper = this;
3731
-      var classNames = swiper.classNames;
3732
-      var params = swiper.params;
3733
-      var rtl = swiper.rtl;
3734
-      var $el = swiper.$el;
3735
-      var suffixes = [];
3736
-
3737
-      suffixes.push('initialized');
3738
-      suffixes.push(params.direction);
3739
-
3740
-      if (params.freeMode) {
3741
-        suffixes.push('free-mode');
3742
-      }
3743
-      if (params.autoHeight) {
3744
-        suffixes.push('autoheight');
3745
-      }
3746
-      if (rtl) {
3747
-        suffixes.push('rtl');
3748
-      }
3749
-      if (params.slidesPerColumn > 1) {
3750
-        suffixes.push('multirow');
3751
-        if (params.slidesPerColumnFill === 'column') {
3752
-          suffixes.push('multirow-column');
3753
-        }
3754
-      }
3755
-      if (Device.android) {
3756
-        suffixes.push('android');
3757
-      }
3758
-      if (Device.ios) {
3759
-        suffixes.push('ios');
3760
-      }
3761
-
3762
-      if (params.cssMode) {
3763
-        suffixes.push('css-mode');
3764
-      }
3765
-
3766
-      suffixes.forEach(function (suffix) {
3767
-        classNames.push(params.containerModifierClass + suffix);
3768
-      });
3769
-
3770
-      $el.addClass(classNames.join(' '));
3771
-    }
3772
-
3773
-    function removeClasses () {
3774
-      var swiper = this;
3775
-      var $el = swiper.$el;
3776
-      var classNames = swiper.classNames;
3777
-
3778
-      $el.removeClass(classNames.join(' '));
3779
-    }
3780
-
3781
-    var classes = { addClasses: addClasses, removeClasses: removeClasses };
3782
-
3783
-    function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
3784
-      var image;
3785
-      function onReady() {
3786
-        if (callback) { callback(); }
3787
-      }
3788
-      var isPicture = $(imageEl).parent('picture')[0];
3789
-
3790
-      if (!isPicture && (!imageEl.complete || !checkForComplete)) {
3791
-        if (src) {
3792
-          image = new win.Image();
3793
-          image.onload = onReady;
3794
-          image.onerror = onReady;
3795
-          if (sizes) {
3796
-            image.sizes = sizes;
3797
-          }
3798
-          if (srcset) {
3799
-            image.srcset = srcset;
3800
-          }
3801
-          if (src) {
3802
-            image.src = src;
3803
-          }
3804
-        } else {
3805
-          onReady();
3806
-        }
3807
-      } else {
3808
-        // image already loaded...
3809
-        onReady();
3810
-      }
3811
-    }
3812
-
3813
-    function preloadImages () {
3814
-      var swiper = this;
3815
-      swiper.imagesToLoad = swiper.$el.find('img');
3816
-      function onReady() {
3817
-        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }
3818
-        if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }
3819
-        if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
3820
-          if (swiper.params.updateOnImagesReady) { swiper.update(); }
3821
-          swiper.emit('imagesReady');
3822
-        }
3823
-      }
3824
-      for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
3825
-        var imageEl = swiper.imagesToLoad[i];
3826
-        swiper.loadImage(
3827
-          imageEl,
3828
-          imageEl.currentSrc || imageEl.getAttribute('src'),
3829
-          imageEl.srcset || imageEl.getAttribute('srcset'),
3830
-          imageEl.sizes || imageEl.getAttribute('sizes'),
3831
-          true,
3832
-          onReady
3833
-        );
3834
-      }
3835
-    }
3836
-
3837
-    var images = {
3838
-      loadImage: loadImage,
3839
-      preloadImages: preloadImages,
3840
-    };
3841
-
3842
-    function checkOverflow() {
3843
-      var swiper = this;
3844
-      var params = swiper.params;
3845
-      var wasLocked = swiper.isLocked;
3846
-      var lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
3847
-
3848
-      if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
3849
-        swiper.isLocked = lastSlidePosition <= swiper.size;
3850
-      } else {
3851
-        swiper.isLocked = swiper.snapGrid.length === 1;
3852
-      }
3853
-
3854
-      swiper.allowSlideNext = !swiper.isLocked;
3855
-      swiper.allowSlidePrev = !swiper.isLocked;
3856
-
3857
-      // events
3858
-      if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }
3859
-
3860
-      if (wasLocked && wasLocked !== swiper.isLocked) {
3861
-        swiper.isEnd = false;
3862
-        swiper.navigation.update();
3863
-      }
3864
-    }
3865
-
3866
-    var checkOverflow$1 = { checkOverflow: checkOverflow };
3867
-
3868
-    var defaults = {
3869
-      init: true,
3870
-      direction: 'horizontal',
3871
-      touchEventsTarget: 'container',
3872
-      initialSlide: 0,
3873
-      speed: 300,
3874
-      cssMode: false,
3875
-      updateOnWindowResize: true,
3876
-      //
3877
-      preventInteractionOnTransition: false,
3878
-
3879
-      // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
3880
-      edgeSwipeDetection: false,
3881
-      edgeSwipeThreshold: 20,
3882
-
3883
-      // Free mode
3884
-      freeMode: false,
3885
-      freeModeMomentum: true,
3886
-      freeModeMomentumRatio: 1,
3887
-      freeModeMomentumBounce: true,
3888
-      freeModeMomentumBounceRatio: 1,
3889
-      freeModeMomentumVelocityRatio: 1,
3890
-      freeModeSticky: false,
3891
-      freeModeMinimumVelocity: 0.02,
3892
-
3893
-      // Autoheight
3894
-      autoHeight: false,
3895
-
3896
-      // Set wrapper width
3897
-      setWrapperSize: false,
3898
-
3899
-      // Virtual Translate
3900
-      virtualTranslate: false,
3901
-
3902
-      // Effects
3903
-      effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
3904
-
3905
-      // Breakpoints
3906
-      breakpoints: undefined,
3907
-
3908
-      // Slides grid
3909
-      spaceBetween: 0,
3910
-      slidesPerView: 1,
3911
-      slidesPerColumn: 1,
3912
-      slidesPerColumnFill: 'column',
3913
-      slidesPerGroup: 1,
3914
-      slidesPerGroupSkip: 0,
3915
-      centeredSlides: false,
3916
-      centeredSlidesBounds: false,
3917
-      slidesOffsetBefore: 0, // in px
3918
-      slidesOffsetAfter: 0, // in px
3919
-      normalizeSlideIndex: true,
3920
-      centerInsufficientSlides: false,
3921
-
3922
-      // Disable swiper and hide navigation when container not overflow
3923
-      watchOverflow: false,
3924
-
3925
-      // Round length
3926
-      roundLengths: false,
3927
-
3928
-      // Touches
3929
-      touchRatio: 1,
3930
-      touchAngle: 45,
3931
-      simulateTouch: true,
3932
-      shortSwipes: true,
3933
-      longSwipes: true,
3934
-      longSwipesRatio: 0.5,
3935
-      longSwipesMs: 300,
3936
-      followFinger: true,
3937
-      allowTouchMove: true,
3938
-      threshold: 0,
3939
-      touchMoveStopPropagation: false,
3940
-      touchStartPreventDefault: true,
3941
-      touchStartForcePreventDefault: false,
3942
-      touchReleaseOnEdges: false,
3943
-
3944
-      // Unique Navigation Elements
3945
-      uniqueNavElements: true,
3946
-
3947
-      // Resistance
3948
-      resistance: true,
3949
-      resistanceRatio: 0.85,
3950
-
3951
-      // Progress
3952
-      watchSlidesProgress: false,
3953
-      watchSlidesVisibility: false,
3954
-
3955
-      // Cursor
3956
-      grabCursor: false,
3957
-
3958
-      // Clicks
3959
-      preventClicks: true,
3960
-      preventClicksPropagation: true,
3961
-      slideToClickedSlide: false,
3962
-
3963
-      // Images
3964
-      preloadImages: true,
3965
-      updateOnImagesReady: true,
3966
-
3967
-      // loop
3968
-      loop: false,
3969
-      loopAdditionalSlides: 0,
3970
-      loopedSlides: null,
3971
-      loopFillGroupWithBlank: false,
3972
-
3973
-      // Swiping/no swiping
3974
-      allowSlidePrev: true,
3975
-      allowSlideNext: true,
3976
-      swipeHandler: null, // '.swipe-handler',
3977
-      noSwiping: true,
3978
-      noSwipingClass: 'swiper-no-swiping',
3979
-      noSwipingSelector: null,
3980
-
3981
-      // Passive Listeners
3982
-      passiveListeners: true,
3983
-
3984
-      // NS
3985
-      containerModifierClass: 'swiper-container-', // NEW
3986
-      slideClass: 'swiper-slide',
3987
-      slideBlankClass: 'swiper-slide-invisible-blank',
3988
-      slideActiveClass: 'swiper-slide-active',
3989
-      slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
3990
-      slideVisibleClass: 'swiper-slide-visible',
3991
-      slideDuplicateClass: 'swiper-slide-duplicate',
3992
-      slideNextClass: 'swiper-slide-next',
3993
-      slideDuplicateNextClass: 'swiper-slide-duplicate-next',
3994
-      slidePrevClass: 'swiper-slide-prev',
3995
-      slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
3996
-      wrapperClass: 'swiper-wrapper',
3997
-
3998
-      // Callbacks
3999
-      runCallbacksOnInit: true,
4000
-    };
4001
-
4002
-    /* eslint no-param-reassign: "off" */
4003
-
4004
-    var prototypes = {
4005
-      update: update,
4006
-      translate: translate,
4007
-      transition: transition$1,
4008
-      slide: slide,
4009
-      loop: loop,
4010
-      grabCursor: grabCursor,
4011
-      manipulation: manipulation,
4012
-      events: events,
4013
-      breakpoints: breakpoints,
4014
-      checkOverflow: checkOverflow$1,
4015
-      classes: classes,
4016
-      images: images,
4017
-    };
4018
-
4019
-    var extendedDefaults = {};
4020
-
4021
-    var Swiper = /*@__PURE__*/(function (SwiperClass) {
4022
-      function Swiper() {
4023
-        var assign;
4024
-
4025
-        var args = [], len = arguments.length;
4026
-        while ( len-- ) args[ len ] = arguments[ len ];
4027
-        var el;
4028
-        var params;
4029
-        if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
4030
-          params = args[0];
4031
-        } else {
4032
-          (assign = args, el = assign[0], params = assign[1]);
4033
-        }
4034
-        if (!params) { params = {}; }
4035
-
4036
-        params = Utils.extend({}, params);
4037
-        if (el && !params.el) { params.el = el; }
4038
-
4039
-        SwiperClass.call(this, params);
4040
-
4041
-        Object.keys(prototypes).forEach(function (prototypeGroup) {
4042
-          Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
4043
-            if (!Swiper.prototype[protoMethod]) {
4044
-              Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
4045
-            }
4046
-          });
4047
-        });
4048
-
4049
-        // Swiper Instance
4050
-        var swiper = this;
4051
-        if (typeof swiper.modules === 'undefined') {
4052
-          swiper.modules = {};
4053
-        }
4054
-        Object.keys(swiper.modules).forEach(function (moduleName) {
4055
-          var module = swiper.modules[moduleName];
4056
-          if (module.params) {
4057
-            var moduleParamName = Object.keys(module.params)[0];
4058
-            var moduleParams = module.params[moduleParamName];
4059
-            if (typeof moduleParams !== 'object' || moduleParams === null) { return; }
4060
-            if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }
4061
-            if (params[moduleParamName] === true) {
4062
-              params[moduleParamName] = { enabled: true };
4063
-            }
4064
-            if (
4065
-              typeof params[moduleParamName] === 'object'
4066
-              && !('enabled' in params[moduleParamName])
4067
-            ) {
4068
-              params[moduleParamName].enabled = true;
4069
-            }
4070
-            if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }
4071
-          }
4072
-        });
4073
-
4074
-        // Extend defaults with modules params
4075
-        var swiperParams = Utils.extend({}, defaults);
4076
-        swiper.useModulesParams(swiperParams);
4077
-
4078
-        // Extend defaults with passed params
4079
-        swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
4080
-        swiper.originalParams = Utils.extend({}, swiper.params);
4081
-        swiper.passedParams = Utils.extend({}, params);
4082
-
4083
-        // Save Dom lib
4084
-        swiper.$ = $;
4085
-
4086
-        // Find el
4087
-        var $el = $(swiper.params.el);
4088
-        el = $el[0];
4089
-
4090
-        if (!el) {
4091
-          return undefined;
4092
-        }
4093
-
4094
-        if ($el.length > 1) {
4095
-          var swipers = [];
4096
-          $el.each(function (index, containerEl) {
4097
-            var newParams = Utils.extend({}, params, { el: containerEl });
4098
-            swipers.push(new Swiper(newParams));
4099
-          });
4100
-          return swipers;
4101
-        }
4102
-
4103
-        el.swiper = swiper;
4104
-        $el.data('swiper', swiper);
4105
-
4106
-        // Find Wrapper
4107
-        var $wrapperEl;
4108
-        if (el && el.shadowRoot && el.shadowRoot.querySelector) {
4109
-          $wrapperEl = $(el.shadowRoot.querySelector(("." + (swiper.params.wrapperClass))));
4110
-          // Children needs to return slot items
4111
-          $wrapperEl.children = function (options) { return $el.children(options); };
4112
-        } else {
4113
-          $wrapperEl = $el.children(("." + (swiper.params.wrapperClass)));
4114
-        }
4115
-        // Extend Swiper
4116
-        Utils.extend(swiper, {
4117
-          $el: $el,
4118
-          el: el,
4119
-          $wrapperEl: $wrapperEl,
4120
-          wrapperEl: $wrapperEl[0],
4121
-
4122
-          // Classes
4123
-          classNames: [],
4124
-
4125
-          // Slides
4126
-          slides: $(),
4127
-          slidesGrid: [],
4128
-          snapGrid: [],
4129
-          slidesSizesGrid: [],
4130
-
4131
-          // isDirection
4132
-          isHorizontal: function isHorizontal() {
4133
-            return swiper.params.direction === 'horizontal';
4134
-          },
4135
-          isVertical: function isVertical() {
4136
-            return swiper.params.direction === 'vertical';
4137
-          },
4138
-          // RTL
4139
-          rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
4140
-          rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
4141
-          wrongRTL: $wrapperEl.css('display') === '-webkit-box',
4142
-
4143
-          // Indexes
4144
-          activeIndex: 0,
4145
-          realIndex: 0,
4146
-
4147
-          //
4148
-          isBeginning: true,
4149
-          isEnd: false,
4150
-
4151
-          // Props
4152
-          translate: 0,
4153
-          previousTranslate: 0,
4154
-          progress: 0,
4155
-          velocity: 0,
4156
-          animating: false,
4157
-
4158
-          // Locks
4159
-          allowSlideNext: swiper.params.allowSlideNext,
4160
-          allowSlidePrev: swiper.params.allowSlidePrev,
4161
-
4162
-          // Touch Events
4163
-          touchEvents: (function touchEvents() {
4164
-            var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4165
-            var desktop = ['mousedown', 'mousemove', 'mouseup'];
4166
-            if (Support.pointerEvents) {
4167
-              desktop = ['pointerdown', 'pointermove', 'pointerup'];
4168
-            }
4169
-            swiper.touchEventsTouch = {
4170
-              start: touch[0],
4171
-              move: touch[1],
4172
-              end: touch[2],
4173
-              cancel: touch[3],
4174
-            };
4175
-            swiper.touchEventsDesktop = {
4176
-              start: desktop[0],
4177
-              move: desktop[1],
4178
-              end: desktop[2],
4179
-            };
4180
-            return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4181
-          }()),
4182
-          touchEventsData: {
4183
-            isTouched: undefined,
4184
-            isMoved: undefined,
4185
-            allowTouchCallbacks: undefined,
4186
-            touchStartTime: undefined,
4187
-            isScrolling: undefined,
4188
-            currentTranslate: undefined,
4189
-            startTranslate: undefined,
4190
-            allowThresholdMove: undefined,
4191
-            // Form elements to match
4192
-            formElements: 'input, select, option, textarea, button, video, label',
4193
-            // Last click time
4194
-            lastClickTime: Utils.now(),
4195
-            clickTimeout: undefined,
4196
-            // Velocities
4197
-            velocities: [],
4198
-            allowMomentumBounce: undefined,
4199
-            isTouchEvent: undefined,
4200
-            startMoving: undefined,
4201
-          },
4202
-
4203
-          // Clicks
4204
-          allowClick: true,
4205
-
4206
-          // Touches
4207
-          allowTouchMove: swiper.params.allowTouchMove,
4208
-
4209
-          touches: {
4210
-            startX: 0,
4211
-            startY: 0,
4212
-            currentX: 0,
4213
-            currentY: 0,
4214
-            diff: 0,
4215
-          },
4216
-
4217
-          // Images
4218
-          imagesToLoad: [],
4219
-          imagesLoaded: 0,
4220
-
4221
-        });
4222
-
4223
-        // Install Modules
4224
-        swiper.useModules();
4225
-
4226
-        // Init
4227
-        if (swiper.params.init) {
4228
-          swiper.init();
4229
-        }
4230
-
4231
-        // Return app instance
4232
-        return swiper;
4233
-      }
4234
-
4235
-      if ( SwiperClass ) Swiper.__proto__ = SwiperClass;
4236
-      Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );
4237
-      Swiper.prototype.constructor = Swiper;
4238
-
4239
-      var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };
4240
-
4241
-      Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {
4242
-        var swiper = this;
4243
-        var params = swiper.params;
4244
-        var slides = swiper.slides;
4245
-        var slidesGrid = swiper.slidesGrid;
4246
-        var swiperSize = swiper.size;
4247
-        var activeIndex = swiper.activeIndex;
4248
-        var spv = 1;
4249
-        if (params.centeredSlides) {
4250
-          var slideSize = slides[activeIndex].swiperSlideSize;
4251
-          var breakLoop;
4252
-          for (var i = activeIndex + 1; i < slides.length; i += 1) {
4253
-            if (slides[i] && !breakLoop) {
4254
-              slideSize += slides[i].swiperSlideSize;
4255
-              spv += 1;
4256
-              if (slideSize > swiperSize) { breakLoop = true; }
4257
-            }
4258
-          }
4259
-          for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
4260
-            if (slides[i$1] && !breakLoop) {
4261
-              slideSize += slides[i$1].swiperSlideSize;
4262
-              spv += 1;
4263
-              if (slideSize > swiperSize) { breakLoop = true; }
4264
-            }
4265
-          }
4266
-        } else {
4267
-          for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
4268
-            if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
4269
-              spv += 1;
4270
-            }
4271
-          }
4272
-        }
4273
-        return spv;
4274
-      };
4275
-
4276
-      Swiper.prototype.update = function update () {
4277
-        var swiper = this;
4278
-        if (!swiper || swiper.destroyed) { return; }
4279
-        var snapGrid = swiper.snapGrid;
4280
-        var params = swiper.params;
4281
-        // Breakpoints
4282
-        if (params.breakpoints) {
4283
-          swiper.setBreakpoint();
4284
-        }
4285
-        swiper.updateSize();
4286
-        swiper.updateSlides();
4287
-        swiper.updateProgress();
4288
-        swiper.updateSlidesClasses();
4289
-
4290
-        function setTranslate() {
4291
-          var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4292
-          var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4293
-          swiper.setTranslate(newTranslate);
4294
-          swiper.updateActiveIndex();
4295
-          swiper.updateSlidesClasses();
4296
-        }
4297
-        var translated;
4298
-        if (swiper.params.freeMode) {
4299
-          setTranslate();
4300
-          if (swiper.params.autoHeight) {
4301
-            swiper.updateAutoHeight();
4302
-          }
4303
-        } else {
4304
-          if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4305
-            translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4306
-          } else {
4307
-            translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4308
-          }
4309
-          if (!translated) {
4310
-            setTranslate();
4311
-          }
4312
-        }
4313
-        if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4314
-          swiper.checkOverflow();
4315
-        }
4316
-        swiper.emit('update');
4317
-      };
4318
-
4319
-      Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {
4320
-        if ( needUpdate === void 0 ) needUpdate = true;
4321
-
4322
-        var swiper = this;
4323
-        var currentDirection = swiper.params.direction;
4324
-        if (!newDirection) {
4325
-          // eslint-disable-next-line
4326
-          newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
4327
-        }
4328
-        if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
4329
-          return swiper;
4330
-        }
4331
-
4332
-        swiper.$el
4333
-          .removeClass(("" + (swiper.params.containerModifierClass) + currentDirection))
4334
-          .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
4335
-
4336
-        swiper.params.direction = newDirection;
4337
-
4338
-        swiper.slides.each(function (slideIndex, slideEl) {
4339
-          if (newDirection === 'vertical') {
4340
-            slideEl.style.width = '';
4341
-          } else {
4342
-            slideEl.style.height = '';
4343
-          }
4344
-        });
4345
-
4346
-        swiper.emit('changeDirection');
4347
-        if (needUpdate) { swiper.update(); }
4348
-
4349
-        return swiper;
4350
-      };
4351
-
4352
-      Swiper.prototype.init = function init () {
4353
-        var swiper = this;
4354
-        if (swiper.initialized) { return; }
4355
-
4356
-        swiper.emit('beforeInit');
4357
-
4358
-        // Set breakpoint
4359
-        if (swiper.params.breakpoints) {
4360
-          swiper.setBreakpoint();
4361
-        }
4362
-
4363
-        // Add Classes
4364
-        swiper.addClasses();
4365
-
4366
-        // Create loop
4367
-        if (swiper.params.loop) {
4368
-          swiper.loopCreate();
4369
-        }
4370
-
4371
-        // Update size
4372
-        swiper.updateSize();
4373
-
4374
-        // Update slides
4375
-        swiper.updateSlides();
4376
-
4377
-        if (swiper.params.watchOverflow) {
4378
-          swiper.checkOverflow();
4379
-        }
4380
-
4381
-        // Set Grab Cursor
4382
-        if (swiper.params.grabCursor) {
4383
-          swiper.setGrabCursor();
4384
-        }
4385
-
4386
-        if (swiper.params.preloadImages) {
4387
-          swiper.preloadImages();
4388
-        }
4389
-
4390
-        // Slide To Initial Slide
4391
-        if (swiper.params.loop) {
4392
-          swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
4393
-        } else {
4394
-          swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
4395
-        }
4396
-
4397
-        // Attach events
4398
-        swiper.attachEvents();
4399
-
4400
-        // Init Flag
4401
-        swiper.initialized = true;
4402
-
4403
-        // Emit
4404
-        swiper.emit('init');
4405
-      };
4406
-
4407
-      Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {
4408
-        if ( deleteInstance === void 0 ) deleteInstance = true;
4409
-        if ( cleanStyles === void 0 ) cleanStyles = true;
4410
-
4411
-        var swiper = this;
4412
-        var params = swiper.params;
4413
-        var $el = swiper.$el;
4414
-        var $wrapperEl = swiper.$wrapperEl;
4415
-        var slides = swiper.slides;
4416
-
4417
-        if (typeof swiper.params === 'undefined' || swiper.destroyed) {
4418
-          return null;
4419
-        }
4420
-
4421
-        swiper.emit('beforeDestroy');
4422
-
4423
-        // Init Flag
4424
-        swiper.initialized = false;
4425
-
4426
-        // Detach events
4427
-        swiper.detachEvents();
4428
-
4429
-        // Destroy loop
4430
-        if (params.loop) {
4431
-          swiper.loopDestroy();
4432
-        }
4433
-
4434
-        // Cleanup styles
4435
-        if (cleanStyles) {
4436
-          swiper.removeClasses();
4437
-          $el.removeAttr('style');
4438
-          $wrapperEl.removeAttr('style');
4439
-          if (slides && slides.length) {
4440
-            slides
4441
-              .removeClass([
4442
-                params.slideVisibleClass,
4443
-                params.slideActiveClass,
4444
-                params.slideNextClass,
4445
-                params.slidePrevClass ].join(' '))
4446
-              .removeAttr('style')
4447
-              .removeAttr('data-swiper-slide-index');
4448
-          }
4449
-        }
4450
-
4451
-        swiper.emit('destroy');
4452
-
4453
-        // Detach emitter events
4454
-        Object.keys(swiper.eventsListeners).forEach(function (eventName) {
4455
-          swiper.off(eventName);
4456
-        });
4457
-
4458
-        if (deleteInstance !== false) {
4459
-          swiper.$el[0].swiper = null;
4460
-          swiper.$el.data('swiper', null);
4461
-          Utils.deleteProps(swiper);
4462
-        }
4463
-        swiper.destroyed = true;
4464
-
4465
-        return null;
4466
-      };
4467
-
4468
-      Swiper.extendDefaults = function extendDefaults (newDefaults) {
4469
-        Utils.extend(extendedDefaults, newDefaults);
4470
-      };
4471
-
4472
-      staticAccessors.extendedDefaults.get = function () {
4473
-        return extendedDefaults;
4474
-      };
4475
-
4476
-      staticAccessors.defaults.get = function () {
4477
-        return defaults;
4478
-      };
4479
-
4480
-      staticAccessors.Class.get = function () {
4481
-        return SwiperClass;
4482
-      };
4483
-
4484
-      staticAccessors.$.get = function () {
4485
-        return $;
4486
-      };
4487
-
4488
-      Object.defineProperties( Swiper, staticAccessors );
4489
-
4490
-      return Swiper;
4491
-    }(SwiperClass));
4492
-
4493
-    var Device$1 = {
4494
-      name: 'device',
4495
-      proto: {
4496
-        device: Device,
4497
-      },
4498
-      static: {
4499
-        device: Device,
4500
-      },
4501
-    };
4502
-
4503
-    var Support$1 = {
4504
-      name: 'support',
4505
-      proto: {
4506
-        support: Support,
4507
-      },
4508
-      static: {
4509
-        support: Support,
4510
-      },
4511
-    };
4512
-
4513
-    var Browser = (function Browser() {
4514
-      function isSafari() {
4515
-        var ua = win.navigator.userAgent.toLowerCase();
4516
-        return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
4517
-      }
4518
-      return {
4519
-        isEdge: !!win.navigator.userAgent.match(/Edge/g),
4520
-        isSafari: isSafari(),
4521
-        isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
4522
-      };
4523
-    }());
4524
-
4525
-    var Browser$1 = {
4526
-      name: 'browser',
4527
-      proto: {
4528
-        browser: Browser,
4529
-      },
4530
-      static: {
4531
-        browser: Browser,
4532
-      },
4533
-    };
4534
-
4535
-    var Resize = {
4536
-      name: 'resize',
4537
-      create: function create() {
4538
-        var swiper = this;
4539
-        Utils.extend(swiper, {
4540
-          resize: {
4541
-            resizeHandler: function resizeHandler() {
4542
-              if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
4543
-              swiper.emit('beforeResize');
4544
-              swiper.emit('resize');
4545
-            },
4546
-            orientationChangeHandler: function orientationChangeHandler() {
4547
-              if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
4548
-              swiper.emit('orientationchange');
4549
-            },
4550
-          },
4551
-        });
4552
-      },
4553
-      on: {
4554
-        init: function init() {
4555
-          var swiper = this;
4556
-          // Emit resize
4557
-          win.addEventListener('resize', swiper.resize.resizeHandler);
4558
-
4559
-          // Emit orientationchange
4560
-          win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4561
-        },
4562
-        destroy: function destroy() {
4563
-          var swiper = this;
4564
-          win.removeEventListener('resize', swiper.resize.resizeHandler);
4565
-          win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4566
-        },
4567
-      },
4568
-    };
4569
-
4570
-    var Observer = {
4571
-      func: win.MutationObserver || win.WebkitMutationObserver,
4572
-      attach: function attach(target, options) {
4573
-        if ( options === void 0 ) options = {};
4574
-
4575
-        var swiper = this;
4576
-
4577
-        var ObserverFunc = Observer.func;
4578
-        var observer = new ObserverFunc(function (mutations) {
4579
-          // The observerUpdate event should only be triggered
4580
-          // once despite the number of mutations.  Additional
4581
-          // triggers are redundant and are very costly
4582
-          if (mutations.length === 1) {
4583
-            swiper.emit('observerUpdate', mutations[0]);
4584
-            return;
4585
-          }
4586
-          var observerUpdate = function observerUpdate() {
4587
-            swiper.emit('observerUpdate', mutations[0]);
4588
-          };
4589
-
4590
-          if (win.requestAnimationFrame) {
4591
-            win.requestAnimationFrame(observerUpdate);
4592
-          } else {
4593
-            win.setTimeout(observerUpdate, 0);
4594
-          }
4595
-        });
4596
-
4597
-        observer.observe(target, {
4598
-          attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
4599
-          childList: typeof options.childList === 'undefined' ? true : options.childList,
4600
-          characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
4601
-        });
4602
-
4603
-        swiper.observer.observers.push(observer);
4604
-      },
4605
-      init: function init() {
4606
-        var swiper = this;
4607
-        if (!Support.observer || !swiper.params.observer) { return; }
4608
-        if (swiper.params.observeParents) {
4609
-          var containerParents = swiper.$el.parents();
4610
-          for (var i = 0; i < containerParents.length; i += 1) {
4611
-            swiper.observer.attach(containerParents[i]);
4612
-          }
4613
-        }
4614
-        // Observe container
4615
-        swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
4616
-
4617
-        // Observe wrapper
4618
-        swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
4619
-      },
4620
-      destroy: function destroy() {
4621
-        var swiper = this;
4622
-        swiper.observer.observers.forEach(function (observer) {
4623
-          observer.disconnect();
4624
-        });
4625
-        swiper.observer.observers = [];
4626
-      },
4627
-    };
4628
-
4629
-    var Observer$1 = {
4630
-      name: 'observer',
4631
-      params: {
4632
-        observer: false,
4633
-        observeParents: false,
4634
-        observeSlideChildren: false,
4635
-      },
4636
-      create: function create() {
4637
-        var swiper = this;
4638
-        Utils.extend(swiper, {
4639
-          observer: {
4640
-            init: Observer.init.bind(swiper),
4641
-            attach: Observer.attach.bind(swiper),
4642
-            destroy: Observer.destroy.bind(swiper),
4643
-            observers: [],
4644
-          },
4645
-        });
4646
-      },
4647
-      on: {
4648
-        init: function init() {
4649
-          var swiper = this;
4650
-          swiper.observer.init();
4651
-        },
4652
-        destroy: function destroy() {
4653
-          var swiper = this;
4654
-          swiper.observer.destroy();
4655
-        },
4656
-      },
4657
-    };
4658
-
4659
-    var Virtual = {
4660
-      update: function update(force) {
4661
-        var swiper = this;
4662
-        var ref = swiper.params;
4663
-        var slidesPerView = ref.slidesPerView;
4664
-        var slidesPerGroup = ref.slidesPerGroup;
4665
-        var centeredSlides = ref.centeredSlides;
4666
-        var ref$1 = swiper.params.virtual;
4667
-        var addSlidesBefore = ref$1.addSlidesBefore;
4668
-        var addSlidesAfter = ref$1.addSlidesAfter;
4669
-        var ref$2 = swiper.virtual;
4670
-        var previousFrom = ref$2.from;
4671
-        var previousTo = ref$2.to;
4672
-        var slides = ref$2.slides;
4673
-        var previousSlidesGrid = ref$2.slidesGrid;
4674
-        var renderSlide = ref$2.renderSlide;
4675
-        var previousOffset = ref$2.offset;
4676
-        swiper.updateActiveIndex();
4677
-        var activeIndex = swiper.activeIndex || 0;
4678
-
4679
-        var offsetProp;
4680
-        if (swiper.rtlTranslate) { offsetProp = 'right'; }
4681
-        else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }
4682
-
4683
-        var slidesAfter;
4684
-        var slidesBefore;
4685
-        if (centeredSlides) {
4686
-          slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
4687
-          slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
4688
-        } else {
4689
-          slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
4690
-          slidesBefore = slidesPerGroup + addSlidesAfter;
4691
-        }
4692
-        var from = Math.max((activeIndex || 0) - slidesBefore, 0);
4693
-        var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
4694
-        var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
4695
-
4696
-        Utils.extend(swiper.virtual, {
4697
-          from: from,
4698
-          to: to,
4699
-          offset: offset,
4700
-          slidesGrid: swiper.slidesGrid,
4701
-        });
4702
-
4703
-        function onRendered() {
4704
-          swiper.updateSlides();
4705
-          swiper.updateProgress();
4706
-          swiper.updateSlidesClasses();
4707
-          if (swiper.lazy && swiper.params.lazy.enabled) {
4708
-            swiper.lazy.load();
4709
-          }
4710
-        }
4711
-
4712
-        if (previousFrom === from && previousTo === to && !force) {
4713
-          if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
4714
-            swiper.slides.css(offsetProp, (offset + "px"));
4715
-          }
4716
-          swiper.updateProgress();
4717
-          return;
4718
-        }
4719
-        if (swiper.params.virtual.renderExternal) {
4720
-          swiper.params.virtual.renderExternal.call(swiper, {
4721
-            offset: offset,
4722
-            from: from,
4723
-            to: to,
4724
-            slides: (function getSlides() {
4725
-              var slidesToRender = [];
4726
-              for (var i = from; i <= to; i += 1) {
4727
-                slidesToRender.push(slides[i]);
4728
-              }
4729
-              return slidesToRender;
4730
-            }()),
4731
-          });
4732
-          onRendered();
4733
-          return;
4734
-        }
4735
-        var prependIndexes = [];
4736
-        var appendIndexes = [];
4737
-        if (force) {
4738
-          swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove();
4739
-        } else {
4740
-          for (var i = previousFrom; i <= previousTo; i += 1) {
4741
-            if (i < from || i > to) {
4742
-              swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove();
4743
-            }
4744
-          }
4745
-        }
4746
-        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
4747
-          if (i$1 >= from && i$1 <= to) {
4748
-            if (typeof previousTo === 'undefined' || force) {
4749
-              appendIndexes.push(i$1);
4750
-            } else {
4751
-              if (i$1 > previousTo) { appendIndexes.push(i$1); }
4752
-              if (i$1 < previousFrom) { prependIndexes.push(i$1); }
4753
-            }
4754
-          }
4755
-        }
4756
-        appendIndexes.forEach(function (index) {
4757
-          swiper.$wrapperEl.append(renderSlide(slides[index], index));
4758
-        });
4759
-        prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {
4760
-          swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
4761
-        });
4762
-        swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px"));
4763
-        onRendered();
4764
-      },
4765
-      renderSlide: function renderSlide(slide, index) {
4766
-        var swiper = this;
4767
-        var params = swiper.params.virtual;
4768
-        if (params.cache && swiper.virtual.cache[index]) {
4769
-          return swiper.virtual.cache[index];
4770
-        }
4771
-        var $slideEl = params.renderSlide
4772
-          ? $(params.renderSlide.call(swiper, slide, index))
4773
-          : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>"));
4774
-        if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }
4775
-        if (params.cache) { swiper.virtual.cache[index] = $slideEl; }
4776
-        return $slideEl;
4777
-      },
4778
-      appendSlide: function appendSlide(slides) {
4779
-        var swiper = this;
4780
-        if (typeof slides === 'object' && 'length' in slides) {
4781
-          for (var i = 0; i < slides.length; i += 1) {
4782
-            if (slides[i]) { swiper.virtual.slides.push(slides[i]); }
4783
-          }
4784
-        } else {
4785
-          swiper.virtual.slides.push(slides);
4786
-        }
4787
-        swiper.virtual.update(true);
4788
-      },
4789
-      prependSlide: function prependSlide(slides) {
4790
-        var swiper = this;
4791
-        var activeIndex = swiper.activeIndex;
4792
-        var newActiveIndex = activeIndex + 1;
4793
-        var numberOfNewSlides = 1;
4794
-
4795
-        if (Array.isArray(slides)) {
4796
-          for (var i = 0; i < slides.length; i += 1) {
4797
-            if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }
4798
-          }
4799
-          newActiveIndex = activeIndex + slides.length;
4800
-          numberOfNewSlides = slides.length;
4801
-        } else {
4802
-          swiper.virtual.slides.unshift(slides);
4803
-        }
4804
-        if (swiper.params.virtual.cache) {
4805
-          var cache = swiper.virtual.cache;
4806
-          var newCache = {};
4807
-          Object.keys(cache).forEach(function (cachedIndex) {
4808
-            var $cachedEl = cache[cachedIndex];
4809
-            var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
4810
-            if (cachedElIndex) {
4811
-              $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
4812
-            }
4813
-            newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
4814
-          });
4815
-          swiper.virtual.cache = newCache;
4816
-        }
4817
-        swiper.virtual.update(true);
4818
-        swiper.slideTo(newActiveIndex, 0);
4819
-      },
4820
-      removeSlide: function removeSlide(slidesIndexes) {
4821
-        var swiper = this;
4822
-        if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }
4823
-        var activeIndex = swiper.activeIndex;
4824
-        if (Array.isArray(slidesIndexes)) {
4825
-          for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
4826
-            swiper.virtual.slides.splice(slidesIndexes[i], 1);
4827
-            if (swiper.params.virtual.cache) {
4828
-              delete swiper.virtual.cache[slidesIndexes[i]];
4829
-            }
4830
-            if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }
4831
-            activeIndex = Math.max(activeIndex, 0);
4832
-          }
4833
-        } else {
4834
-          swiper.virtual.slides.splice(slidesIndexes, 1);
4835
-          if (swiper.params.virtual.cache) {
4836
-            delete swiper.virtual.cache[slidesIndexes];
4837
-          }
4838
-          if (slidesIndexes < activeIndex) { activeIndex -= 1; }
4839
-          activeIndex = Math.max(activeIndex, 0);
4840
-        }
4841
-        swiper.virtual.update(true);
4842
-        swiper.slideTo(activeIndex, 0);
4843
-      },
4844
-      removeAllSlides: function removeAllSlides() {
4845
-        var swiper = this;
4846
-        swiper.virtual.slides = [];
4847
-        if (swiper.params.virtual.cache) {
4848
-          swiper.virtual.cache = {};
4849
-        }
4850
-        swiper.virtual.update(true);
4851
-        swiper.slideTo(0, 0);
4852
-      },
4853
-    };
4854
-
4855
-    var Virtual$1 = {
4856
-      name: 'virtual',
4857
-      params: {
4858
-        virtual: {
4859
-          enabled: false,
4860
-          slides: [],
4861
-          cache: true,
4862
-          renderSlide: null,
4863
-          renderExternal: null,
4864
-          addSlidesBefore: 0,
4865
-          addSlidesAfter: 0,
4866
-        },
4867
-      },
4868
-      create: function create() {
4869
-        var swiper = this;
4870
-        Utils.extend(swiper, {
4871
-          virtual: {
4872
-            update: Virtual.update.bind(swiper),
4873
-            appendSlide: Virtual.appendSlide.bind(swiper),
4874
-            prependSlide: Virtual.prependSlide.bind(swiper),
4875
-            removeSlide: Virtual.removeSlide.bind(swiper),
4876
-            removeAllSlides: Virtual.removeAllSlides.bind(swiper),
4877
-            renderSlide: Virtual.renderSlide.bind(swiper),
4878
-            slides: swiper.params.virtual.slides,
4879
-            cache: {},
4880
-          },
4881
-        });
4882
-      },
4883
-      on: {
4884
-        beforeInit: function beforeInit() {
4885
-          var swiper = this;
4886
-          if (!swiper.params.virtual.enabled) { return; }
4887
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual"));
4888
-          var overwriteParams = {
4889
-            watchSlidesProgress: true,
4890
-          };
4891
-          Utils.extend(swiper.params, overwriteParams);
4892
-          Utils.extend(swiper.originalParams, overwriteParams);
4893
-
4894
-          if (!swiper.params.initialSlide) {
4895
-            swiper.virtual.update();
4896
-          }
4897
-        },
4898
-        setTranslate: function setTranslate() {
4899
-          var swiper = this;
4900
-          if (!swiper.params.virtual.enabled) { return; }
4901
-          swiper.virtual.update();
4902
-        },
4903
-      },
4904
-    };
4905
-
4906
-    var Keyboard = {
4907
-      handle: function handle(event) {
4908
-        var swiper = this;
4909
-        var rtl = swiper.rtlTranslate;
4910
-        var e = event;
4911
-        if (e.originalEvent) { e = e.originalEvent; } // jquery fix
4912
-        var kc = e.keyCode || e.charCode;
4913
-        // Directions locks
4914
-        if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
4915
-          return false;
4916
-        }
4917
-        if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
4918
-          return false;
4919
-        }
4920
-        if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
4921
-          return undefined;
4922
-        }
4923
-        if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
4924
-          return undefined;
4925
-        }
4926
-        if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
4927
-          var inView = false;
4928
-          // Check that swiper should be inside of visible area of window
4929
-          if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) {
4930
-            return undefined;
4931
-          }
4932
-          var windowWidth = win.innerWidth;
4933
-          var windowHeight = win.innerHeight;
4934
-          var swiperOffset = swiper.$el.offset();
4935
-          if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }
4936
-          var swiperCoord = [
4937
-            [swiperOffset.left, swiperOffset.top],
4938
-            [swiperOffset.left + swiper.width, swiperOffset.top],
4939
-            [swiperOffset.left, swiperOffset.top + swiper.height],
4940
-            [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];
4941
-          for (var i = 0; i < swiperCoord.length; i += 1) {
4942
-            var point = swiperCoord[i];
4943
-            if (
4944
-              point[0] >= 0 && point[0] <= windowWidth
4945
-              && point[1] >= 0 && point[1] <= windowHeight
4946
-            ) {
4947
-              inView = true;
4948
-            }
4949
-          }
4950
-          if (!inView) { return undefined; }
4951
-        }
4952
-        if (swiper.isHorizontal()) {
4953
-          if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
4954
-            if (e.preventDefault) { e.preventDefault(); }
4955
-            else { e.returnValue = false; }
4956
-          }
4957
-          if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); }
4958
-          if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); }
4959
-        } else {
4960
-          if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
4961
-            if (e.preventDefault) { e.preventDefault(); }
4962
-            else { e.returnValue = false; }
4963
-          }
4964
-          if (kc === 34 || kc === 40) { swiper.slideNext(); }
4965
-          if (kc === 33 || kc === 38) { swiper.slidePrev(); }
4966
-        }
4967
-        swiper.emit('keyPress', kc);
4968
-        return undefined;
4969
-      },
4970
-      enable: function enable() {
4971
-        var swiper = this;
4972
-        if (swiper.keyboard.enabled) { return; }
4973
-        $(doc).on('keydown', swiper.keyboard.handle);
4974
-        swiper.keyboard.enabled = true;
4975
-      },
4976
-      disable: function disable() {
4977
-        var swiper = this;
4978
-        if (!swiper.keyboard.enabled) { return; }
4979
-        $(doc).off('keydown', swiper.keyboard.handle);
4980
-        swiper.keyboard.enabled = false;
4981
-      },
4982
-    };
4983
-
4984
-    var Keyboard$1 = {
4985
-      name: 'keyboard',
4986
-      params: {
4987
-        keyboard: {
4988
-          enabled: false,
4989
-          onlyInViewport: true,
4990
-        },
4991
-      },
4992
-      create: function create() {
4993
-        var swiper = this;
4994
-        Utils.extend(swiper, {
4995
-          keyboard: {
4996
-            enabled: false,
4997
-            enable: Keyboard.enable.bind(swiper),
4998
-            disable: Keyboard.disable.bind(swiper),
4999
-            handle: Keyboard.handle.bind(swiper),
5000
-          },
5001
-        });
5002
-      },
5003
-      on: {
5004
-        init: function init() {
5005
-          var swiper = this;
5006
-          if (swiper.params.keyboard.enabled) {
5007
-            swiper.keyboard.enable();
5008
-          }
5009
-        },
5010
-        destroy: function destroy() {
5011
-          var swiper = this;
5012
-          if (swiper.keyboard.enabled) {
5013
-            swiper.keyboard.disable();
5014
-          }
5015
-        },
5016
-      },
5017
-    };
5018
-
5019
-    function isEventSupported() {
5020
-      var eventName = 'onwheel';
5021
-      var isSupported = eventName in doc;
5022
-
5023
-      if (!isSupported) {
5024
-        var element = doc.createElement('div');
5025
-        element.setAttribute(eventName, 'return;');
5026
-        isSupported = typeof element[eventName] === 'function';
5027
-      }
5028
-
5029
-      if (!isSupported
5030
-        && doc.implementation
5031
-        && doc.implementation.hasFeature
5032
-        // always returns true in newer browsers as per the standard.
5033
-        // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
5034
-        && doc.implementation.hasFeature('', '') !== true
5035
-      ) {
5036
-        // This is the only way to test support for the `wheel` event in IE9+.
5037
-        isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
5038
-      }
5039
-
5040
-      return isSupported;
5041
-    }
5042
-    var Mousewheel = {
5043
-      lastScrollTime: Utils.now(),
5044
-      lastEventBeforeSnap: undefined,
5045
-      recentWheelEvents: [],
5046
-      event: function event() {
5047
-        if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }
5048
-        return isEventSupported() ? 'wheel' : 'mousewheel';
5049
-      },
5050
-      normalize: function normalize(e) {
5051
-        // Reasonable defaults
5052
-        var PIXEL_STEP = 10;
5053
-        var LINE_HEIGHT = 40;
5054
-        var PAGE_HEIGHT = 800;
5055
-
5056
-        var sX = 0;
5057
-        var sY = 0; // spinX, spinY
5058
-        var pX = 0;
5059
-        var pY = 0; // pixelX, pixelY
5060
-
5061
-        // Legacy
5062
-        if ('detail' in e) {
5063
-          sY = e.detail;
5064
-        }
5065
-        if ('wheelDelta' in e) {
5066
-          sY = -e.wheelDelta / 120;
5067
-        }
5068
-        if ('wheelDeltaY' in e) {
5069
-          sY = -e.wheelDeltaY / 120;
5070
-        }
5071
-        if ('wheelDeltaX' in e) {
5072
-          sX = -e.wheelDeltaX / 120;
5073
-        }
5074
-
5075
-        // side scrolling on FF with DOMMouseScroll
5076
-        if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5077
-          sX = sY;
5078
-          sY = 0;
5079
-        }
5080
-
5081
-        pX = sX * PIXEL_STEP;
5082
-        pY = sY * PIXEL_STEP;
5083
-
5084
-        if ('deltaY' in e) {
5085
-          pY = e.deltaY;
5086
-        }
5087
-        if ('deltaX' in e) {
5088
-          pX = e.deltaX;
5089
-        }
5090
-
5091
-        if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
5092
-          pX = pY;
5093
-          pY = 0;
5094
-        }
5095
-
5096
-        if ((pX || pY) && e.deltaMode) {
5097
-          if (e.deltaMode === 1) { // delta in LINE units
5098
-            pX *= LINE_HEIGHT;
5099
-            pY *= LINE_HEIGHT;
5100
-          } else { // delta in PAGE units
5101
-            pX *= PAGE_HEIGHT;
5102
-            pY *= PAGE_HEIGHT;
5103
-          }
5104
-        }
5105
-
5106
-        // Fall-back if spin cannot be determined
5107
-        if (pX && !sX) {
5108
-          sX = (pX < 1) ? -1 : 1;
5109
-        }
5110
-        if (pY && !sY) {
5111
-          sY = (pY < 1) ? -1 : 1;
5112
-        }
5113
-
5114
-        return {
5115
-          spinX: sX,
5116
-          spinY: sY,
5117
-          pixelX: pX,
5118
-          pixelY: pY,
5119
-        };
5120
-      },
5121
-      handleMouseEnter: function handleMouseEnter() {
5122
-        var swiper = this;
5123
-        swiper.mouseEntered = true;
5124
-      },
5125
-      handleMouseLeave: function handleMouseLeave() {
5126
-        var swiper = this;
5127
-        swiper.mouseEntered = false;
5128
-      },
5129
-      handle: function handle(event) {
5130
-        var e = event;
5131
-        var swiper = this;
5132
-        var params = swiper.params.mousewheel;
5133
-
5134
-        if (swiper.params.cssMode) {
5135
-          e.preventDefault();
5136
-        }
5137
-
5138
-        var target = swiper.$el;
5139
-        if (swiper.params.mousewheel.eventsTarged !== 'container') {
5140
-          target = $(swiper.params.mousewheel.eventsTarged);
5141
-        }
5142
-        if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) { return true; }
5143
-
5144
-        if (e.originalEvent) { e = e.originalEvent; } // jquery fix
5145
-        var delta = 0;
5146
-        var rtlFactor = swiper.rtlTranslate ? -1 : 1;
5147
-
5148
-        var data = Mousewheel.normalize(e);
5149
-
5150
-        if (params.forceToAxis) {
5151
-          if (swiper.isHorizontal()) {
5152
-            if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }
5153
-            else { return true; }
5154
-          } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }
5155
-          else { return true; }
5156
-        } else {
5157
-          delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5158
-        }
5159
-
5160
-        if (delta === 0) { return true; }
5161
-
5162
-        if (params.invert) { delta = -delta; }
5163
-
5164
-        if (!swiper.params.freeMode) {
5165
-          // Register the new event in a variable which stores the relevant data
5166
-          var newEvent = {
5167
-            time: Utils.now(),
5168
-            delta: Math.abs(delta),
5169
-            direction: Math.sign(delta),
5170
-            raw: event,
5171
-          };
5172
-
5173
-          // Keep the most recent events
5174
-          var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5175
-          if (recentWheelEvents.length >= 2) {
5176
-            recentWheelEvents.shift(); // only store the last N events
5177
-          }
5178
-          var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5179
-          recentWheelEvents.push(newEvent);
5180
-
5181
-          // If there is at least one previous recorded event:
5182
-          //   If direction has changed or
5183
-          //   if the scroll is quicker than the previous one:
5184
-          //     Animate the slider.
5185
-          // Else (this is the first time the wheel is moved):
5186
-          //     Animate the slider.
5187
-          if (prevEvent) {
5188
-            if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5189
-              swiper.mousewheel.animateSlider(newEvent);
5190
-            }
5191
-          } else {
5192
-            swiper.mousewheel.animateSlider(newEvent);
5193
-          }
5194
-
5195
-          // If it's time to release the scroll:
5196
-          //   Return now so you don't hit the preventDefault.
5197
-          if (swiper.mousewheel.releaseScroll(newEvent)) {
5198
-            return true;
5199
-          }
5200
-        } else {
5201
-          // Freemode or scrollContainer:
5202
-
5203
-          // If we recently snapped after a momentum scroll, then ignore wheel events
5204
-          // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5205
-          // or if it's a new scroll (larger delta or inverse sign as last event before
5206
-          // an end-of-momentum snap).
5207
-          var newEvent$1 = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
5208
-          var ref = swiper.mousewheel;
5209
-          var lastEventBeforeSnap = ref.lastEventBeforeSnap;
5210
-          var ignoreWheelEvents = lastEventBeforeSnap
5211
-            && newEvent$1.time < lastEventBeforeSnap.time + 500
5212
-            && newEvent$1.delta <= lastEventBeforeSnap.delta
5213
-            && newEvent$1.direction === lastEventBeforeSnap.direction;
5214
-          if (!ignoreWheelEvents) {
5215
-            swiper.mousewheel.lastEventBeforeSnap = undefined;
5216
-
5217
-            if (swiper.params.loop) {
5218
-              swiper.loopFix();
5219
-            }
5220
-            var position = swiper.getTranslate() + (delta * params.sensitivity);
5221
-            var wasBeginning = swiper.isBeginning;
5222
-            var wasEnd = swiper.isEnd;
5223
-
5224
-            if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }
5225
-            if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }
5226
-
5227
-            swiper.setTransition(0);
5228
-            swiper.setTranslate(position);
5229
-            swiper.updateProgress();
5230
-            swiper.updateActiveIndex();
5231
-            swiper.updateSlidesClasses();
5232
-
5233
-            if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
5234
-              swiper.updateSlidesClasses();
5235
-            }
5236
-
5237
-            if (swiper.params.freeModeSticky) {
5238
-              // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5239
-              // the end of a momentum scroll by storing recent (N=15?) wheel events.
5240
-              // 1. do all N events have decreasing or same (absolute value) delta?
5241
-              // 2. did all N events arrive in the last M (M=500?) msecs?
5242
-              // 3. does the earliest event have an (absolute value) delta that's
5243
-              //    at least P (P=1?) larger than the most recent event's delta?
5244
-              // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5245
-              // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
5246
-              // Snap immediately and ignore remaining wheel events in this scroll.
5247
-              // See comment above for "remaining wheel events in this scroll" determination.
5248
-              // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5249
-              clearTimeout(swiper.mousewheel.timeout);
5250
-              swiper.mousewheel.timeout = undefined;
5251
-              var recentWheelEvents$1 = swiper.mousewheel.recentWheelEvents;
5252
-              if (recentWheelEvents$1.length >= 15) {
5253
-                recentWheelEvents$1.shift(); // only store the last N events
5254
-              }
5255
-              var prevEvent$1 = recentWheelEvents$1.length ? recentWheelEvents$1[recentWheelEvents$1.length - 1] : undefined;
5256
-              var firstEvent = recentWheelEvents$1[0];
5257
-              recentWheelEvents$1.push(newEvent$1);
5258
-              if (prevEvent$1 && (newEvent$1.delta > prevEvent$1.delta || newEvent$1.direction !== prevEvent$1.direction)) {
5259
-                // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5260
-                recentWheelEvents$1.splice(0);
5261
-              } else if (recentWheelEvents$1.length >= 15
5262
-                  && newEvent$1.time - firstEvent.time < 500
5263
-                  && firstEvent.delta - newEvent$1.delta >= 1
5264
-                  && newEvent$1.delta <= 6
5265
-              ) {
5266
-                // We're at the end of the deceleration of a momentum scroll, so there's no need
5267
-                // to wait for more events. Snap ASAP on the next tick.
5268
-                // Also, because there's some remaining momentum we'll bias the snap in the
5269
-                // direction of the ongoing scroll because it's better UX for the scroll to snap
5270
-                // in the same direction as the scroll instead of reversing to snap.  Therefore,
5271
-                // if it's already scrolled more than 20% in the current direction, keep going.
5272
-                var snapToThreshold = delta > 0 ? 0.8 : 0.2;
5273
-                swiper.mousewheel.lastEventBeforeSnap = newEvent$1;
5274
-                recentWheelEvents$1.splice(0);
5275
-                swiper.mousewheel.timeout = Utils.nextTick(function () {
5276
-                  swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5277
-                }, 0); // no delay; move on next tick
5278
-              }
5279
-              if (!swiper.mousewheel.timeout) {
5280
-                // if we get here, then we haven't detected the end of a momentum scroll, so
5281
-                // we'll consider a scroll "complete" when there haven't been any wheel events
5282
-                // for 500ms.
5283
-                swiper.mousewheel.timeout = Utils.nextTick(function () {
5284
-                  var snapToThreshold = 0.5;
5285
-                  swiper.mousewheel.lastEventBeforeSnap = newEvent$1;
5286
-                  recentWheelEvents$1.splice(0);
5287
-                  swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5288
-                }, 500);
5289
-              }
5290
-            }
5291
-
5292
-            // Emit event
5293
-            if (!ignoreWheelEvents) { swiper.emit('scroll', e); }
5294
-
5295
-            // Stop autoplay
5296
-            if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }
5297
-            // Return page scroll on edge positions
5298
-            if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }
5299
-          }
5300
-        }
5301
-
5302
-        if (e.preventDefault) { e.preventDefault(); }
5303
-        else { e.returnValue = false; }
5304
-        return false;
5305
-      },
5306
-      animateSlider: function animateSlider(newEvent) {
5307
-        var swiper = this;
5308
-        // If the movement is NOT big enough and
5309
-        // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5310
-        //   Don't go any further (avoid insignificant scroll movement).
5311
-        if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
5312
-          // Return false as a default
5313
-          return true;
5314
-        }
5315
-        // If user is scrolling towards the end:
5316
-        //   If the slider hasn't hit the latest slide or
5317
-        //   if the slider is a loop and
5318
-        //   if the slider isn't moving right now:
5319
-        //     Go to next slide and
5320
-        //     emit a scroll event.
5321
-        // Else (the user is scrolling towards the beginning) and
5322
-        // if the slider hasn't hit the first slide or
5323
-        // if the slider is a loop and
5324
-        // if the slider isn't moving right now:
5325
-        //   Go to prev slide and
5326
-        //   emit a scroll event.
5327
-        if (newEvent.direction < 0) {
5328
-          if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5329
-            swiper.slideNext();
5330
-            swiper.emit('scroll', newEvent.raw);
5331
-          }
5332
-        } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5333
-          swiper.slidePrev();
5334
-          swiper.emit('scroll', newEvent.raw);
5335
-        }
5336
-        // If you got here is because an animation has been triggered so store the current time
5337
-        swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
5338
-        // Return false as a default
5339
-        return false;
5340
-      },
5341
-      releaseScroll: function releaseScroll(newEvent) {
5342
-        var swiper = this;
5343
-        var params = swiper.params.mousewheel;
5344
-        if (newEvent.direction < 0) {
5345
-          if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5346
-            // Return true to animate scroll on edges
5347
-            return true;
5348
-          }
5349
-        } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5350
-          // Return true to animate scroll on edges
5351
-          return true;
5352
-        }
5353
-        return false;
5354
-      },
5355
-      enable: function enable() {
5356
-        var swiper = this;
5357
-        var event = Mousewheel.event();
5358
-        if (swiper.params.cssMode) {
5359
-          swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
5360
-          return true;
5361
-        }
5362
-        if (!event) { return false; }
5363
-        if (swiper.mousewheel.enabled) { return false; }
5364
-        var target = swiper.$el;
5365
-        if (swiper.params.mousewheel.eventsTarged !== 'container') {
5366
-          target = $(swiper.params.mousewheel.eventsTarged);
5367
-        }
5368
-        target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
5369
-        target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
5370
-        target.on(event, swiper.mousewheel.handle);
5371
-        swiper.mousewheel.enabled = true;
5372
-        return true;
5373
-      },
5374
-      disable: function disable() {
5375
-        var swiper = this;
5376
-        var event = Mousewheel.event();
5377
-        if (swiper.params.cssMode) {
5378
-          swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
5379
-          return true;
5380
-        }
5381
-        if (!event) { return false; }
5382
-        if (!swiper.mousewheel.enabled) { return false; }
5383
-        var target = swiper.$el;
5384
-        if (swiper.params.mousewheel.eventsTarged !== 'container') {
5385
-          target = $(swiper.params.mousewheel.eventsTarged);
5386
-        }
5387
-        target.off(event, swiper.mousewheel.handle);
5388
-        swiper.mousewheel.enabled = false;
5389
-        return true;
5390
-      },
5391
-    };
5392
-
5393
-    var Mousewheel$1 = {
5394
-      name: 'mousewheel',
5395
-      params: {
5396
-        mousewheel: {
5397
-          enabled: false,
5398
-          releaseOnEdges: false,
5399
-          invert: false,
5400
-          forceToAxis: false,
5401
-          sensitivity: 1,
5402
-          eventsTarged: 'container',
5403
-        },
5404
-      },
5405
-      create: function create() {
5406
-        var swiper = this;
5407
-        Utils.extend(swiper, {
5408
-          mousewheel: {
5409
-            enabled: false,
5410
-            enable: Mousewheel.enable.bind(swiper),
5411
-            disable: Mousewheel.disable.bind(swiper),
5412
-            handle: Mousewheel.handle.bind(swiper),
5413
-            handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
5414
-            handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
5415
-            animateSlider: Mousewheel.animateSlider.bind(swiper),
5416
-            releaseScroll: Mousewheel.releaseScroll.bind(swiper),
5417
-            lastScrollTime: Utils.now(),
5418
-            lastEventBeforeSnap: undefined,
5419
-            recentWheelEvents: [],
5420
-          },
5421
-        });
5422
-      },
5423
-      on: {
5424
-        init: function init() {
5425
-          var swiper = this;
5426
-          if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5427
-            swiper.mousewheel.disable();
5428
-          }
5429
-          if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }
5430
-        },
5431
-        destroy: function destroy() {
5432
-          var swiper = this;
5433
-          if (swiper.params.cssMode) {
5434
-            swiper.mousewheel.enable();
5435
-          }
5436
-          if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }
5437
-        },
5438
-      },
5439
-    };
5440
-
5441
-    var Navigation = {
5442
-      update: function update() {
5443
-        // Update Navigation Buttons
5444
-        var swiper = this;
5445
-        var params = swiper.params.navigation;
5446
-
5447
-        if (swiper.params.loop) { return; }
5448
-        var ref = swiper.navigation;
5449
-        var $nextEl = ref.$nextEl;
5450
-        var $prevEl = ref.$prevEl;
5451
-
5452
-        if ($prevEl && $prevEl.length > 0) {
5453
-          if (swiper.isBeginning) {
5454
-            $prevEl.addClass(params.disabledClass);
5455
-          } else {
5456
-            $prevEl.removeClass(params.disabledClass);
5457
-          }
5458
-          $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5459
-        }
5460
-        if ($nextEl && $nextEl.length > 0) {
5461
-          if (swiper.isEnd) {
5462
-            $nextEl.addClass(params.disabledClass);
5463
-          } else {
5464
-            $nextEl.removeClass(params.disabledClass);
5465
-          }
5466
-          $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5467
-        }
5468
-      },
5469
-      onPrevClick: function onPrevClick(e) {
5470
-        var swiper = this;
5471
-        e.preventDefault();
5472
-        if (swiper.isBeginning && !swiper.params.loop) { return; }
5473
-        swiper.slidePrev();
5474
-      },
5475
-      onNextClick: function onNextClick(e) {
5476
-        var swiper = this;
5477
-        e.preventDefault();
5478
-        if (swiper.isEnd && !swiper.params.loop) { return; }
5479
-        swiper.slideNext();
5480
-      },
5481
-      init: function init() {
5482
-        var swiper = this;
5483
-        var params = swiper.params.navigation;
5484
-        if (!(params.nextEl || params.prevEl)) { return; }
5485
-
5486
-        var $nextEl;
5487
-        var $prevEl;
5488
-        if (params.nextEl) {
5489
-          $nextEl = $(params.nextEl);
5490
-          if (
5491
-            swiper.params.uniqueNavElements
5492
-            && typeof params.nextEl === 'string'
5493
-            && $nextEl.length > 1
5494
-            && swiper.$el.find(params.nextEl).length === 1
5495
-          ) {
5496
-            $nextEl = swiper.$el.find(params.nextEl);
5497
-          }
5498
-        }
5499
-        if (params.prevEl) {
5500
-          $prevEl = $(params.prevEl);
5501
-          if (
5502
-            swiper.params.uniqueNavElements
5503
-            && typeof params.prevEl === 'string'
5504
-            && $prevEl.length > 1
5505
-            && swiper.$el.find(params.prevEl).length === 1
5506
-          ) {
5507
-            $prevEl = swiper.$el.find(params.prevEl);
5508
-          }
5509
-        }
5510
-
5511
-        if ($nextEl && $nextEl.length > 0) {
5512
-          $nextEl.on('click', swiper.navigation.onNextClick);
5513
-        }
5514
-        if ($prevEl && $prevEl.length > 0) {
5515
-          $prevEl.on('click', swiper.navigation.onPrevClick);
5516
-        }
5517
-
5518
-        Utils.extend(swiper.navigation, {
5519
-          $nextEl: $nextEl,
5520
-          nextEl: $nextEl && $nextEl[0],
5521
-          $prevEl: $prevEl,
5522
-          prevEl: $prevEl && $prevEl[0],
5523
-        });
5524
-      },
5525
-      destroy: function destroy() {
5526
-        var swiper = this;
5527
-        var ref = swiper.navigation;
5528
-        var $nextEl = ref.$nextEl;
5529
-        var $prevEl = ref.$prevEl;
5530
-        if ($nextEl && $nextEl.length) {
5531
-          $nextEl.off('click', swiper.navigation.onNextClick);
5532
-          $nextEl.removeClass(swiper.params.navigation.disabledClass);
5533
-        }
5534
-        if ($prevEl && $prevEl.length) {
5535
-          $prevEl.off('click', swiper.navigation.onPrevClick);
5536
-          $prevEl.removeClass(swiper.params.navigation.disabledClass);
5537
-        }
5538
-      },
5539
-    };
5540
-
5541
-    var Navigation$1 = {
5542
-      name: 'navigation',
5543
-      params: {
5544
-        navigation: {
5545
-          nextEl: null,
5546
-          prevEl: null,
5547
-
5548
-          hideOnClick: false,
5549
-          disabledClass: 'swiper-button-disabled',
5550
-          hiddenClass: 'swiper-button-hidden',
5551
-          lockClass: 'swiper-button-lock',
5552
-        },
5553
-      },
5554
-      create: function create() {
5555
-        var swiper = this;
5556
-        Utils.extend(swiper, {
5557
-          navigation: {
5558
-            init: Navigation.init.bind(swiper),
5559
-            update: Navigation.update.bind(swiper),
5560
-            destroy: Navigation.destroy.bind(swiper),
5561
-            onNextClick: Navigation.onNextClick.bind(swiper),
5562
-            onPrevClick: Navigation.onPrevClick.bind(swiper),
5563
-          },
5564
-        });
5565
-      },
5566
-      on: {
5567
-        init: function init() {
5568
-          var swiper = this;
5569
-          swiper.navigation.init();
5570
-          swiper.navigation.update();
5571
-        },
5572
-        toEdge: function toEdge() {
5573
-          var swiper = this;
5574
-          swiper.navigation.update();
5575
-        },
5576
-        fromEdge: function fromEdge() {
5577
-          var swiper = this;
5578
-          swiper.navigation.update();
5579
-        },
5580
-        destroy: function destroy() {
5581
-          var swiper = this;
5582
-          swiper.navigation.destroy();
5583
-        },
5584
-        click: function click(e) {
5585
-          var swiper = this;
5586
-          var ref = swiper.navigation;
5587
-          var $nextEl = ref.$nextEl;
5588
-          var $prevEl = ref.$prevEl;
5589
-          if (
5590
-            swiper.params.navigation.hideOnClick
5591
-            && !$(e.target).is($prevEl)
5592
-            && !$(e.target).is($nextEl)
5593
-          ) {
5594
-            var isHidden;
5595
-            if ($nextEl) {
5596
-              isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
5597
-            } else if ($prevEl) {
5598
-              isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
5599
-            }
5600
-            if (isHidden === true) {
5601
-              swiper.emit('navigationShow', swiper);
5602
-            } else {
5603
-              swiper.emit('navigationHide', swiper);
5604
-            }
5605
-            if ($nextEl) {
5606
-              $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
5607
-            }
5608
-            if ($prevEl) {
5609
-              $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
5610
-            }
5611
-          }
5612
-        },
5613
-      },
5614
-    };
5615
-
5616
-    var Pagination = {
5617
-      update: function update() {
5618
-        // Render || Update Pagination bullets/items
5619
-        var swiper = this;
5620
-        var rtl = swiper.rtl;
5621
-        var params = swiper.params.pagination;
5622
-        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5623
-        var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5624
-        var $el = swiper.pagination.$el;
5625
-        // Current/Total
5626
-        var current;
5627
-        var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5628
-        if (swiper.params.loop) {
5629
-          current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
5630
-          if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
5631
-            current -= (slidesLength - (swiper.loopedSlides * 2));
5632
-          }
5633
-          if (current > total - 1) { current -= total; }
5634
-          if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }
5635
-        } else if (typeof swiper.snapIndex !== 'undefined') {
5636
-          current = swiper.snapIndex;
5637
-        } else {
5638
-          current = swiper.activeIndex || 0;
5639
-        }
5640
-        // Types
5641
-        if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
5642
-          var bullets = swiper.pagination.bullets;
5643
-          var firstIndex;
5644
-          var lastIndex;
5645
-          var midIndex;
5646
-          if (params.dynamicBullets) {
5647
-            swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
5648
-            $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px"));
5649
-            if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
5650
-              swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
5651
-              if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
5652
-                swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
5653
-              } else if (swiper.pagination.dynamicBulletIndex < 0) {
5654
-                swiper.pagination.dynamicBulletIndex = 0;
5655
-              }
5656
-            }
5657
-            firstIndex = current - swiper.pagination.dynamicBulletIndex;
5658
-            lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
5659
-            midIndex = (lastIndex + firstIndex) / 2;
5660
-          }
5661
-          bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main"));
5662
-          if ($el.length > 1) {
5663
-            bullets.each(function (index, bullet) {
5664
-              var $bullet = $(bullet);
5665
-              var bulletIndex = $bullet.index();
5666
-              if (bulletIndex === current) {
5667
-                $bullet.addClass(params.bulletActiveClass);
5668
-              }
5669
-              if (params.dynamicBullets) {
5670
-                if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
5671
-                  $bullet.addClass(((params.bulletActiveClass) + "-main"));
5672
-                }
5673
-                if (bulletIndex === firstIndex) {
5674
-                  $bullet
5675
-                    .prev()
5676
-                    .addClass(((params.bulletActiveClass) + "-prev"))
5677
-                    .prev()
5678
-                    .addClass(((params.bulletActiveClass) + "-prev-prev"));
5679
-                }
5680
-                if (bulletIndex === lastIndex) {
5681
-                  $bullet
5682
-                    .next()
5683
-                    .addClass(((params.bulletActiveClass) + "-next"))
5684
-                    .next()
5685
-                    .addClass(((params.bulletActiveClass) + "-next-next"));
5686
-                }
5687
-              }
5688
-            });
5689
-          } else {
5690
-            var $bullet = bullets.eq(current);
5691
-            var bulletIndex = $bullet.index();
5692
-            $bullet.addClass(params.bulletActiveClass);
5693
-            if (params.dynamicBullets) {
5694
-              var $firstDisplayedBullet = bullets.eq(firstIndex);
5695
-              var $lastDisplayedBullet = bullets.eq(lastIndex);
5696
-              for (var i = firstIndex; i <= lastIndex; i += 1) {
5697
-                bullets.eq(i).addClass(((params.bulletActiveClass) + "-main"));
5698
-              }
5699
-              if (swiper.params.loop) {
5700
-                if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
5701
-                  for (var i$1 = params.dynamicMainBullets; i$1 >= 0; i$1 -= 1) {
5702
-                    bullets.eq(bullets.length - i$1).addClass(((params.bulletActiveClass) + "-main"));
5703
-                  }
5704
-                  bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(((params.bulletActiveClass) + "-prev"));
5705
-                } else {
5706
-                  $firstDisplayedBullet
5707
-                    .prev()
5708
-                    .addClass(((params.bulletActiveClass) + "-prev"))
5709
-                    .prev()
5710
-                    .addClass(((params.bulletActiveClass) + "-prev-prev"));
5711
-                  $lastDisplayedBullet
5712
-                    .next()
5713
-                    .addClass(((params.bulletActiveClass) + "-next"))
5714
-                    .next()
5715
-                    .addClass(((params.bulletActiveClass) + "-next-next"));
5716
-                }
5717
-              } else {
5718
-                $firstDisplayedBullet
5719
-                  .prev()
5720
-                  .addClass(((params.bulletActiveClass) + "-prev"))
5721
-                  .prev()
5722
-                  .addClass(((params.bulletActiveClass) + "-prev-prev"));
5723
-                $lastDisplayedBullet
5724
-                  .next()
5725
-                  .addClass(((params.bulletActiveClass) + "-next"))
5726
-                  .next()
5727
-                  .addClass(((params.bulletActiveClass) + "-next-next"));
5728
-              }
5729
-            }
5730
-          }
5731
-          if (params.dynamicBullets) {
5732
-            var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
5733
-            var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
5734
-            var offsetProp = rtl ? 'right' : 'left';
5735
-            bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px"));
5736
-          }
5737
-        }
5738
-        if (params.type === 'fraction') {
5739
-          $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1));
5740
-          $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total));
5741
-        }
5742
-        if (params.type === 'progressbar') {
5743
-          var progressbarDirection;
5744
-          if (params.progressbarOpposite) {
5745
-            progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
5746
-          } else {
5747
-            progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
5748
-          }
5749
-          var scale = (current + 1) / total;
5750
-          var scaleX = 1;
5751
-          var scaleY = 1;
5752
-          if (progressbarDirection === 'horizontal') {
5753
-            scaleX = scale;
5754
-          } else {
5755
-            scaleY = scale;
5756
-          }
5757
-          $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed);
5758
-        }
5759
-        if (params.type === 'custom' && params.renderCustom) {
5760
-          $el.html(params.renderCustom(swiper, current + 1, total));
5761
-          swiper.emit('paginationRender', swiper, $el[0]);
5762
-        } else {
5763
-          swiper.emit('paginationUpdate', swiper, $el[0]);
5764
-        }
5765
-        $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5766
-      },
5767
-      render: function render() {
5768
-        // Render Container
5769
-        var swiper = this;
5770
-        var params = swiper.params.pagination;
5771
-        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5772
-        var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5773
-
5774
-        var $el = swiper.pagination.$el;
5775
-        var paginationHTML = '';
5776
-        if (params.type === 'bullets') {
5777
-          var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5778
-          for (var i = 0; i < numberOfBullets; i += 1) {
5779
-            if (params.renderBullet) {
5780
-              paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
5781
-            } else {
5782
-              paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">";
5783
-            }
5784
-          }
5785
-          $el.html(paginationHTML);
5786
-          swiper.pagination.bullets = $el.find(("." + (params.bulletClass)));
5787
-        }
5788
-        if (params.type === 'fraction') {
5789
-          if (params.renderFraction) {
5790
-            paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
5791
-          } else {
5792
-            paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>"
5793
-            + ' / '
5794
-            + "<span class=\"" + (params.totalClass) + "\"></span>";
5795
-          }
5796
-          $el.html(paginationHTML);
5797
-        }
5798
-        if (params.type === 'progressbar') {
5799
-          if (params.renderProgressbar) {
5800
-            paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
5801
-          } else {
5802
-            paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>";
5803
-          }
5804
-          $el.html(paginationHTML);
5805
-        }
5806
-        if (params.type !== 'custom') {
5807
-          swiper.emit('paginationRender', swiper.pagination.$el[0]);
5808
-        }
5809
-      },
5810
-      init: function init() {
5811
-        var swiper = this;
5812
-        var params = swiper.params.pagination;
5813
-        if (!params.el) { return; }
5814
-
5815
-        var $el = $(params.el);
5816
-        if ($el.length === 0) { return; }
5817
-
5818
-        if (
5819
-          swiper.params.uniqueNavElements
5820
-          && typeof params.el === 'string'
5821
-          && $el.length > 1
5822
-          && swiper.$el.find(params.el).length === 1
5823
-        ) {
5824
-          $el = swiper.$el.find(params.el);
5825
-        }
5826
-
5827
-        if (params.type === 'bullets' && params.clickable) {
5828
-          $el.addClass(params.clickableClass);
5829
-        }
5830
-
5831
-        $el.addClass(params.modifierClass + params.type);
5832
-
5833
-        if (params.type === 'bullets' && params.dynamicBullets) {
5834
-          $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic"));
5835
-          swiper.pagination.dynamicBulletIndex = 0;
5836
-          if (params.dynamicMainBullets < 1) {
5837
-            params.dynamicMainBullets = 1;
5838
-          }
5839
-        }
5840
-        if (params.type === 'progressbar' && params.progressbarOpposite) {
5841
-          $el.addClass(params.progressbarOppositeClass);
5842
-        }
5843
-
5844
-        if (params.clickable) {
5845
-          $el.on('click', ("." + (params.bulletClass)), function onClick(e) {
5846
-            e.preventDefault();
5847
-            var index = $(this).index() * swiper.params.slidesPerGroup;
5848
-            if (swiper.params.loop) { index += swiper.loopedSlides; }
5849
-            swiper.slideTo(index);
5850
-          });
5851
-        }
5852
-
5853
-        Utils.extend(swiper.pagination, {
5854
-          $el: $el,
5855
-          el: $el[0],
5856
-        });
5857
-      },
5858
-      destroy: function destroy() {
5859
-        var swiper = this;
5860
-        var params = swiper.params.pagination;
5861
-        if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5862
-        var $el = swiper.pagination.$el;
5863
-
5864
-        $el.removeClass(params.hiddenClass);
5865
-        $el.removeClass(params.modifierClass + params.type);
5866
-        if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }
5867
-        if (params.clickable) {
5868
-          $el.off('click', ("." + (params.bulletClass)));
5869
-        }
5870
-      },
5871
-    };
5872
-
5873
-    var Pagination$1 = {
5874
-      name: 'pagination',
5875
-      params: {
5876
-        pagination: {
5877
-          el: null,
5878
-          bulletElement: 'span',
5879
-          clickable: false,
5880
-          hideOnClick: false,
5881
-          renderBullet: null,
5882
-          renderProgressbar: null,
5883
-          renderFraction: null,
5884
-          renderCustom: null,
5885
-          progressbarOpposite: false,
5886
-          type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
5887
-          dynamicBullets: false,
5888
-          dynamicMainBullets: 1,
5889
-          formatFractionCurrent: function (number) { return number; },
5890
-          formatFractionTotal: function (number) { return number; },
5891
-          bulletClass: 'swiper-pagination-bullet',
5892
-          bulletActiveClass: 'swiper-pagination-bullet-active',
5893
-          modifierClass: 'swiper-pagination-', // NEW
5894
-          currentClass: 'swiper-pagination-current',
5895
-          totalClass: 'swiper-pagination-total',
5896
-          hiddenClass: 'swiper-pagination-hidden',
5897
-          progressbarFillClass: 'swiper-pagination-progressbar-fill',
5898
-          progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
5899
-          clickableClass: 'swiper-pagination-clickable', // NEW
5900
-          lockClass: 'swiper-pagination-lock',
5901
-        },
5902
-      },
5903
-      create: function create() {
5904
-        var swiper = this;
5905
-        Utils.extend(swiper, {
5906
-          pagination: {
5907
-            init: Pagination.init.bind(swiper),
5908
-            render: Pagination.render.bind(swiper),
5909
-            update: Pagination.update.bind(swiper),
5910
-            destroy: Pagination.destroy.bind(swiper),
5911
-            dynamicBulletIndex: 0,
5912
-          },
5913
-        });
5914
-      },
5915
-      on: {
5916
-        init: function init() {
5917
-          var swiper = this;
5918
-          swiper.pagination.init();
5919
-          swiper.pagination.render();
5920
-          swiper.pagination.update();
5921
-        },
5922
-        activeIndexChange: function activeIndexChange() {
5923
-          var swiper = this;
5924
-          if (swiper.params.loop) {
5925
-            swiper.pagination.update();
5926
-          } else if (typeof swiper.snapIndex === 'undefined') {
5927
-            swiper.pagination.update();
5928
-          }
5929
-        },
5930
-        snapIndexChange: function snapIndexChange() {
5931
-          var swiper = this;
5932
-          if (!swiper.params.loop) {
5933
-            swiper.pagination.update();
5934
-          }
5935
-        },
5936
-        slidesLengthChange: function slidesLengthChange() {
5937
-          var swiper = this;
5938
-          if (swiper.params.loop) {
5939
-            swiper.pagination.render();
5940
-            swiper.pagination.update();
5941
-          }
5942
-        },
5943
-        snapGridLengthChange: function snapGridLengthChange() {
5944
-          var swiper = this;
5945
-          if (!swiper.params.loop) {
5946
-            swiper.pagination.render();
5947
-            swiper.pagination.update();
5948
-          }
5949
-        },
5950
-        destroy: function destroy() {
5951
-          var swiper = this;
5952
-          swiper.pagination.destroy();
5953
-        },
5954
-        click: function click(e) {
5955
-          var swiper = this;
5956
-          if (
5957
-            swiper.params.pagination.el
5958
-            && swiper.params.pagination.hideOnClick
5959
-            && swiper.pagination.$el.length > 0
5960
-            && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
5961
-          ) {
5962
-            var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
5963
-            if (isHidden === true) {
5964
-              swiper.emit('paginationShow', swiper);
5965
-            } else {
5966
-              swiper.emit('paginationHide', swiper);
5967
-            }
5968
-            swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
5969
-          }
5970
-        },
5971
-      },
5972
-    };
5973
-
5974
-    var Scrollbar = {
5975
-      setTranslate: function setTranslate() {
5976
-        var swiper = this;
5977
-        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
5978
-        var scrollbar = swiper.scrollbar;
5979
-        var rtl = swiper.rtlTranslate;
5980
-        var progress = swiper.progress;
5981
-        var dragSize = scrollbar.dragSize;
5982
-        var trackSize = scrollbar.trackSize;
5983
-        var $dragEl = scrollbar.$dragEl;
5984
-        var $el = scrollbar.$el;
5985
-        var params = swiper.params.scrollbar;
5986
-
5987
-        var newSize = dragSize;
5988
-        var newPos = (trackSize - dragSize) * progress;
5989
-        if (rtl) {
5990
-          newPos = -newPos;
5991
-          if (newPos > 0) {
5992
-            newSize = dragSize - newPos;
5993
-            newPos = 0;
5994
-          } else if (-newPos + dragSize > trackSize) {
5995
-            newSize = trackSize + newPos;
5996
-          }
5997
-        } else if (newPos < 0) {
5998
-          newSize = dragSize + newPos;
5999
-          newPos = 0;
6000
-        } else if (newPos + dragSize > trackSize) {
6001
-          newSize = trackSize - newPos;
6002
-        }
6003
-        if (swiper.isHorizontal()) {
6004
-          $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)"));
6005
-          $dragEl[0].style.width = newSize + "px";
6006
-        } else {
6007
-          $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)"));
6008
-          $dragEl[0].style.height = newSize + "px";
6009
-        }
6010
-        if (params.hide) {
6011
-          clearTimeout(swiper.scrollbar.timeout);
6012
-          $el[0].style.opacity = 1;
6013
-          swiper.scrollbar.timeout = setTimeout(function () {
6014
-            $el[0].style.opacity = 0;
6015
-            $el.transition(400);
6016
-          }, 1000);
6017
-        }
6018
-      },
6019
-      setTransition: function setTransition(duration) {
6020
-        var swiper = this;
6021
-        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
6022
-        swiper.scrollbar.$dragEl.transition(duration);
6023
-      },
6024
-      updateSize: function updateSize() {
6025
-        var swiper = this;
6026
-        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
6027
-
6028
-        var scrollbar = swiper.scrollbar;
6029
-        var $dragEl = scrollbar.$dragEl;
6030
-        var $el = scrollbar.$el;
6031
-
6032
-        $dragEl[0].style.width = '';
6033
-        $dragEl[0].style.height = '';
6034
-        var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
6035
-
6036
-        var divider = swiper.size / swiper.virtualSize;
6037
-        var moveDivider = divider * (trackSize / swiper.size);
6038
-        var dragSize;
6039
-        if (swiper.params.scrollbar.dragSize === 'auto') {
6040
-          dragSize = trackSize * divider;
6041
-        } else {
6042
-          dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6043
-        }
6044
-
6045
-        if (swiper.isHorizontal()) {
6046
-          $dragEl[0].style.width = dragSize + "px";
6047
-        } else {
6048
-          $dragEl[0].style.height = dragSize + "px";
6049
-        }
6050
-
6051
-        if (divider >= 1) {
6052
-          $el[0].style.display = 'none';
6053
-        } else {
6054
-          $el[0].style.display = '';
6055
-        }
6056
-        if (swiper.params.scrollbar.hide) {
6057
-          $el[0].style.opacity = 0;
6058
-        }
6059
-        Utils.extend(scrollbar, {
6060
-          trackSize: trackSize,
6061
-          divider: divider,
6062
-          moveDivider: moveDivider,
6063
-          dragSize: dragSize,
6064
-        });
6065
-        scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
6066
-      },
6067
-      getPointerPosition: function getPointerPosition(e) {
6068
-        var swiper = this;
6069
-        if (swiper.isHorizontal()) {
6070
-          return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
6071
-        }
6072
-        return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
6073
-      },
6074
-      setDragPosition: function setDragPosition(e) {
6075
-        var swiper = this;
6076
-        var scrollbar = swiper.scrollbar;
6077
-        var rtl = swiper.rtlTranslate;
6078
-        var $el = scrollbar.$el;
6079
-        var dragSize = scrollbar.dragSize;
6080
-        var trackSize = scrollbar.trackSize;
6081
-        var dragStartPos = scrollbar.dragStartPos;
6082
-
6083
-        var positionRatio;
6084
-        positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
6085
-          - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6086
-        positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6087
-        if (rtl) {
6088
-          positionRatio = 1 - positionRatio;
6089
-        }
6090
-
6091
-        var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
6092
-
6093
-        swiper.updateProgress(position);
6094
-        swiper.setTranslate(position);
6095
-        swiper.updateActiveIndex();
6096
-        swiper.updateSlidesClasses();
6097
-      },
6098
-      onDragStart: function onDragStart(e) {
6099
-        var swiper = this;
6100
-        var params = swiper.params.scrollbar;
6101
-        var scrollbar = swiper.scrollbar;
6102
-        var $wrapperEl = swiper.$wrapperEl;
6103
-        var $el = scrollbar.$el;
6104
-        var $dragEl = scrollbar.$dragEl;
6105
-        swiper.scrollbar.isTouched = true;
6106
-        swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
6107
-          ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6108
-        e.preventDefault();
6109
-        e.stopPropagation();
6110
-
6111
-        $wrapperEl.transition(100);
6112
-        $dragEl.transition(100);
6113
-        scrollbar.setDragPosition(e);
6114
-
6115
-        clearTimeout(swiper.scrollbar.dragTimeout);
6116
-
6117
-        $el.transition(0);
6118
-        if (params.hide) {
6119
-          $el.css('opacity', 1);
6120
-        }
6121
-        if (swiper.params.cssMode) {
6122
-          swiper.$wrapperEl.css('scroll-snap-type', 'none');
6123
-        }
6124
-        swiper.emit('scrollbarDragStart', e);
6125
-      },
6126
-      onDragMove: function onDragMove(e) {
6127
-        var swiper = this;
6128
-        var scrollbar = swiper.scrollbar;
6129
-        var $wrapperEl = swiper.$wrapperEl;
6130
-        var $el = scrollbar.$el;
6131
-        var $dragEl = scrollbar.$dragEl;
6132
-
6133
-        if (!swiper.scrollbar.isTouched) { return; }
6134
-        if (e.preventDefault) { e.preventDefault(); }
6135
-        else { e.returnValue = false; }
6136
-        scrollbar.setDragPosition(e);
6137
-        $wrapperEl.transition(0);
6138
-        $el.transition(0);
6139
-        $dragEl.transition(0);
6140
-        swiper.emit('scrollbarDragMove', e);
6141
-      },
6142
-      onDragEnd: function onDragEnd(e) {
6143
-        var swiper = this;
6144
-
6145
-        var params = swiper.params.scrollbar;
6146
-        var scrollbar = swiper.scrollbar;
6147
-        var $wrapperEl = swiper.$wrapperEl;
6148
-        var $el = scrollbar.$el;
6149
-
6150
-        if (!swiper.scrollbar.isTouched) { return; }
6151
-        swiper.scrollbar.isTouched = false;
6152
-        if (swiper.params.cssMode) {
6153
-          swiper.$wrapperEl.css('scroll-snap-type', '');
6154
-          $wrapperEl.transition('');
6155
-        }
6156
-        if (params.hide) {
6157
-          clearTimeout(swiper.scrollbar.dragTimeout);
6158
-          swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
6159
-            $el.css('opacity', 0);
6160
-            $el.transition(400);
6161
-          }, 1000);
6162
-        }
6163
-        swiper.emit('scrollbarDragEnd', e);
6164
-        if (params.snapOnRelease) {
6165
-          swiper.slideToClosest();
6166
-        }
6167
-      },
6168
-      enableDraggable: function enableDraggable() {
6169
-        var swiper = this;
6170
-        if (!swiper.params.scrollbar.el) { return; }
6171
-        var scrollbar = swiper.scrollbar;
6172
-        var touchEventsTouch = swiper.touchEventsTouch;
6173
-        var touchEventsDesktop = swiper.touchEventsDesktop;
6174
-        var params = swiper.params;
6175
-        var $el = scrollbar.$el;
6176
-        var target = $el[0];
6177
-        var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
6178
-        var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
6179
-        if (!Support.touch) {
6180
-          target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6181
-          doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6182
-          doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6183
-        } else {
6184
-          target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6185
-          target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6186
-          target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6187
-        }
6188
-      },
6189
-      disableDraggable: function disableDraggable() {
6190
-        var swiper = this;
6191
-        if (!swiper.params.scrollbar.el) { return; }
6192
-        var scrollbar = swiper.scrollbar;
6193
-        var touchEventsTouch = swiper.touchEventsTouch;
6194
-        var touchEventsDesktop = swiper.touchEventsDesktop;
6195
-        var params = swiper.params;
6196
-        var $el = scrollbar.$el;
6197
-        var target = $el[0];
6198
-        var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
6199
-        var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
6200
-        if (!Support.touch) {
6201
-          target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6202
-          doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6203
-          doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6204
-        } else {
6205
-          target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6206
-          target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6207
-          target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6208
-        }
6209
-      },
6210
-      init: function init() {
6211
-        var swiper = this;
6212
-        if (!swiper.params.scrollbar.el) { return; }
6213
-        var scrollbar = swiper.scrollbar;
6214
-        var $swiperEl = swiper.$el;
6215
-        var params = swiper.params.scrollbar;
6216
-
6217
-        var $el = $(params.el);
6218
-        if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6219
-          $el = $swiperEl.find(params.el);
6220
-        }
6221
-
6222
-        var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass)));
6223
-        if ($dragEl.length === 0) {
6224
-          $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>"));
6225
-          $el.append($dragEl);
6226
-        }
6227
-
6228
-        Utils.extend(scrollbar, {
6229
-          $el: $el,
6230
-          el: $el[0],
6231
-          $dragEl: $dragEl,
6232
-          dragEl: $dragEl[0],
6233
-        });
6234
-
6235
-        if (params.draggable) {
6236
-          scrollbar.enableDraggable();
6237
-        }
6238
-      },
6239
-      destroy: function destroy() {
6240
-        var swiper = this;
6241
-        swiper.scrollbar.disableDraggable();
6242
-      },
6243
-    };
6244
-
6245
-    var Scrollbar$1 = {
6246
-      name: 'scrollbar',
6247
-      params: {
6248
-        scrollbar: {
6249
-          el: null,
6250
-          dragSize: 'auto',
6251
-          hide: false,
6252
-          draggable: false,
6253
-          snapOnRelease: true,
6254
-          lockClass: 'swiper-scrollbar-lock',
6255
-          dragClass: 'swiper-scrollbar-drag',
6256
-        },
6257
-      },
6258
-      create: function create() {
6259
-        var swiper = this;
6260
-        Utils.extend(swiper, {
6261
-          scrollbar: {
6262
-            init: Scrollbar.init.bind(swiper),
6263
-            destroy: Scrollbar.destroy.bind(swiper),
6264
-            updateSize: Scrollbar.updateSize.bind(swiper),
6265
-            setTranslate: Scrollbar.setTranslate.bind(swiper),
6266
-            setTransition: Scrollbar.setTransition.bind(swiper),
6267
-            enableDraggable: Scrollbar.enableDraggable.bind(swiper),
6268
-            disableDraggable: Scrollbar.disableDraggable.bind(swiper),
6269
-            setDragPosition: Scrollbar.setDragPosition.bind(swiper),
6270
-            getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
6271
-            onDragStart: Scrollbar.onDragStart.bind(swiper),
6272
-            onDragMove: Scrollbar.onDragMove.bind(swiper),
6273
-            onDragEnd: Scrollbar.onDragEnd.bind(swiper),
6274
-            isTouched: false,
6275
-            timeout: null,
6276
-            dragTimeout: null,
6277
-          },
6278
-        });
6279
-      },
6280
-      on: {
6281
-        init: function init() {
6282
-          var swiper = this;
6283
-          swiper.scrollbar.init();
6284
-          swiper.scrollbar.updateSize();
6285
-          swiper.scrollbar.setTranslate();
6286
-        },
6287
-        update: function update() {
6288
-          var swiper = this;
6289
-          swiper.scrollbar.updateSize();
6290
-        },
6291
-        resize: function resize() {
6292
-          var swiper = this;
6293
-          swiper.scrollbar.updateSize();
6294
-        },
6295
-        observerUpdate: function observerUpdate() {
6296
-          var swiper = this;
6297
-          swiper.scrollbar.updateSize();
6298
-        },
6299
-        setTranslate: function setTranslate() {
6300
-          var swiper = this;
6301
-          swiper.scrollbar.setTranslate();
6302
-        },
6303
-        setTransition: function setTransition(duration) {
6304
-          var swiper = this;
6305
-          swiper.scrollbar.setTransition(duration);
6306
-        },
6307
-        destroy: function destroy() {
6308
-          var swiper = this;
6309
-          swiper.scrollbar.destroy();
6310
-        },
6311
-      },
6312
-    };
6313
-
6314
-    var Parallax = {
6315
-      setTransform: function setTransform(el, progress) {
6316
-        var swiper = this;
6317
-        var rtl = swiper.rtl;
6318
-
6319
-        var $el = $(el);
6320
-        var rtlFactor = rtl ? -1 : 1;
6321
-
6322
-        var p = $el.attr('data-swiper-parallax') || '0';
6323
-        var x = $el.attr('data-swiper-parallax-x');
6324
-        var y = $el.attr('data-swiper-parallax-y');
6325
-        var scale = $el.attr('data-swiper-parallax-scale');
6326
-        var opacity = $el.attr('data-swiper-parallax-opacity');
6327
-
6328
-        if (x || y) {
6329
-          x = x || '0';
6330
-          y = y || '0';
6331
-        } else if (swiper.isHorizontal()) {
6332
-          x = p;
6333
-          y = '0';
6334
-        } else {
6335
-          y = p;
6336
-          x = '0';
6337
-        }
6338
-
6339
-        if ((x).indexOf('%') >= 0) {
6340
-          x = (parseInt(x, 10) * progress * rtlFactor) + "%";
6341
-        } else {
6342
-          x = (x * progress * rtlFactor) + "px";
6343
-        }
6344
-        if ((y).indexOf('%') >= 0) {
6345
-          y = (parseInt(y, 10) * progress) + "%";
6346
-        } else {
6347
-          y = (y * progress) + "px";
6348
-        }
6349
-
6350
-        if (typeof opacity !== 'undefined' && opacity !== null) {
6351
-          var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
6352
-          $el[0].style.opacity = currentOpacity;
6353
-        }
6354
-        if (typeof scale === 'undefined' || scale === null) {
6355
-          $el.transform(("translate3d(" + x + ", " + y + ", 0px)"));
6356
-        } else {
6357
-          var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
6358
-          $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")"));
6359
-        }
6360
-      },
6361
-      setTranslate: function setTranslate() {
6362
-        var swiper = this;
6363
-        var $el = swiper.$el;
6364
-        var slides = swiper.slides;
6365
-        var progress = swiper.progress;
6366
-        var snapGrid = swiper.snapGrid;
6367
-        $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6368
-          .each(function (index, el) {
6369
-            swiper.parallax.setTransform(el, progress);
6370
-          });
6371
-        slides.each(function (slideIndex, slideEl) {
6372
-          var slideProgress = slideEl.progress;
6373
-          if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6374
-            slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
6375
-          }
6376
-          slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6377
-          $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6378
-            .each(function (index, el) {
6379
-              swiper.parallax.setTransform(el, slideProgress);
6380
-            });
6381
-        });
6382
-      },
6383
-      setTransition: function setTransition(duration) {
6384
-        if ( duration === void 0 ) duration = this.params.speed;
6385
-
6386
-        var swiper = this;
6387
-        var $el = swiper.$el;
6388
-        $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
6389
-          .each(function (index, parallaxEl) {
6390
-            var $parallaxEl = $(parallaxEl);
6391
-            var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
6392
-            if (duration === 0) { parallaxDuration = 0; }
6393
-            $parallaxEl.transition(parallaxDuration);
6394
-          });
6395
-      },
6396
-    };
6397
-
6398
-    var Parallax$1 = {
6399
-      name: 'parallax',
6400
-      params: {
6401
-        parallax: {
6402
-          enabled: false,
6403
-        },
6404
-      },
6405
-      create: function create() {
6406
-        var swiper = this;
6407
-        Utils.extend(swiper, {
6408
-          parallax: {
6409
-            setTransform: Parallax.setTransform.bind(swiper),
6410
-            setTranslate: Parallax.setTranslate.bind(swiper),
6411
-            setTransition: Parallax.setTransition.bind(swiper),
6412
-          },
6413
-        });
6414
-      },
6415
-      on: {
6416
-        beforeInit: function beforeInit() {
6417
-          var swiper = this;
6418
-          if (!swiper.params.parallax.enabled) { return; }
6419
-          swiper.params.watchSlidesProgress = true;
6420
-          swiper.originalParams.watchSlidesProgress = true;
6421
-        },
6422
-        init: function init() {
6423
-          var swiper = this;
6424
-          if (!swiper.params.parallax.enabled) { return; }
6425
-          swiper.parallax.setTranslate();
6426
-        },
6427
-        setTranslate: function setTranslate() {
6428
-          var swiper = this;
6429
-          if (!swiper.params.parallax.enabled) { return; }
6430
-          swiper.parallax.setTranslate();
6431
-        },
6432
-        setTransition: function setTransition(duration) {
6433
-          var swiper = this;
6434
-          if (!swiper.params.parallax.enabled) { return; }
6435
-          swiper.parallax.setTransition(duration);
6436
-        },
6437
-      },
6438
-    };
6439
-
6440
-    var Zoom = {
6441
-      // Calc Scale From Multi-touches
6442
-      getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
6443
-        if (e.targetTouches.length < 2) { return 1; }
6444
-        var x1 = e.targetTouches[0].pageX;
6445
-        var y1 = e.targetTouches[0].pageY;
6446
-        var x2 = e.targetTouches[1].pageX;
6447
-        var y2 = e.targetTouches[1].pageY;
6448
-        var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));
6449
-        return distance;
6450
-      },
6451
-      // Events
6452
-      onGestureStart: function onGestureStart(e) {
6453
-        var swiper = this;
6454
-        var params = swiper.params.zoom;
6455
-        var zoom = swiper.zoom;
6456
-        var gesture = zoom.gesture;
6457
-        zoom.fakeGestureTouched = false;
6458
-        zoom.fakeGestureMoved = false;
6459
-        if (!Support.gestures) {
6460
-          if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
6461
-            return;
6462
-          }
6463
-          zoom.fakeGestureTouched = true;
6464
-          gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
6465
-        }
6466
-        if (!gesture.$slideEl || !gesture.$slideEl.length) {
6467
-          gesture.$slideEl = $(e.target).closest(("." + (swiper.params.slideClass)));
6468
-          if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }
6469
-          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6470
-          gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
6471
-          gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6472
-          if (gesture.$imageWrapEl.length === 0) {
6473
-            gesture.$imageEl = undefined;
6474
-            return;
6475
-          }
6476
-        }
6477
-        if (gesture.$imageEl) {
6478
-          gesture.$imageEl.transition(0);
6479
-        }
6480
-        swiper.zoom.isScaling = true;
6481
-      },
6482
-      onGestureChange: function onGestureChange(e) {
6483
-        var swiper = this;
6484
-        var params = swiper.params.zoom;
6485
-        var zoom = swiper.zoom;
6486
-        var gesture = zoom.gesture;
6487
-        if (!Support.gestures) {
6488
-          if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
6489
-            return;
6490
-          }
6491
-          zoom.fakeGestureMoved = true;
6492
-          gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
6493
-        }
6494
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6495
-        if (Support.gestures) {
6496
-          zoom.scale = e.scale * zoom.currentScale;
6497
-        } else {
6498
-          zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
6499
-        }
6500
-        if (zoom.scale > gesture.maxRatio) {
6501
-          zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));
6502
-        }
6503
-        if (zoom.scale < params.minRatio) {
6504
-          zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));
6505
-        }
6506
-        gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
6507
-      },
6508
-      onGestureEnd: function onGestureEnd(e) {
6509
-        var swiper = this;
6510
-        var params = swiper.params.zoom;
6511
-        var zoom = swiper.zoom;
6512
-        var gesture = zoom.gesture;
6513
-        if (!Support.gestures) {
6514
-          if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
6515
-            return;
6516
-          }
6517
-          if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
6518
-            return;
6519
-          }
6520
-          zoom.fakeGestureTouched = false;
6521
-          zoom.fakeGestureMoved = false;
6522
-        }
6523
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6524
-        zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
6525
-        gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
6526
-        zoom.currentScale = zoom.scale;
6527
-        zoom.isScaling = false;
6528
-        if (zoom.scale === 1) { gesture.$slideEl = undefined; }
6529
-      },
6530
-      onTouchStart: function onTouchStart(e) {
6531
-        var swiper = this;
6532
-        var zoom = swiper.zoom;
6533
-        var gesture = zoom.gesture;
6534
-        var image = zoom.image;
6535
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6536
-        if (image.isTouched) { return; }
6537
-        if (Device.android && e.cancelable) { e.preventDefault(); }
6538
-        image.isTouched = true;
6539
-        image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
6540
-        image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
6541
-      },
6542
-      onTouchMove: function onTouchMove(e) {
6543
-        var swiper = this;
6544
-        var zoom = swiper.zoom;
6545
-        var gesture = zoom.gesture;
6546
-        var image = zoom.image;
6547
-        var velocity = zoom.velocity;
6548
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6549
-        swiper.allowClick = false;
6550
-        if (!image.isTouched || !gesture.$slideEl) { return; }
6551
-
6552
-        if (!image.isMoved) {
6553
-          image.width = gesture.$imageEl[0].offsetWidth;
6554
-          image.height = gesture.$imageEl[0].offsetHeight;
6555
-          image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
6556
-          image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
6557
-          gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
6558
-          gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
6559
-          gesture.$imageWrapEl.transition(0);
6560
-          if (swiper.rtl) {
6561
-            image.startX = -image.startX;
6562
-            image.startY = -image.startY;
6563
-          }
6564
-        }
6565
-        // Define if we need image drag
6566
-        var scaledWidth = image.width * zoom.scale;
6567
-        var scaledHeight = image.height * zoom.scale;
6568
-
6569
-        if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }
6570
-
6571
-        image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
6572
-        image.maxX = -image.minX;
6573
-        image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
6574
-        image.maxY = -image.minY;
6575
-
6576
-        image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
6577
-        image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
6578
-
6579
-        if (!image.isMoved && !zoom.isScaling) {
6580
-          if (
6581
-            swiper.isHorizontal()
6582
-            && (
6583
-              (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
6584
-              || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
6585
-            )
6586
-          ) {
6587
-            image.isTouched = false;
6588
-            return;
6589
-          } if (
6590
-            !swiper.isHorizontal()
6591
-            && (
6592
-              (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
6593
-              || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
6594
-            )
6595
-          ) {
6596
-            image.isTouched = false;
6597
-            return;
6598
-          }
6599
-        }
6600
-        if (e.cancelable) {
6601
-          e.preventDefault();
6602
-        }
6603
-        e.stopPropagation();
6604
-
6605
-        image.isMoved = true;
6606
-        image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
6607
-        image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
6608
-
6609
-        if (image.currentX < image.minX) {
6610
-          image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));
6611
-        }
6612
-        if (image.currentX > image.maxX) {
6613
-          image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));
6614
-        }
6615
-
6616
-        if (image.currentY < image.minY) {
6617
-          image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));
6618
-        }
6619
-        if (image.currentY > image.maxY) {
6620
-          image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));
6621
-        }
6622
-
6623
-        // Velocity
6624
-        if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }
6625
-        if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }
6626
-        if (!velocity.prevTime) { velocity.prevTime = Date.now(); }
6627
-        velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
6628
-        velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
6629
-        if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }
6630
-        if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }
6631
-        velocity.prevPositionX = image.touchesCurrent.x;
6632
-        velocity.prevPositionY = image.touchesCurrent.y;
6633
-        velocity.prevTime = Date.now();
6634
-
6635
-        gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
6636
-      },
6637
-      onTouchEnd: function onTouchEnd() {
6638
-        var swiper = this;
6639
-        var zoom = swiper.zoom;
6640
-        var gesture = zoom.gesture;
6641
-        var image = zoom.image;
6642
-        var velocity = zoom.velocity;
6643
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6644
-        if (!image.isTouched || !image.isMoved) {
6645
-          image.isTouched = false;
6646
-          image.isMoved = false;
6647
-          return;
6648
-        }
6649
-        image.isTouched = false;
6650
-        image.isMoved = false;
6651
-        var momentumDurationX = 300;
6652
-        var momentumDurationY = 300;
6653
-        var momentumDistanceX = velocity.x * momentumDurationX;
6654
-        var newPositionX = image.currentX + momentumDistanceX;
6655
-        var momentumDistanceY = velocity.y * momentumDurationY;
6656
-        var newPositionY = image.currentY + momentumDistanceY;
6657
-
6658
-        // Fix duration
6659
-        if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }
6660
-        if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }
6661
-        var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
6662
-
6663
-        image.currentX = newPositionX;
6664
-        image.currentY = newPositionY;
6665
-
6666
-        // Define if we need image drag
6667
-        var scaledWidth = image.width * zoom.scale;
6668
-        var scaledHeight = image.height * zoom.scale;
6669
-        image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
6670
-        image.maxX = -image.minX;
6671
-        image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
6672
-        image.maxY = -image.minY;
6673
-        image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
6674
-        image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
6675
-
6676
-        gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
6677
-      },
6678
-      onTransitionEnd: function onTransitionEnd() {
6679
-        var swiper = this;
6680
-        var zoom = swiper.zoom;
6681
-        var gesture = zoom.gesture;
6682
-        if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
6683
-          if (gesture.$imageEl) {
6684
-            gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
6685
-          }
6686
-          if (gesture.$imageWrapEl) {
6687
-            gesture.$imageWrapEl.transform('translate3d(0,0,0)');
6688
-          }
6689
-
6690
-          zoom.scale = 1;
6691
-          zoom.currentScale = 1;
6692
-
6693
-          gesture.$slideEl = undefined;
6694
-          gesture.$imageEl = undefined;
6695
-          gesture.$imageWrapEl = undefined;
6696
-        }
6697
-      },
6698
-      // Toggle Zoom
6699
-      toggle: function toggle(e) {
6700
-        var swiper = this;
6701
-        var zoom = swiper.zoom;
6702
-
6703
-        if (zoom.scale && zoom.scale !== 1) {
6704
-          // Zoom Out
6705
-          zoom.out();
6706
-        } else {
6707
-          // Zoom In
6708
-          zoom.in(e);
6709
-        }
6710
-      },
6711
-      in: function in$1(e) {
6712
-        var swiper = this;
6713
-
6714
-        var zoom = swiper.zoom;
6715
-        var params = swiper.params.zoom;
6716
-        var gesture = zoom.gesture;
6717
-        var image = zoom.image;
6718
-
6719
-        if (!gesture.$slideEl) {
6720
-          if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
6721
-            gesture.$slideEl = swiper.$wrapperEl.children(("." + (swiper.params.slideActiveClass)));
6722
-          } else {
6723
-            gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6724
-          }
6725
-          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6726
-          gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
6727
-        }
6728
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6729
-
6730
-        gesture.$slideEl.addClass(("" + (params.zoomedSlideClass)));
6731
-
6732
-        var touchX;
6733
-        var touchY;
6734
-        var offsetX;
6735
-        var offsetY;
6736
-        var diffX;
6737
-        var diffY;
6738
-        var translateX;
6739
-        var translateY;
6740
-        var imageWidth;
6741
-        var imageHeight;
6742
-        var scaledWidth;
6743
-        var scaledHeight;
6744
-        var translateMinX;
6745
-        var translateMinY;
6746
-        var translateMaxX;
6747
-        var translateMaxY;
6748
-        var slideWidth;
6749
-        var slideHeight;
6750
-
6751
-        if (typeof image.touchesStart.x === 'undefined' && e) {
6752
-          touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
6753
-          touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
6754
-        } else {
6755
-          touchX = image.touchesStart.x;
6756
-          touchY = image.touchesStart.y;
6757
-        }
6758
-
6759
-        zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6760
-        zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6761
-        if (e) {
6762
-          slideWidth = gesture.$slideEl[0].offsetWidth;
6763
-          slideHeight = gesture.$slideEl[0].offsetHeight;
6764
-          offsetX = gesture.$slideEl.offset().left;
6765
-          offsetY = gesture.$slideEl.offset().top;
6766
-          diffX = (offsetX + (slideWidth / 2)) - touchX;
6767
-          diffY = (offsetY + (slideHeight / 2)) - touchY;
6768
-
6769
-          imageWidth = gesture.$imageEl[0].offsetWidth;
6770
-          imageHeight = gesture.$imageEl[0].offsetHeight;
6771
-          scaledWidth = imageWidth * zoom.scale;
6772
-          scaledHeight = imageHeight * zoom.scale;
6773
-
6774
-          translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
6775
-          translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
6776
-          translateMaxX = -translateMinX;
6777
-          translateMaxY = -translateMinY;
6778
-
6779
-          translateX = diffX * zoom.scale;
6780
-          translateY = diffY * zoom.scale;
6781
-
6782
-          if (translateX < translateMinX) {
6783
-            translateX = translateMinX;
6784
-          }
6785
-          if (translateX > translateMaxX) {
6786
-            translateX = translateMaxX;
6787
-          }
6788
-
6789
-          if (translateY < translateMinY) {
6790
-            translateY = translateMinY;
6791
-          }
6792
-          if (translateY > translateMaxY) {
6793
-            translateY = translateMaxY;
6794
-          }
6795
-        } else {
6796
-          translateX = 0;
6797
-          translateY = 0;
6798
-        }
6799
-        gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)"));
6800
-        gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
6801
-      },
6802
-      out: function out() {
6803
-        var swiper = this;
6804
-
6805
-        var zoom = swiper.zoom;
6806
-        var params = swiper.params.zoom;
6807
-        var gesture = zoom.gesture;
6808
-
6809
-        if (!gesture.$slideEl) {
6810
-          if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
6811
-            gesture.$slideEl = swiper.$wrapperEl.children(("." + (swiper.params.slideActiveClass)));
6812
-          } else {
6813
-            gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6814
-          }
6815
-          gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6816
-          gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
6817
-        }
6818
-        if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6819
-
6820
-        zoom.scale = 1;
6821
-        zoom.currentScale = 1;
6822
-        gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
6823
-        gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
6824
-        gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass)));
6825
-        gesture.$slideEl = undefined;
6826
-      },
6827
-      // Attach/Detach Events
6828
-      enable: function enable() {
6829
-        var swiper = this;
6830
-        var zoom = swiper.zoom;
6831
-        if (zoom.enabled) { return; }
6832
-        zoom.enabled = true;
6833
-
6834
-        var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6835
-        var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
6836
-
6837
-        var slideSelector = "." + (swiper.params.slideClass);
6838
-
6839
-        // Scale image
6840
-        if (Support.gestures) {
6841
-          swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
6842
-          swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
6843
-          swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
6844
-        } else if (swiper.touchEvents.start === 'touchstart') {
6845
-          swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
6846
-          swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
6847
-          swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
6848
-          if (swiper.touchEvents.cancel) {
6849
-            swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
6850
-          }
6851
-        }
6852
-
6853
-        // Move image
6854
-        swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove, activeListenerWithCapture);
6855
-      },
6856
-      disable: function disable() {
6857
-        var swiper = this;
6858
-        var zoom = swiper.zoom;
6859
-        if (!zoom.enabled) { return; }
6860
-
6861
-        swiper.zoom.enabled = false;
6862
-
6863
-        var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6864
-        var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
6865
-
6866
-        var slideSelector = "." + (swiper.params.slideClass);
6867
-
6868
-        // Scale image
6869
-        if (Support.gestures) {
6870
-          swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
6871
-          swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
6872
-          swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
6873
-        } else if (swiper.touchEvents.start === 'touchstart') {
6874
-          swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
6875
-          swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
6876
-          swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
6877
-          if (swiper.touchEvents.cancel) {
6878
-            swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
6879
-          }
6880
-        }
6881
-
6882
-        // Move image
6883
-        swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove, activeListenerWithCapture);
6884
-      },
6885
-    };
6886
-
6887
-    var Zoom$1 = {
6888
-      name: 'zoom',
6889
-      params: {
6890
-        zoom: {
6891
-          enabled: false,
6892
-          maxRatio: 3,
6893
-          minRatio: 1,
6894
-          toggle: true,
6895
-          containerClass: 'swiper-zoom-container',
6896
-          zoomedSlideClass: 'swiper-slide-zoomed',
6897
-        },
6898
-      },
6899
-      create: function create() {
6900
-        var swiper = this;
6901
-        var zoom = {
6902
-          enabled: false,
6903
-          scale: 1,
6904
-          currentScale: 1,
6905
-          isScaling: false,
6906
-          gesture: {
6907
-            $slideEl: undefined,
6908
-            slideWidth: undefined,
6909
-            slideHeight: undefined,
6910
-            $imageEl: undefined,
6911
-            $imageWrapEl: undefined,
6912
-            maxRatio: 3,
6913
-          },
6914
-          image: {
6915
-            isTouched: undefined,
6916
-            isMoved: undefined,
6917
-            currentX: undefined,
6918
-            currentY: undefined,
6919
-            minX: undefined,
6920
-            minY: undefined,
6921
-            maxX: undefined,
6922
-            maxY: undefined,
6923
-            width: undefined,
6924
-            height: undefined,
6925
-            startX: undefined,
6926
-            startY: undefined,
6927
-            touchesStart: {},
6928
-            touchesCurrent: {},
6929
-          },
6930
-          velocity: {
6931
-            x: undefined,
6932
-            y: undefined,
6933
-            prevPositionX: undefined,
6934
-            prevPositionY: undefined,
6935
-            prevTime: undefined,
6936
-          },
6937
-        };
6938
-
6939
-        ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {
6940
-          zoom[methodName] = Zoom[methodName].bind(swiper);
6941
-        });
6942
-        Utils.extend(swiper, {
6943
-          zoom: zoom,
6944
-        });
6945
-
6946
-        var scale = 1;
6947
-        Object.defineProperty(swiper.zoom, 'scale', {
6948
-          get: function get() {
6949
-            return scale;
6950
-          },
6951
-          set: function set(value) {
6952
-            if (scale !== value) {
6953
-              var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
6954
-              var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
6955
-              swiper.emit('zoomChange', value, imageEl, slideEl);
6956
-            }
6957
-            scale = value;
6958
-          },
6959
-        });
6960
-      },
6961
-      on: {
6962
-        init: function init() {
6963
-          var swiper = this;
6964
-          if (swiper.params.zoom.enabled) {
6965
-            swiper.zoom.enable();
6966
-          }
6967
-        },
6968
-        destroy: function destroy() {
6969
-          var swiper = this;
6970
-          swiper.zoom.disable();
6971
-        },
6972
-        touchStart: function touchStart(e) {
6973
-          var swiper = this;
6974
-          if (!swiper.zoom.enabled) { return; }
6975
-          swiper.zoom.onTouchStart(e);
6976
-        },
6977
-        touchEnd: function touchEnd(e) {
6978
-          var swiper = this;
6979
-          if (!swiper.zoom.enabled) { return; }
6980
-          swiper.zoom.onTouchEnd(e);
6981
-        },
6982
-        doubleTap: function doubleTap(e) {
6983
-          var swiper = this;
6984
-          if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
6985
-            swiper.zoom.toggle(e);
6986
-          }
6987
-        },
6988
-        transitionEnd: function transitionEnd() {
6989
-          var swiper = this;
6990
-          if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
6991
-            swiper.zoom.onTransitionEnd();
6992
-          }
6993
-        },
6994
-        slideChange: function slideChange() {
6995
-          var swiper = this;
6996
-          if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
6997
-            swiper.zoom.onTransitionEnd();
6998
-          }
6999
-        },
7000
-      },
7001
-    };
7002
-
7003
-    var Lazy = {
7004
-      loadInSlide: function loadInSlide(index, loadInDuplicate) {
7005
-        if ( loadInDuplicate === void 0 ) loadInDuplicate = true;
7006
-
7007
-        var swiper = this;
7008
-        var params = swiper.params.lazy;
7009
-        if (typeof index === 'undefined') { return; }
7010
-        if (swiper.slides.length === 0) { return; }
7011
-        var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7012
-
7013
-        var $slideEl = isVirtual
7014
-          ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]"))
7015
-          : swiper.slides.eq(index);
7016
-
7017
-        var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")"));
7018
-        if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
7019
-          $images = $images.add($slideEl[0]);
7020
-        }
7021
-        if ($images.length === 0) { return; }
7022
-
7023
-        $images.each(function (imageIndex, imageEl) {
7024
-          var $imageEl = $(imageEl);
7025
-          $imageEl.addClass(params.loadingClass);
7026
-
7027
-          var background = $imageEl.attr('data-background');
7028
-          var src = $imageEl.attr('data-src');
7029
-          var srcset = $imageEl.attr('data-srcset');
7030
-          var sizes = $imageEl.attr('data-sizes');
7031
-          var $pictureEl = $imageEl.parent('picture');
7032
-
7033
-          swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {
7034
-            if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }
7035
-            if (background) {
7036
-              $imageEl.css('background-image', ("url(\"" + background + "\")"));
7037
-              $imageEl.removeAttr('data-background');
7038
-            } else {
7039
-              if (srcset) {
7040
-                $imageEl.attr('srcset', srcset);
7041
-                $imageEl.removeAttr('data-srcset');
7042
-              }
7043
-              if (sizes) {
7044
-                $imageEl.attr('sizes', sizes);
7045
-                $imageEl.removeAttr('data-sizes');
7046
-              }
7047
-              if ($pictureEl.length) {
7048
-                $pictureEl.children('source').each(function (sourceIndex, sourceEl) {
7049
-                  var $source = $(sourceEl);
7050
-
7051
-                  if ($source.attr('data-srcset')) {
7052
-                    $source.attr('srcset', $source.attr('data-srcset'));
7053
-                    $source.removeAttr('data-srcset');
7054
-                  }
7055
-                });
7056
-              }
7057
-              if (src) {
7058
-                $imageEl.attr('src', src);
7059
-                $imageEl.removeAttr('data-src');
7060
-              }
7061
-            }
7062
-
7063
-            $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
7064
-            $slideEl.find(("." + (params.preloaderClass))).remove();
7065
-            if (swiper.params.loop && loadInDuplicate) {
7066
-              var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
7067
-              if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
7068
-                var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")"));
7069
-                swiper.lazy.loadInSlide(originalSlide.index(), false);
7070
-              } else {
7071
-                var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]"));
7072
-                swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
7073
-              }
7074
-            }
7075
-            swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
7076
-            if (swiper.params.autoHeight) {
7077
-              swiper.updateAutoHeight();
7078
-            }
7079
-          });
7080
-
7081
-          swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
7082
-        });
7083
-      },
7084
-      load: function load() {
7085
-        var swiper = this;
7086
-        var $wrapperEl = swiper.$wrapperEl;
7087
-        var swiperParams = swiper.params;
7088
-        var slides = swiper.slides;
7089
-        var activeIndex = swiper.activeIndex;
7090
-        var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
7091
-        var params = swiperParams.lazy;
7092
-
7093
-        var slidesPerView = swiperParams.slidesPerView;
7094
-        if (slidesPerView === 'auto') {
7095
-          slidesPerView = 0;
7096
-        }
7097
-
7098
-        function slideExist(index) {
7099
-          if (isVirtual) {
7100
-            if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) {
7101
-              return true;
7102
-            }
7103
-          } else if (slides[index]) { return true; }
7104
-          return false;
7105
-        }
7106
-
7107
-        function slideIndex(slideEl) {
7108
-          if (isVirtual) {
7109
-            return $(slideEl).attr('data-swiper-slide-index');
7110
-          }
7111
-          return $(slideEl).index();
7112
-        }
7113
-
7114
-        if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }
7115
-        if (swiper.params.watchSlidesVisibility) {
7116
-          $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {
7117
-            var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
7118
-            swiper.lazy.loadInSlide(index);
7119
-          });
7120
-        } else if (slidesPerView > 1) {
7121
-          for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
7122
-            if (slideExist(i)) { swiper.lazy.loadInSlide(i); }
7123
-          }
7124
-        } else {
7125
-          swiper.lazy.loadInSlide(activeIndex);
7126
-        }
7127
-        if (params.loadPrevNext) {
7128
-          if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
7129
-            var amount = params.loadPrevNextAmount;
7130
-            var spv = slidesPerView;
7131
-            var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
7132
-            var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
7133
-            // Next Slides
7134
-            for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
7135
-              if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }
7136
-            }
7137
-            // Prev Slides
7138
-            for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
7139
-              if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }
7140
-            }
7141
-          } else {
7142
-            var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass)));
7143
-            if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }
7144
-
7145
-            var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass)));
7146
-            if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }
7147
-          }
7148
-        }
7149
-      },
7150
-    };
7151
-
7152
-    var Lazy$1 = {
7153
-      name: 'lazy',
7154
-      params: {
7155
-        lazy: {
7156
-          enabled: false,
7157
-          loadPrevNext: false,
7158
-          loadPrevNextAmount: 1,
7159
-          loadOnTransitionStart: false,
7160
-
7161
-          elementClass: 'swiper-lazy',
7162
-          loadingClass: 'swiper-lazy-loading',
7163
-          loadedClass: 'swiper-lazy-loaded',
7164
-          preloaderClass: 'swiper-lazy-preloader',
7165
-        },
7166
-      },
7167
-      create: function create() {
7168
-        var swiper = this;
7169
-        Utils.extend(swiper, {
7170
-          lazy: {
7171
-            initialImageLoaded: false,
7172
-            load: Lazy.load.bind(swiper),
7173
-            loadInSlide: Lazy.loadInSlide.bind(swiper),
7174
-          },
7175
-        });
7176
-      },
7177
-      on: {
7178
-        beforeInit: function beforeInit() {
7179
-          var swiper = this;
7180
-          if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
7181
-            swiper.params.preloadImages = false;
7182
-          }
7183
-        },
7184
-        init: function init() {
7185
-          var swiper = this;
7186
-          if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
7187
-            swiper.lazy.load();
7188
-          }
7189
-        },
7190
-        scroll: function scroll() {
7191
-          var swiper = this;
7192
-          if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
7193
-            swiper.lazy.load();
7194
-          }
7195
-        },
7196
-        resize: function resize() {
7197
-          var swiper = this;
7198
-          if (swiper.params.lazy.enabled) {
7199
-            swiper.lazy.load();
7200
-          }
7201
-        },
7202
-        scrollbarDragMove: function scrollbarDragMove() {
7203
-          var swiper = this;
7204
-          if (swiper.params.lazy.enabled) {
7205
-            swiper.lazy.load();
7206
-          }
7207
-        },
7208
-        transitionStart: function transitionStart() {
7209
-          var swiper = this;
7210
-          if (swiper.params.lazy.enabled) {
7211
-            if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
7212
-              swiper.lazy.load();
7213
-            }
7214
-          }
7215
-        },
7216
-        transitionEnd: function transitionEnd() {
7217
-          var swiper = this;
7218
-          if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7219
-            swiper.lazy.load();
7220
-          }
7221
-        },
7222
-        slideChange: function slideChange() {
7223
-          var swiper = this;
7224
-          if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7225
-            swiper.lazy.load();
7226
-          }
7227
-        },
7228
-      },
7229
-    };
7230
-
7231
-    /* eslint no-bitwise: ["error", { "allow": [">>"] }] */
7232
-
7233
-    var Controller = {
7234
-      LinearSpline: function LinearSpline(x, y) {
7235
-        var binarySearch = (function search() {
7236
-          var maxIndex;
7237
-          var minIndex;
7238
-          var guess;
7239
-          return function (array, val) {
7240
-            minIndex = -1;
7241
-            maxIndex = array.length;
7242
-            while (maxIndex - minIndex > 1) {
7243
-              guess = maxIndex + minIndex >> 1;
7244
-              if (array[guess] <= val) {
7245
-                minIndex = guess;
7246
-              } else {
7247
-                maxIndex = guess;
7248
-              }
7249
-            }
7250
-            return maxIndex;
7251
-          };
7252
-        }());
7253
-        this.x = x;
7254
-        this.y = y;
7255
-        this.lastIndex = x.length - 1;
7256
-        // Given an x value (x2), return the expected y2 value:
7257
-        // (x1,y1) is the known point before given value,
7258
-        // (x3,y3) is the known point after given value.
7259
-        var i1;
7260
-        var i3;
7261
-
7262
-        this.interpolate = function interpolate(x2) {
7263
-          if (!x2) { return 0; }
7264
-
7265
-          // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7266
-          i3 = binarySearch(this.x, x2);
7267
-          i1 = i3 - 1;
7268
-
7269
-          // We have our indexes i1 & i3, so we can calculate already:
7270
-          // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7271
-          return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
7272
-        };
7273
-        return this;
7274
-      },
7275
-      // xxx: for now i will just save one spline function to to
7276
-      getInterpolateFunction: function getInterpolateFunction(c) {
7277
-        var swiper = this;
7278
-        if (!swiper.controller.spline) {
7279
-          swiper.controller.spline = swiper.params.loop
7280
-            ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
7281
-            : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7282
-        }
7283
-      },
7284
-      setTranslate: function setTranslate(setTranslate$1, byController) {
7285
-        var swiper = this;
7286
-        var controlled = swiper.controller.control;
7287
-        var multiplier;
7288
-        var controlledTranslate;
7289
-        function setControlledTranslate(c) {
7290
-          // this will create an Interpolate function based on the snapGrids
7291
-          // x is the Grid of the scrolled scroller and y will be the controlled scroller
7292
-          // it makes sense to create this only once and recall it for the interpolation
7293
-          // the function does a lot of value caching for performance
7294
-          var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7295
-          if (swiper.params.controller.by === 'slide') {
7296
-            swiper.controller.getInterpolateFunction(c);
7297
-            // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7298
-            // but it did not work out
7299
-            controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7300
-          }
7301
-
7302
-          if (!controlledTranslate || swiper.params.controller.by === 'container') {
7303
-            multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7304
-            controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
7305
-          }
7306
-
7307
-          if (swiper.params.controller.inverse) {
7308
-            controlledTranslate = c.maxTranslate() - controlledTranslate;
7309
-          }
7310
-          c.updateProgress(controlledTranslate);
7311
-          c.setTranslate(controlledTranslate, swiper);
7312
-          c.updateActiveIndex();
7313
-          c.updateSlidesClasses();
7314
-        }
7315
-        if (Array.isArray(controlled)) {
7316
-          for (var i = 0; i < controlled.length; i += 1) {
7317
-            if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7318
-              setControlledTranslate(controlled[i]);
7319
-            }
7320
-          }
7321
-        } else if (controlled instanceof Swiper && byController !== controlled) {
7322
-          setControlledTranslate(controlled);
7323
-        }
7324
-      },
7325
-      setTransition: function setTransition(duration, byController) {
7326
-        var swiper = this;
7327
-        var controlled = swiper.controller.control;
7328
-        var i;
7329
-        function setControlledTransition(c) {
7330
-          c.setTransition(duration, swiper);
7331
-          if (duration !== 0) {
7332
-            c.transitionStart();
7333
-            if (c.params.autoHeight) {
7334
-              Utils.nextTick(function () {
7335
-                c.updateAutoHeight();
7336
-              });
7337
-            }
7338
-            c.$wrapperEl.transitionEnd(function () {
7339
-              if (!controlled) { return; }
7340
-              if (c.params.loop && swiper.params.controller.by === 'slide') {
7341
-                c.loopFix();
7342
-              }
7343
-              c.transitionEnd();
7344
-            });
7345
-          }
7346
-        }
7347
-        if (Array.isArray(controlled)) {
7348
-          for (i = 0; i < controlled.length; i += 1) {
7349
-            if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7350
-              setControlledTransition(controlled[i]);
7351
-            }
7352
-          }
7353
-        } else if (controlled instanceof Swiper && byController !== controlled) {
7354
-          setControlledTransition(controlled);
7355
-        }
7356
-      },
7357
-    };
7358
-    var Controller$1 = {
7359
-      name: 'controller',
7360
-      params: {
7361
-        controller: {
7362
-          control: undefined,
7363
-          inverse: false,
7364
-          by: 'slide', // or 'container'
7365
-        },
7366
-      },
7367
-      create: function create() {
7368
-        var swiper = this;
7369
-        Utils.extend(swiper, {
7370
-          controller: {
7371
-            control: swiper.params.controller.control,
7372
-            getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
7373
-            setTranslate: Controller.setTranslate.bind(swiper),
7374
-            setTransition: Controller.setTransition.bind(swiper),
7375
-          },
7376
-        });
7377
-      },
7378
-      on: {
7379
-        update: function update() {
7380
-          var swiper = this;
7381
-          if (!swiper.controller.control) { return; }
7382
-          if (swiper.controller.spline) {
7383
-            swiper.controller.spline = undefined;
7384
-            delete swiper.controller.spline;
7385
-          }
7386
-        },
7387
-        resize: function resize() {
7388
-          var swiper = this;
7389
-          if (!swiper.controller.control) { return; }
7390
-          if (swiper.controller.spline) {
7391
-            swiper.controller.spline = undefined;
7392
-            delete swiper.controller.spline;
7393
-          }
7394
-        },
7395
-        observerUpdate: function observerUpdate() {
7396
-          var swiper = this;
7397
-          if (!swiper.controller.control) { return; }
7398
-          if (swiper.controller.spline) {
7399
-            swiper.controller.spline = undefined;
7400
-            delete swiper.controller.spline;
7401
-          }
7402
-        },
7403
-        setTranslate: function setTranslate(translate, byController) {
7404
-          var swiper = this;
7405
-          if (!swiper.controller.control) { return; }
7406
-          swiper.controller.setTranslate(translate, byController);
7407
-        },
7408
-        setTransition: function setTransition(duration, byController) {
7409
-          var swiper = this;
7410
-          if (!swiper.controller.control) { return; }
7411
-          swiper.controller.setTransition(duration, byController);
7412
-        },
7413
-      },
7414
-    };
7415
-
7416
-    var a11y = {
7417
-      makeElFocusable: function makeElFocusable($el) {
7418
-        $el.attr('tabIndex', '0');
7419
-        return $el;
7420
-      },
7421
-      makeElNotFocusable: function makeElNotFocusable($el) {
7422
-        $el.attr('tabIndex', '-1');
7423
-        return $el;
7424
-      },
7425
-      addElRole: function addElRole($el, role) {
7426
-        $el.attr('role', role);
7427
-        return $el;
7428
-      },
7429
-      addElLabel: function addElLabel($el, label) {
7430
-        $el.attr('aria-label', label);
7431
-        return $el;
7432
-      },
7433
-      disableEl: function disableEl($el) {
7434
-        $el.attr('aria-disabled', true);
7435
-        return $el;
7436
-      },
7437
-      enableEl: function enableEl($el) {
7438
-        $el.attr('aria-disabled', false);
7439
-        return $el;
7440
-      },
7441
-      onEnterKey: function onEnterKey(e) {
7442
-        var swiper = this;
7443
-        var params = swiper.params.a11y;
7444
-        if (e.keyCode !== 13) { return; }
7445
-        var $targetEl = $(e.target);
7446
-        if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
7447
-          if (!(swiper.isEnd && !swiper.params.loop)) {
7448
-            swiper.slideNext();
7449
-          }
7450
-          if (swiper.isEnd) {
7451
-            swiper.a11y.notify(params.lastSlideMessage);
7452
-          } else {
7453
-            swiper.a11y.notify(params.nextSlideMessage);
7454
-          }
7455
-        }
7456
-        if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
7457
-          if (!(swiper.isBeginning && !swiper.params.loop)) {
7458
-            swiper.slidePrev();
7459
-          }
7460
-          if (swiper.isBeginning) {
7461
-            swiper.a11y.notify(params.firstSlideMessage);
7462
-          } else {
7463
-            swiper.a11y.notify(params.prevSlideMessage);
7464
-          }
7465
-        }
7466
-        if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) {
7467
-          $targetEl[0].click();
7468
-        }
7469
-      },
7470
-      notify: function notify(message) {
7471
-        var swiper = this;
7472
-        var notification = swiper.a11y.liveRegion;
7473
-        if (notification.length === 0) { return; }
7474
-        notification.html('');
7475
-        notification.html(message);
7476
-      },
7477
-      updateNavigation: function updateNavigation() {
7478
-        var swiper = this;
7479
-
7480
-        if (swiper.params.loop || !swiper.navigation) { return; }
7481
-        var ref = swiper.navigation;
7482
-        var $nextEl = ref.$nextEl;
7483
-        var $prevEl = ref.$prevEl;
7484
-
7485
-        if ($prevEl && $prevEl.length > 0) {
7486
-          if (swiper.isBeginning) {
7487
-            swiper.a11y.disableEl($prevEl);
7488
-            swiper.a11y.makeElNotFocusable($prevEl);
7489
-          } else {
7490
-            swiper.a11y.enableEl($prevEl);
7491
-            swiper.a11y.makeElFocusable($prevEl);
7492
-          }
7493
-        }
7494
-        if ($nextEl && $nextEl.length > 0) {
7495
-          if (swiper.isEnd) {
7496
-            swiper.a11y.disableEl($nextEl);
7497
-            swiper.a11y.makeElNotFocusable($nextEl);
7498
-          } else {
7499
-            swiper.a11y.enableEl($nextEl);
7500
-            swiper.a11y.makeElFocusable($nextEl);
7501
-          }
7502
-        }
7503
-      },
7504
-      updatePagination: function updatePagination() {
7505
-        var swiper = this;
7506
-        var params = swiper.params.a11y;
7507
-        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7508
-          swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
7509
-            var $bulletEl = $(bulletEl);
7510
-            swiper.a11y.makeElFocusable($bulletEl);
7511
-            swiper.a11y.addElRole($bulletEl, 'button');
7512
-            swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
7513
-          });
7514
-        }
7515
-      },
7516
-      init: function init() {
7517
-        var swiper = this;
7518
-
7519
-        swiper.$el.append(swiper.a11y.liveRegion);
7520
-
7521
-        // Navigation
7522
-        var params = swiper.params.a11y;
7523
-        var $nextEl;
7524
-        var $prevEl;
7525
-        if (swiper.navigation && swiper.navigation.$nextEl) {
7526
-          $nextEl = swiper.navigation.$nextEl;
7527
-        }
7528
-        if (swiper.navigation && swiper.navigation.$prevEl) {
7529
-          $prevEl = swiper.navigation.$prevEl;
7530
-        }
7531
-        if ($nextEl) {
7532
-          swiper.a11y.makeElFocusable($nextEl);
7533
-          swiper.a11y.addElRole($nextEl, 'button');
7534
-          swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
7535
-          $nextEl.on('keydown', swiper.a11y.onEnterKey);
7536
-        }
7537
-        if ($prevEl) {
7538
-          swiper.a11y.makeElFocusable($prevEl);
7539
-          swiper.a11y.addElRole($prevEl, 'button');
7540
-          swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
7541
-          $prevEl.on('keydown', swiper.a11y.onEnterKey);
7542
-        }
7543
-
7544
-        // Pagination
7545
-        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7546
-          swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
7547
-        }
7548
-      },
7549
-      destroy: function destroy() {
7550
-        var swiper = this;
7551
-        if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }
7552
-
7553
-        var $nextEl;
7554
-        var $prevEl;
7555
-        if (swiper.navigation && swiper.navigation.$nextEl) {
7556
-          $nextEl = swiper.navigation.$nextEl;
7557
-        }
7558
-        if (swiper.navigation && swiper.navigation.$prevEl) {
7559
-          $prevEl = swiper.navigation.$prevEl;
7560
-        }
7561
-        if ($nextEl) {
7562
-          $nextEl.off('keydown', swiper.a11y.onEnterKey);
7563
-        }
7564
-        if ($prevEl) {
7565
-          $prevEl.off('keydown', swiper.a11y.onEnterKey);
7566
-        }
7567
-
7568
-        // Pagination
7569
-        if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
7570
-          swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
7571
-        }
7572
-      },
7573
-    };
7574
-    var A11y = {
7575
-      name: 'a11y',
7576
-      params: {
7577
-        a11y: {
7578
-          enabled: true,
7579
-          notificationClass: 'swiper-notification',
7580
-          prevSlideMessage: 'Previous slide',
7581
-          nextSlideMessage: 'Next slide',
7582
-          firstSlideMessage: 'This is the first slide',
7583
-          lastSlideMessage: 'This is the last slide',
7584
-          paginationBulletMessage: 'Go to slide {{index}}',
7585
-        },
7586
-      },
7587
-      create: function create() {
7588
-        var swiper = this;
7589
-        Utils.extend(swiper, {
7590
-          a11y: {
7591
-            liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")),
7592
-          },
7593
-        });
7594
-        Object.keys(a11y).forEach(function (methodName) {
7595
-          swiper.a11y[methodName] = a11y[methodName].bind(swiper);
7596
-        });
7597
-      },
7598
-      on: {
7599
-        init: function init() {
7600
-          var swiper = this;
7601
-          if (!swiper.params.a11y.enabled) { return; }
7602
-          swiper.a11y.init();
7603
-          swiper.a11y.updateNavigation();
7604
-        },
7605
-        toEdge: function toEdge() {
7606
-          var swiper = this;
7607
-          if (!swiper.params.a11y.enabled) { return; }
7608
-          swiper.a11y.updateNavigation();
7609
-        },
7610
-        fromEdge: function fromEdge() {
7611
-          var swiper = this;
7612
-          if (!swiper.params.a11y.enabled) { return; }
7613
-          swiper.a11y.updateNavigation();
7614
-        },
7615
-        paginationUpdate: function paginationUpdate() {
7616
-          var swiper = this;
7617
-          if (!swiper.params.a11y.enabled) { return; }
7618
-          swiper.a11y.updatePagination();
7619
-        },
7620
-        destroy: function destroy() {
7621
-          var swiper = this;
7622
-          if (!swiper.params.a11y.enabled) { return; }
7623
-          swiper.a11y.destroy();
7624
-        },
7625
-      },
7626
-    };
7627
-
7628
-    var History = {
7629
-      init: function init() {
7630
-        var swiper = this;
7631
-        if (!swiper.params.history) { return; }
7632
-        if (!win.history || !win.history.pushState) {
7633
-          swiper.params.history.enabled = false;
7634
-          swiper.params.hashNavigation.enabled = true;
7635
-          return;
7636
-        }
7637
-        var history = swiper.history;
7638
-        history.initialized = true;
7639
-        history.paths = History.getPathValues();
7640
-        if (!history.paths.key && !history.paths.value) { return; }
7641
-        history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
7642
-        if (!swiper.params.history.replaceState) {
7643
-          win.addEventListener('popstate', swiper.history.setHistoryPopState);
7644
-        }
7645
-      },
7646
-      destroy: function destroy() {
7647
-        var swiper = this;
7648
-        if (!swiper.params.history.replaceState) {
7649
-          win.removeEventListener('popstate', swiper.history.setHistoryPopState);
7650
-        }
7651
-      },
7652
-      setHistoryPopState: function setHistoryPopState() {
7653
-        var swiper = this;
7654
-        swiper.history.paths = History.getPathValues();
7655
-        swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
7656
-      },
7657
-      getPathValues: function getPathValues() {
7658
-        var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });
7659
-        var total = pathArray.length;
7660
-        var key = pathArray[total - 2];
7661
-        var value = pathArray[total - 1];
7662
-        return { key: key, value: value };
7663
-      },
7664
-      setHistory: function setHistory(key, index) {
7665
-        var swiper = this;
7666
-        if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }
7667
-        var slide = swiper.slides.eq(index);
7668
-        var value = History.slugify(slide.attr('data-history'));
7669
-        if (!win.location.pathname.includes(key)) {
7670
-          value = key + "/" + value;
7671
-        }
7672
-        var currentState = win.history.state;
7673
-        if (currentState && currentState.value === value) {
7674
-          return;
7675
-        }
7676
-        if (swiper.params.history.replaceState) {
7677
-          win.history.replaceState({ value: value }, null, value);
7678
-        } else {
7679
-          win.history.pushState({ value: value }, null, value);
7680
-        }
7681
-      },
7682
-      slugify: function slugify(text) {
7683
-        return text.toString()
7684
-          .replace(/\s+/g, '-')
7685
-          .replace(/[^\w-]+/g, '')
7686
-          .replace(/--+/g, '-')
7687
-          .replace(/^-+/, '')
7688
-          .replace(/-+$/, '');
7689
-      },
7690
-      scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
7691
-        var swiper = this;
7692
-        if (value) {
7693
-          for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
7694
-            var slide = swiper.slides.eq(i);
7695
-            var slideHistory = History.slugify(slide.attr('data-history'));
7696
-            if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7697
-              var index = slide.index();
7698
-              swiper.slideTo(index, speed, runCallbacks);
7699
-            }
7700
-          }
7701
-        } else {
7702
-          swiper.slideTo(0, speed, runCallbacks);
7703
-        }
7704
-      },
7705
-    };
7706
-
7707
-    var History$1 = {
7708
-      name: 'history',
7709
-      params: {
7710
-        history: {
7711
-          enabled: false,
7712
-          replaceState: false,
7713
-          key: 'slides',
7714
-        },
7715
-      },
7716
-      create: function create() {
7717
-        var swiper = this;
7718
-        Utils.extend(swiper, {
7719
-          history: {
7720
-            init: History.init.bind(swiper),
7721
-            setHistory: History.setHistory.bind(swiper),
7722
-            setHistoryPopState: History.setHistoryPopState.bind(swiper),
7723
-            scrollToSlide: History.scrollToSlide.bind(swiper),
7724
-            destroy: History.destroy.bind(swiper),
7725
-          },
7726
-        });
7727
-      },
7728
-      on: {
7729
-        init: function init() {
7730
-          var swiper = this;
7731
-          if (swiper.params.history.enabled) {
7732
-            swiper.history.init();
7733
-          }
7734
-        },
7735
-        destroy: function destroy() {
7736
-          var swiper = this;
7737
-          if (swiper.params.history.enabled) {
7738
-            swiper.history.destroy();
7739
-          }
7740
-        },
7741
-        transitionEnd: function transitionEnd() {
7742
-          var swiper = this;
7743
-          if (swiper.history.initialized) {
7744
-            swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
7745
-          }
7746
-        },
7747
-        slideChange: function slideChange() {
7748
-          var swiper = this;
7749
-          if (swiper.history.initialized && swiper.params.cssMode) {
7750
-            swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
7751
-          }
7752
-        },
7753
-      },
7754
-    };
7755
-
7756
-    var HashNavigation = {
7757
-      onHashCange: function onHashCange() {
7758
-        var swiper = this;
7759
-        swiper.emit('hashChange');
7760
-        var newHash = doc.location.hash.replace('#', '');
7761
-        var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
7762
-        if (newHash !== activeSlideHash) {
7763
-          var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index();
7764
-          if (typeof newIndex === 'undefined') { return; }
7765
-          swiper.slideTo(newIndex);
7766
-        }
7767
-      },
7768
-      setHash: function setHash() {
7769
-        var swiper = this;
7770
-        if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }
7771
-        if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
7772
-          win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));
7773
-          swiper.emit('hashSet');
7774
-        } else {
7775
-          var slide = swiper.slides.eq(swiper.activeIndex);
7776
-          var hash = slide.attr('data-hash') || slide.attr('data-history');
7777
-          doc.location.hash = hash || '';
7778
-          swiper.emit('hashSet');
7779
-        }
7780
-      },
7781
-      init: function init() {
7782
-        var swiper = this;
7783
-        if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }
7784
-        swiper.hashNavigation.initialized = true;
7785
-        var hash = doc.location.hash.replace('#', '');
7786
-        if (hash) {
7787
-          var speed = 0;
7788
-          for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
7789
-            var slide = swiper.slides.eq(i);
7790
-            var slideHash = slide.attr('data-hash') || slide.attr('data-history');
7791
-            if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7792
-              var index = slide.index();
7793
-              swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
7794
-            }
7795
-          }
7796
-        }
7797
-        if (swiper.params.hashNavigation.watchState) {
7798
-          $(win).on('hashchange', swiper.hashNavigation.onHashCange);
7799
-        }
7800
-      },
7801
-      destroy: function destroy() {
7802
-        var swiper = this;
7803
-        if (swiper.params.hashNavigation.watchState) {
7804
-          $(win).off('hashchange', swiper.hashNavigation.onHashCange);
7805
-        }
7806
-      },
7807
-    };
7808
-    var HashNavigation$1 = {
7809
-      name: 'hash-navigation',
7810
-      params: {
7811
-        hashNavigation: {
7812
-          enabled: false,
7813
-          replaceState: false,
7814
-          watchState: false,
7815
-        },
7816
-      },
7817
-      create: function create() {
7818
-        var swiper = this;
7819
-        Utils.extend(swiper, {
7820
-          hashNavigation: {
7821
-            initialized: false,
7822
-            init: HashNavigation.init.bind(swiper),
7823
-            destroy: HashNavigation.destroy.bind(swiper),
7824
-            setHash: HashNavigation.setHash.bind(swiper),
7825
-            onHashCange: HashNavigation.onHashCange.bind(swiper),
7826
-          },
7827
-        });
7828
-      },
7829
-      on: {
7830
-        init: function init() {
7831
-          var swiper = this;
7832
-          if (swiper.params.hashNavigation.enabled) {
7833
-            swiper.hashNavigation.init();
7834
-          }
7835
-        },
7836
-        destroy: function destroy() {
7837
-          var swiper = this;
7838
-          if (swiper.params.hashNavigation.enabled) {
7839
-            swiper.hashNavigation.destroy();
7840
-          }
7841
-        },
7842
-        transitionEnd: function transitionEnd() {
7843
-          var swiper = this;
7844
-          if (swiper.hashNavigation.initialized) {
7845
-            swiper.hashNavigation.setHash();
7846
-          }
7847
-        },
7848
-        slideChange: function slideChange() {
7849
-          var swiper = this;
7850
-          if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
7851
-            swiper.hashNavigation.setHash();
7852
-          }
7853
-        },
7854
-      },
7855
-    };
7856
-
7857
-    /* eslint no-underscore-dangle: "off" */
7858
-
7859
-    var Autoplay = {
7860
-      run: function run() {
7861
-        var swiper = this;
7862
-        var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
7863
-        var delay = swiper.params.autoplay.delay;
7864
-        if ($activeSlideEl.attr('data-swiper-autoplay')) {
7865
-          delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
7866
-        }
7867
-        clearTimeout(swiper.autoplay.timeout);
7868
-        swiper.autoplay.timeout = Utils.nextTick(function () {
7869
-          if (swiper.params.autoplay.reverseDirection) {
7870
-            if (swiper.params.loop) {
7871
-              swiper.loopFix();
7872
-              swiper.slidePrev(swiper.params.speed, true, true);
7873
-              swiper.emit('autoplay');
7874
-            } else if (!swiper.isBeginning) {
7875
-              swiper.slidePrev(swiper.params.speed, true, true);
7876
-              swiper.emit('autoplay');
7877
-            } else if (!swiper.params.autoplay.stopOnLastSlide) {
7878
-              swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
7879
-              swiper.emit('autoplay');
7880
-            } else {
7881
-              swiper.autoplay.stop();
7882
-            }
7883
-          } else if (swiper.params.loop) {
7884
-            swiper.loopFix();
7885
-            swiper.slideNext(swiper.params.speed, true, true);
7886
-            swiper.emit('autoplay');
7887
-          } else if (!swiper.isEnd) {
7888
-            swiper.slideNext(swiper.params.speed, true, true);
7889
-            swiper.emit('autoplay');
7890
-          } else if (!swiper.params.autoplay.stopOnLastSlide) {
7891
-            swiper.slideTo(0, swiper.params.speed, true, true);
7892
-            swiper.emit('autoplay');
7893
-          } else {
7894
-            swiper.autoplay.stop();
7895
-          }
7896
-          if (swiper.params.cssMode && swiper.autoplay.running) { swiper.autoplay.run(); }
7897
-        }, delay);
7898
-      },
7899
-      start: function start() {
7900
-        var swiper = this;
7901
-        if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }
7902
-        if (swiper.autoplay.running) { return false; }
7903
-        swiper.autoplay.running = true;
7904
-        swiper.emit('autoplayStart');
7905
-        swiper.autoplay.run();
7906
-        return true;
7907
-      },
7908
-      stop: function stop() {
7909
-        var swiper = this;
7910
-        if (!swiper.autoplay.running) { return false; }
7911
-        if (typeof swiper.autoplay.timeout === 'undefined') { return false; }
7912
-
7913
-        if (swiper.autoplay.timeout) {
7914
-          clearTimeout(swiper.autoplay.timeout);
7915
-          swiper.autoplay.timeout = undefined;
7916
-        }
7917
-        swiper.autoplay.running = false;
7918
-        swiper.emit('autoplayStop');
7919
-        return true;
7920
-      },
7921
-      pause: function pause(speed) {
7922
-        var swiper = this;
7923
-        if (!swiper.autoplay.running) { return; }
7924
-        if (swiper.autoplay.paused) { return; }
7925
-        if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }
7926
-        swiper.autoplay.paused = true;
7927
-        if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
7928
-          swiper.autoplay.paused = false;
7929
-          swiper.autoplay.run();
7930
-        } else {
7931
-          swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7932
-          swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7933
-        }
7934
-      },
7935
-    };
7936
-
7937
-    var Autoplay$1 = {
7938
-      name: 'autoplay',
7939
-      params: {
7940
-        autoplay: {
7941
-          enabled: false,
7942
-          delay: 3000,
7943
-          waitForTransition: true,
7944
-          disableOnInteraction: true,
7945
-          stopOnLastSlide: false,
7946
-          reverseDirection: false,
7947
-        },
7948
-      },
7949
-      create: function create() {
7950
-        var swiper = this;
7951
-        Utils.extend(swiper, {
7952
-          autoplay: {
7953
-            running: false,
7954
-            paused: false,
7955
-            run: Autoplay.run.bind(swiper),
7956
-            start: Autoplay.start.bind(swiper),
7957
-            stop: Autoplay.stop.bind(swiper),
7958
-            pause: Autoplay.pause.bind(swiper),
7959
-            onVisibilityChange: function onVisibilityChange() {
7960
-              if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
7961
-                swiper.autoplay.pause();
7962
-              }
7963
-              if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
7964
-                swiper.autoplay.run();
7965
-                swiper.autoplay.paused = false;
7966
-              }
7967
-            },
7968
-            onTransitionEnd: function onTransitionEnd(e) {
7969
-              if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }
7970
-              if (e.target !== this) { return; }
7971
-              swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7972
-              swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7973
-              swiper.autoplay.paused = false;
7974
-              if (!swiper.autoplay.running) {
7975
-                swiper.autoplay.stop();
7976
-              } else {
7977
-                swiper.autoplay.run();
7978
-              }
7979
-            },
7980
-          },
7981
-        });
7982
-      },
7983
-      on: {
7984
-        init: function init() {
7985
-          var swiper = this;
7986
-          if (swiper.params.autoplay.enabled) {
7987
-            swiper.autoplay.start();
7988
-            document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
7989
-          }
7990
-        },
7991
-        beforeTransitionStart: function beforeTransitionStart(speed, internal) {
7992
-          var swiper = this;
7993
-          if (swiper.autoplay.running) {
7994
-            if (internal || !swiper.params.autoplay.disableOnInteraction) {
7995
-              swiper.autoplay.pause(speed);
7996
-            } else {
7997
-              swiper.autoplay.stop();
7998
-            }
7999
-          }
8000
-        },
8001
-        sliderFirstMove: function sliderFirstMove() {
8002
-          var swiper = this;
8003
-          if (swiper.autoplay.running) {
8004
-            if (swiper.params.autoplay.disableOnInteraction) {
8005
-              swiper.autoplay.stop();
8006
-            } else {
8007
-              swiper.autoplay.pause();
8008
-            }
8009
-          }
8010
-        },
8011
-        touchEnd: function touchEnd() {
8012
-          var swiper = this;
8013
-          if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
8014
-            swiper.autoplay.run();
8015
-          }
8016
-        },
8017
-        destroy: function destroy() {
8018
-          var swiper = this;
8019
-          if (swiper.autoplay.running) {
8020
-            swiper.autoplay.stop();
8021
-          }
8022
-          document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8023
-        },
8024
-      },
8025
-    };
8026
-
8027
-    var Fade = {
8028
-      setTranslate: function setTranslate() {
8029
-        var swiper = this;
8030
-        var slides = swiper.slides;
8031
-        for (var i = 0; i < slides.length; i += 1) {
8032
-          var $slideEl = swiper.slides.eq(i);
8033
-          var offset = $slideEl[0].swiperSlideOffset;
8034
-          var tx = -offset;
8035
-          if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }
8036
-          var ty = 0;
8037
-          if (!swiper.isHorizontal()) {
8038
-            ty = tx;
8039
-            tx = 0;
8040
-          }
8041
-          var slideOpacity = swiper.params.fadeEffect.crossFade
8042
-            ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
8043
-            : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
8044
-          $slideEl
8045
-            .css({
8046
-              opacity: slideOpacity,
8047
-            })
8048
-            .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)"));
8049
-        }
8050
-      },
8051
-      setTransition: function setTransition(duration) {
8052
-        var swiper = this;
8053
-        var slides = swiper.slides;
8054
-        var $wrapperEl = swiper.$wrapperEl;
8055
-        slides.transition(duration);
8056
-        if (swiper.params.virtualTranslate && duration !== 0) {
8057
-          var eventTriggered = false;
8058
-          slides.transitionEnd(function () {
8059
-            if (eventTriggered) { return; }
8060
-            if (!swiper || swiper.destroyed) { return; }
8061
-            eventTriggered = true;
8062
-            swiper.animating = false;
8063
-            var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8064
-            for (var i = 0; i < triggerEvents.length; i += 1) {
8065
-              $wrapperEl.trigger(triggerEvents[i]);
8066
-            }
8067
-          });
8068
-        }
8069
-      },
8070
-    };
8071
-
8072
-    var EffectFade = {
8073
-      name: 'effect-fade',
8074
-      params: {
8075
-        fadeEffect: {
8076
-          crossFade: false,
8077
-        },
8078
-      },
8079
-      create: function create() {
8080
-        var swiper = this;
8081
-        Utils.extend(swiper, {
8082
-          fadeEffect: {
8083
-            setTranslate: Fade.setTranslate.bind(swiper),
8084
-            setTransition: Fade.setTransition.bind(swiper),
8085
-          },
8086
-        });
8087
-      },
8088
-      on: {
8089
-        beforeInit: function beforeInit() {
8090
-          var swiper = this;
8091
-          if (swiper.params.effect !== 'fade') { return; }
8092
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "fade"));
8093
-          var overwriteParams = {
8094
-            slidesPerView: 1,
8095
-            slidesPerColumn: 1,
8096
-            slidesPerGroup: 1,
8097
-            watchSlidesProgress: true,
8098
-            spaceBetween: 0,
8099
-            virtualTranslate: true,
8100
-          };
8101
-          Utils.extend(swiper.params, overwriteParams);
8102
-          Utils.extend(swiper.originalParams, overwriteParams);
8103
-        },
8104
-        setTranslate: function setTranslate() {
8105
-          var swiper = this;
8106
-          if (swiper.params.effect !== 'fade') { return; }
8107
-          swiper.fadeEffect.setTranslate();
8108
-        },
8109
-        setTransition: function setTransition(duration) {
8110
-          var swiper = this;
8111
-          if (swiper.params.effect !== 'fade') { return; }
8112
-          swiper.fadeEffect.setTransition(duration);
8113
-        },
8114
-      },
8115
-    };
8116
-
8117
-    var Cube = {
8118
-      setTranslate: function setTranslate() {
8119
-        var swiper = this;
8120
-        var $el = swiper.$el;
8121
-        var $wrapperEl = swiper.$wrapperEl;
8122
-        var slides = swiper.slides;
8123
-        var swiperWidth = swiper.width;
8124
-        var swiperHeight = swiper.height;
8125
-        var rtl = swiper.rtlTranslate;
8126
-        var swiperSize = swiper.size;
8127
-        var params = swiper.params.cubeEffect;
8128
-        var isHorizontal = swiper.isHorizontal();
8129
-        var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8130
-        var wrapperRotate = 0;
8131
-        var $cubeShadowEl;
8132
-        if (params.shadow) {
8133
-          if (isHorizontal) {
8134
-            $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
8135
-            if ($cubeShadowEl.length === 0) {
8136
-              $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8137
-              $wrapperEl.append($cubeShadowEl);
8138
-            }
8139
-            $cubeShadowEl.css({ height: (swiperWidth + "px") });
8140
-          } else {
8141
-            $cubeShadowEl = $el.find('.swiper-cube-shadow');
8142
-            if ($cubeShadowEl.length === 0) {
8143
-              $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8144
-              $el.append($cubeShadowEl);
8145
-            }
8146
-          }
8147
-        }
8148
-        for (var i = 0; i < slides.length; i += 1) {
8149
-          var $slideEl = slides.eq(i);
8150
-          var slideIndex = i;
8151
-          if (isVirtual) {
8152
-            slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
8153
-          }
8154
-          var slideAngle = slideIndex * 90;
8155
-          var round = Math.floor(slideAngle / 360);
8156
-          if (rtl) {
8157
-            slideAngle = -slideAngle;
8158
-            round = Math.floor(-slideAngle / 360);
8159
-          }
8160
-          var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8161
-          var tx = 0;
8162
-          var ty = 0;
8163
-          var tz = 0;
8164
-          if (slideIndex % 4 === 0) {
8165
-            tx = -round * 4 * swiperSize;
8166
-            tz = 0;
8167
-          } else if ((slideIndex - 1) % 4 === 0) {
8168
-            tx = 0;
8169
-            tz = -round * 4 * swiperSize;
8170
-          } else if ((slideIndex - 2) % 4 === 0) {
8171
-            tx = swiperSize + (round * 4 * swiperSize);
8172
-            tz = swiperSize;
8173
-          } else if ((slideIndex - 3) % 4 === 0) {
8174
-            tx = -swiperSize;
8175
-            tz = (3 * swiperSize) + (swiperSize * 4 * round);
8176
-          }
8177
-          if (rtl) {
8178
-            tx = -tx;
8179
-          }
8180
-
8181
-          if (!isHorizontal) {
8182
-            ty = tx;
8183
-            tx = 0;
8184
-          }
8185
-
8186
-          var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
8187
-          if (progress <= 1 && progress > -1) {
8188
-            wrapperRotate = (slideIndex * 90) + (progress * 90);
8189
-            if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }
8190
-          }
8191
-          $slideEl.transform(transform);
8192
-          if (params.slideShadows) {
8193
-            // Set shadows
8194
-            var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8195
-            var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8196
-            if (shadowBefore.length === 0) {
8197
-              shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
8198
-              $slideEl.append(shadowBefore);
8199
-            }
8200
-            if (shadowAfter.length === 0) {
8201
-              shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
8202
-              $slideEl.append(shadowAfter);
8203
-            }
8204
-            if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
8205
-            if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
8206
-          }
8207
-        }
8208
-        $wrapperEl.css({
8209
-          '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
8210
-          '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
8211
-          '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
8212
-          'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
8213
-        });
8214
-
8215
-        if (params.shadow) {
8216
-          if (isHorizontal) {
8217
-            $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")"));
8218
-          } else {
8219
-            var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
8220
-            var multiplier = 1.5 - (
8221
-              (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
8222
-              + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
8223
-            );
8224
-            var scale1 = params.shadowScale;
8225
-            var scale2 = params.shadowScale / multiplier;
8226
-            var offset = params.shadowOffset;
8227
-            $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)"));
8228
-          }
8229
-        }
8230
-        var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
8231
-        $wrapperEl
8232
-          .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)"));
8233
-      },
8234
-      setTransition: function setTransition(duration) {
8235
-        var swiper = this;
8236
-        var $el = swiper.$el;
8237
-        var slides = swiper.slides;
8238
-        slides
8239
-          .transition(duration)
8240
-          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8241
-          .transition(duration);
8242
-        if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
8243
-          $el.find('.swiper-cube-shadow').transition(duration);
8244
-        }
8245
-      },
8246
-    };
8247
-
8248
-    var EffectCube = {
8249
-      name: 'effect-cube',
8250
-      params: {
8251
-        cubeEffect: {
8252
-          slideShadows: true,
8253
-          shadow: true,
8254
-          shadowOffset: 20,
8255
-          shadowScale: 0.94,
8256
-        },
8257
-      },
8258
-      create: function create() {
8259
-        var swiper = this;
8260
-        Utils.extend(swiper, {
8261
-          cubeEffect: {
8262
-            setTranslate: Cube.setTranslate.bind(swiper),
8263
-            setTransition: Cube.setTransition.bind(swiper),
8264
-          },
8265
-        });
8266
-      },
8267
-      on: {
8268
-        beforeInit: function beforeInit() {
8269
-          var swiper = this;
8270
-          if (swiper.params.effect !== 'cube') { return; }
8271
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "cube"));
8272
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
8273
-          var overwriteParams = {
8274
-            slidesPerView: 1,
8275
-            slidesPerColumn: 1,
8276
-            slidesPerGroup: 1,
8277
-            watchSlidesProgress: true,
8278
-            resistanceRatio: 0,
8279
-            spaceBetween: 0,
8280
-            centeredSlides: false,
8281
-            virtualTranslate: true,
8282
-          };
8283
-          Utils.extend(swiper.params, overwriteParams);
8284
-          Utils.extend(swiper.originalParams, overwriteParams);
8285
-        },
8286
-        setTranslate: function setTranslate() {
8287
-          var swiper = this;
8288
-          if (swiper.params.effect !== 'cube') { return; }
8289
-          swiper.cubeEffect.setTranslate();
8290
-        },
8291
-        setTransition: function setTransition(duration) {
8292
-          var swiper = this;
8293
-          if (swiper.params.effect !== 'cube') { return; }
8294
-          swiper.cubeEffect.setTransition(duration);
8295
-        },
8296
-      },
8297
-    };
8298
-
8299
-    var Flip = {
8300
-      setTranslate: function setTranslate() {
8301
-        var swiper = this;
8302
-        var slides = swiper.slides;
8303
-        var rtl = swiper.rtlTranslate;
8304
-        for (var i = 0; i < slides.length; i += 1) {
8305
-          var $slideEl = slides.eq(i);
8306
-          var progress = $slideEl[0].progress;
8307
-          if (swiper.params.flipEffect.limitRotation) {
8308
-            progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8309
-          }
8310
-          var offset = $slideEl[0].swiperSlideOffset;
8311
-          var rotate = -180 * progress;
8312
-          var rotateY = rotate;
8313
-          var rotateX = 0;
8314
-          var tx = -offset;
8315
-          var ty = 0;
8316
-          if (!swiper.isHorizontal()) {
8317
-            ty = tx;
8318
-            tx = 0;
8319
-            rotateX = -rotateY;
8320
-            rotateY = 0;
8321
-          } else if (rtl) {
8322
-            rotateY = -rotateY;
8323
-          }
8324
-
8325
-          $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
8326
-
8327
-          if (swiper.params.flipEffect.slideShadows) {
8328
-            // Set shadows
8329
-            var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8330
-            var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8331
-            if (shadowBefore.length === 0) {
8332
-              shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>"));
8333
-              $slideEl.append(shadowBefore);
8334
-            }
8335
-            if (shadowAfter.length === 0) {
8336
-              shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>"));
8337
-              $slideEl.append(shadowAfter);
8338
-            }
8339
-            if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
8340
-            if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
8341
-          }
8342
-          $slideEl
8343
-            .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"));
8344
-        }
8345
-      },
8346
-      setTransition: function setTransition(duration) {
8347
-        var swiper = this;
8348
-        var slides = swiper.slides;
8349
-        var activeIndex = swiper.activeIndex;
8350
-        var $wrapperEl = swiper.$wrapperEl;
8351
-        slides
8352
-          .transition(duration)
8353
-          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8354
-          .transition(duration);
8355
-        if (swiper.params.virtualTranslate && duration !== 0) {
8356
-          var eventTriggered = false;
8357
-          // eslint-disable-next-line
8358
-          slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
8359
-            if (eventTriggered) { return; }
8360
-            if (!swiper || swiper.destroyed) { return; }
8361
-            // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
8362
-            eventTriggered = true;
8363
-            swiper.animating = false;
8364
-            var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8365
-            for (var i = 0; i < triggerEvents.length; i += 1) {
8366
-              $wrapperEl.trigger(triggerEvents[i]);
8367
-            }
8368
-          });
8369
-        }
8370
-      },
8371
-    };
8372
-
8373
-    var EffectFlip = {
8374
-      name: 'effect-flip',
8375
-      params: {
8376
-        flipEffect: {
8377
-          slideShadows: true,
8378
-          limitRotation: true,
8379
-        },
8380
-      },
8381
-      create: function create() {
8382
-        var swiper = this;
8383
-        Utils.extend(swiper, {
8384
-          flipEffect: {
8385
-            setTranslate: Flip.setTranslate.bind(swiper),
8386
-            setTransition: Flip.setTransition.bind(swiper),
8387
-          },
8388
-        });
8389
-      },
8390
-      on: {
8391
-        beforeInit: function beforeInit() {
8392
-          var swiper = this;
8393
-          if (swiper.params.effect !== 'flip') { return; }
8394
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "flip"));
8395
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
8396
-          var overwriteParams = {
8397
-            slidesPerView: 1,
8398
-            slidesPerColumn: 1,
8399
-            slidesPerGroup: 1,
8400
-            watchSlidesProgress: true,
8401
-            spaceBetween: 0,
8402
-            virtualTranslate: true,
8403
-          };
8404
-          Utils.extend(swiper.params, overwriteParams);
8405
-          Utils.extend(swiper.originalParams, overwriteParams);
8406
-        },
8407
-        setTranslate: function setTranslate() {
8408
-          var swiper = this;
8409
-          if (swiper.params.effect !== 'flip') { return; }
8410
-          swiper.flipEffect.setTranslate();
8411
-        },
8412
-        setTransition: function setTransition(duration) {
8413
-          var swiper = this;
8414
-          if (swiper.params.effect !== 'flip') { return; }
8415
-          swiper.flipEffect.setTransition(duration);
8416
-        },
8417
-      },
8418
-    };
8419
-
8420
-    var Coverflow = {
8421
-      setTranslate: function setTranslate() {
8422
-        var swiper = this;
8423
-        var swiperWidth = swiper.width;
8424
-        var swiperHeight = swiper.height;
8425
-        var slides = swiper.slides;
8426
-        var $wrapperEl = swiper.$wrapperEl;
8427
-        var slidesSizesGrid = swiper.slidesSizesGrid;
8428
-        var params = swiper.params.coverflowEffect;
8429
-        var isHorizontal = swiper.isHorizontal();
8430
-        var transform = swiper.translate;
8431
-        var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
8432
-        var rotate = isHorizontal ? params.rotate : -params.rotate;
8433
-        var translate = params.depth;
8434
-        // Each slide offset from center
8435
-        for (var i = 0, length = slides.length; i < length; i += 1) {
8436
-          var $slideEl = slides.eq(i);
8437
-          var slideSize = slidesSizesGrid[i];
8438
-          var slideOffset = $slideEl[0].swiperSlideOffset;
8439
-          var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
8440
-
8441
-          var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
8442
-          var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
8443
-          // var rotateZ = 0
8444
-          var translateZ = -translate * Math.abs(offsetMultiplier);
8445
-
8446
-          var stretch = params.stretch;
8447
-          // Allow percentage to make a relative stretch for responsive sliders
8448
-          if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
8449
-            stretch = ((parseFloat(params.stretch) / 100) * slideSize);
8450
-          }
8451
-          var translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
8452
-          var translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
8453
-
8454
-          // Fix for ultra small values
8455
-          if (Math.abs(translateX) < 0.001) { translateX = 0; }
8456
-          if (Math.abs(translateY) < 0.001) { translateY = 0; }
8457
-          if (Math.abs(translateZ) < 0.001) { translateZ = 0; }
8458
-          if (Math.abs(rotateY) < 0.001) { rotateY = 0; }
8459
-          if (Math.abs(rotateX) < 0.001) { rotateX = 0; }
8460
-
8461
-          var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
8462
-
8463
-          $slideEl.transform(slideTransform);
8464
-          $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
8465
-          if (params.slideShadows) {
8466
-            // Set shadows
8467
-            var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8468
-            var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8469
-            if ($shadowBeforeEl.length === 0) {
8470
-              $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
8471
-              $slideEl.append($shadowBeforeEl);
8472
-            }
8473
-            if ($shadowAfterEl.length === 0) {
8474
-              $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
8475
-              $slideEl.append($shadowAfterEl);
8476
-            }
8477
-            if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }
8478
-            if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }
8479
-          }
8480
-        }
8481
-
8482
-        // Set correct perspective for IE10
8483
-        if (Support.pointerEvents || Support.prefixedPointerEvents) {
8484
-          var ws = $wrapperEl[0].style;
8485
-          ws.perspectiveOrigin = center + "px 50%";
8486
-        }
8487
-      },
8488
-      setTransition: function setTransition(duration) {
8489
-        var swiper = this;
8490
-        swiper.slides
8491
-          .transition(duration)
8492
-          .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
8493
-          .transition(duration);
8494
-      },
8495
-    };
8496
-
8497
-    var EffectCoverflow = {
8498
-      name: 'effect-coverflow',
8499
-      params: {
8500
-        coverflowEffect: {
8501
-          rotate: 50,
8502
-          stretch: 0,
8503
-          depth: 100,
8504
-          modifier: 1,
8505
-          slideShadows: true,
8506
-        },
8507
-      },
8508
-      create: function create() {
8509
-        var swiper = this;
8510
-        Utils.extend(swiper, {
8511
-          coverflowEffect: {
8512
-            setTranslate: Coverflow.setTranslate.bind(swiper),
8513
-            setTransition: Coverflow.setTransition.bind(swiper),
8514
-          },
8515
-        });
8516
-      },
8517
-      on: {
8518
-        beforeInit: function beforeInit() {
8519
-          var swiper = this;
8520
-          if (swiper.params.effect !== 'coverflow') { return; }
8521
-
8522
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow"));
8523
-          swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
8524
-
8525
-          swiper.params.watchSlidesProgress = true;
8526
-          swiper.originalParams.watchSlidesProgress = true;
8527
-        },
8528
-        setTranslate: function setTranslate() {
8529
-          var swiper = this;
8530
-          if (swiper.params.effect !== 'coverflow') { return; }
8531
-          swiper.coverflowEffect.setTranslate();
8532
-        },
8533
-        setTransition: function setTransition(duration) {
8534
-          var swiper = this;
8535
-          if (swiper.params.effect !== 'coverflow') { return; }
8536
-          swiper.coverflowEffect.setTransition(duration);
8537
-        },
8538
-      },
8539
-    };
8540
-
8541
-    var Thumbs = {
8542
-      init: function init() {
8543
-        var swiper = this;
8544
-        var ref = swiper.params;
8545
-        var thumbsParams = ref.thumbs;
8546
-        var SwiperClass = swiper.constructor;
8547
-        if (thumbsParams.swiper instanceof SwiperClass) {
8548
-          swiper.thumbs.swiper = thumbsParams.swiper;
8549
-          Utils.extend(swiper.thumbs.swiper.originalParams, {
8550
-            watchSlidesProgress: true,
8551
-            slideToClickedSlide: false,
8552
-          });
8553
-          Utils.extend(swiper.thumbs.swiper.params, {
8554
-            watchSlidesProgress: true,
8555
-            slideToClickedSlide: false,
8556
-          });
8557
-        } else if (Utils.isObject(thumbsParams.swiper)) {
8558
-          swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
8559
-            watchSlidesVisibility: true,
8560
-            watchSlidesProgress: true,
8561
-            slideToClickedSlide: false,
8562
-          }));
8563
-          swiper.thumbs.swiperCreated = true;
8564
-        }
8565
-        swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
8566
-        swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
8567
-      },
8568
-      onThumbClick: function onThumbClick() {
8569
-        var swiper = this;
8570
-        var thumbsSwiper = swiper.thumbs.swiper;
8571
-        if (!thumbsSwiper) { return; }
8572
-        var clickedIndex = thumbsSwiper.clickedIndex;
8573
-        var clickedSlide = thumbsSwiper.clickedSlide;
8574
-        if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }
8575
-        if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }
8576
-        var slideToIndex;
8577
-        if (thumbsSwiper.params.loop) {
8578
-          slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
8579
-        } else {
8580
-          slideToIndex = clickedIndex;
8581
-        }
8582
-        if (swiper.params.loop) {
8583
-          var currentIndex = swiper.activeIndex;
8584
-          if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
8585
-            swiper.loopFix();
8586
-            // eslint-disable-next-line
8587
-            swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
8588
-            currentIndex = swiper.activeIndex;
8589
-          }
8590
-          var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
8591
-          var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
8592
-          if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }
8593
-          else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }
8594
-          else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }
8595
-          else { slideToIndex = prevIndex; }
8596
-        }
8597
-        swiper.slideTo(slideToIndex);
8598
-      },
8599
-      update: function update(initial) {
8600
-        var swiper = this;
8601
-        var thumbsSwiper = swiper.thumbs.swiper;
8602
-        if (!thumbsSwiper) { return; }
8603
-
8604
-        var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
8605
-          ? thumbsSwiper.slidesPerViewDynamic()
8606
-          : thumbsSwiper.params.slidesPerView;
8607
-
8608
-        var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
8609
-        var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
8610
-        if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
8611
-          var currentThumbsIndex = thumbsSwiper.activeIndex;
8612
-          var newThumbsIndex;
8613
-          var direction;
8614
-          if (thumbsSwiper.params.loop) {
8615
-            if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
8616
-              thumbsSwiper.loopFix();
8617
-              // eslint-disable-next-line
8618
-              thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
8619
-              currentThumbsIndex = thumbsSwiper.activeIndex;
8620
-            }
8621
-            // Find actual thumbs index to slide to
8622
-            var prevThumbsIndex = thumbsSwiper.slides
8623
-              .eq(currentThumbsIndex)
8624
-              .prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0)
8625
-              .index();
8626
-            var nextThumbsIndex = thumbsSwiper.slides
8627
-              .eq(currentThumbsIndex)
8628
-              .nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0)
8629
-              .index();
8630
-            if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }
8631
-            else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }
8632
-            else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }
8633
-            else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }
8634
-            else { newThumbsIndex = prevThumbsIndex; }
8635
-            direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
8636
-          } else {
8637
-            newThumbsIndex = swiper.realIndex;
8638
-            direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
8639
-          }
8640
-          if (useOffset) {
8641
-            newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
8642
-          }
8643
-
8644
-          if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
8645
-            if (thumbsSwiper.params.centeredSlides) {
8646
-              if (newThumbsIndex > currentThumbsIndex) {
8647
-                newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
8648
-              } else {
8649
-                newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
8650
-              }
8651
-            } else if (newThumbsIndex > currentThumbsIndex) {
8652
-              newThumbsIndex = newThumbsIndex - slidesPerView + 1;
8653
-            }
8654
-            thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
8655
-          }
8656
-        }
8657
-
8658
-        // Activate thumbs
8659
-        var thumbsToActivate = 1;
8660
-        var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
8661
-
8662
-        if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
8663
-          thumbsToActivate = swiper.params.slidesPerView;
8664
-        }
8665
-
8666
-        if (!swiper.params.thumbs.multipleActiveThumbs) {
8667
-          thumbsToActivate = 1;
8668
-        }
8669
-
8670
-        thumbsToActivate = Math.floor(thumbsToActivate);
8671
-
8672
-        thumbsSwiper.slides.removeClass(thumbActiveClass);
8673
-        if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
8674
-          for (var i = 0; i < thumbsToActivate; i += 1) {
8675
-            thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass);
8676
-          }
8677
-        } else {
8678
-          for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {
8679
-            thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);
8680
-          }
8681
-        }
8682
-      },
8683
-    };
8684
-    var Thumbs$1 = {
8685
-      name: 'thumbs',
8686
-      params: {
8687
-        thumbs: {
8688
-          swiper: null,
8689
-          multipleActiveThumbs: true,
8690
-          autoScrollOffset: 0,
8691
-          slideThumbActiveClass: 'swiper-slide-thumb-active',
8692
-          thumbsContainerClass: 'swiper-container-thumbs',
8693
-        },
8694
-      },
8695
-      create: function create() {
8696
-        var swiper = this;
8697
-        Utils.extend(swiper, {
8698
-          thumbs: {
8699
-            swiper: null,
8700
-            init: Thumbs.init.bind(swiper),
8701
-            update: Thumbs.update.bind(swiper),
8702
-            onThumbClick: Thumbs.onThumbClick.bind(swiper),
8703
-          },
8704
-        });
8705
-      },
8706
-      on: {
8707
-        beforeInit: function beforeInit() {
8708
-          var swiper = this;
8709
-          var ref = swiper.params;
8710
-          var thumbs = ref.thumbs;
8711
-          if (!thumbs || !thumbs.swiper) { return; }
8712
-          swiper.thumbs.init();
8713
-          swiper.thumbs.update(true);
8714
-        },
8715
-        slideChange: function slideChange() {
8716
-          var swiper = this;
8717
-          if (!swiper.thumbs.swiper) { return; }
8718
-          swiper.thumbs.update();
8719
-        },
8720
-        update: function update() {
8721
-          var swiper = this;
8722
-          if (!swiper.thumbs.swiper) { return; }
8723
-          swiper.thumbs.update();
8724
-        },
8725
-        resize: function resize() {
8726
-          var swiper = this;
8727
-          if (!swiper.thumbs.swiper) { return; }
8728
-          swiper.thumbs.update();
8729
-        },
8730
-        observerUpdate: function observerUpdate() {
8731
-          var swiper = this;
8732
-          if (!swiper.thumbs.swiper) { return; }
8733
-          swiper.thumbs.update();
8734
-        },
8735
-        setTransition: function setTransition(duration) {
8736
-          var swiper = this;
8737
-          var thumbsSwiper = swiper.thumbs.swiper;
8738
-          if (!thumbsSwiper) { return; }
8739
-          thumbsSwiper.setTransition(duration);
8740
-        },
8741
-        beforeDestroy: function beforeDestroy() {
8742
-          var swiper = this;
8743
-          var thumbsSwiper = swiper.thumbs.swiper;
8744
-          if (!thumbsSwiper) { return; }
8745
-          if (swiper.thumbs.swiperCreated && thumbsSwiper) {
8746
-            thumbsSwiper.destroy();
8747
-          }
8748
-        },
8749
-      },
8750
-    };
8751
-
8752
-    // Swiper Class
8753
-
8754
-    var components = [
8755
-      Device$1,
8756
-      Support$1,
8757
-      Browser$1,
8758
-      Resize,
8759
-      Observer$1,
8760
-      Virtual$1,
8761
-      Keyboard$1,
8762
-      Mousewheel$1,
8763
-      Navigation$1,
8764
-      Pagination$1,
8765
-      Scrollbar$1,
8766
-      Parallax$1,
8767
-      Zoom$1,
8768
-      Lazy$1,
8769
-      Controller$1,
8770
-      A11y,
8771
-      History$1,
8772
-      HashNavigation$1,
8773
-      Autoplay$1,
8774
-      EffectFade,
8775
-      EffectCube,
8776
-      EffectFlip,
8777
-      EffectCoverflow,
8778
-      Thumbs$1
8779
-    ];
8780
-
8781
-    if (typeof Swiper.use === 'undefined') {
8782
-      Swiper.use = Swiper.Class.use;
8783
-      Swiper.installModule = Swiper.Class.installModule;
8784
-    }
8785
-
8786
-    Swiper.use(components);
8787
-
8788
-    return Swiper;
8789
-
8790
-})));
8791
-//# sourceMappingURL=swiper.js.map
8792 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"file":"swiper.js.map","sources":["../../node_modules/ssr-window/dist/ssr-window.esm.js","../../node_modules/dom7/dist/dom7.modular.js","../../src/utils/dom.js","../../src/utils/utils.js","../../src/utils/support.js","../../src/utils/class.js","../../src/components/core/update/updateSize.js","../../src/components/core/update/updateSlides.js","../../src/components/core/update/updateAutoHeight.js","../../src/components/core/update/updateSlidesOffset.js","../../src/components/core/update/updateSlidesProgress.js","../../src/components/core/update/updateProgress.js","../../src/components/core/update/updateSlidesClasses.js","../../src/components/core/update/updateActiveIndex.js","../../src/components/core/update/updateClickedSlide.js","../../src/components/core/update/index.js","../../src/components/core/translate/getTranslate.js","../../src/components/core/translate/setTranslate.js","../../src/components/core/translate/minTranslate.js","../../src/components/core/translate/maxTranslate.js","../../src/components/core/translate/translateTo.js","../../src/components/core/translate/index.js","../../src/components/core/transition/setTransition.js","../../src/components/core/transition/transitionStart.js","../../src/components/core/transition/transitionEnd.js","../../src/components/core/transition/index.js","../../src/components/core/slide/slideTo.js","../../src/components/core/slide/slideToLoop.js","../../src/components/core/slide/slideNext.js","../../src/components/core/slide/slidePrev.js","../../src/components/core/slide/slideReset.js","../../src/components/core/slide/slideToClosest.js","../../src/components/core/slide/slideToClickedSlide.js","../../src/components/core/slide/index.js","../../src/components/core/loop/loopCreate.js","../../src/components/core/loop/loopFix.js","../../src/components/core/loop/loopDestroy.js","../../src/components/core/loop/index.js","../../src/components/core/grab-cursor/setGrabCursor.js","../../src/components/core/grab-cursor/unsetGrabCursor.js","../../src/components/core/grab-cursor/index.js","../../src/components/core/manipulation/appendSlide.js","../../src/components/core/manipulation/prependSlide.js","../../src/components/core/manipulation/addSlide.js","../../src/components/core/manipulation/removeSlide.js","../../src/components/core/manipulation/removeAllSlides.js","../../src/components/core/manipulation/index.js","../../src/utils/device.js","../../src/components/core/events/onTouchStart.js","../../src/components/core/events/onTouchMove.js","../../src/components/core/events/onTouchEnd.js","../../src/components/core/events/onResize.js","../../src/components/core/events/onClick.js","../../src/components/core/events/onScroll.js","../../src/components/core/events/index.js","../../src/components/core/breakpoints/setBreakpoint.js","../../src/components/core/breakpoints/getBreakpoint.js","../../src/components/core/breakpoints/index.js","../../src/components/core/classes/addClasses.js","../../src/components/core/classes/removeClasses.js","../../src/components/core/classes/index.js","../../src/components/core/images/loadImage.js","../../src/components/core/images/preloadImages.js","../../src/components/core/images/index.js","../../src/components/core/check-overflow/index.js","../../src/components/core/defaults.js","../../src/components/core/core-class.js","../../src/modules/device/device.js","../../src/modules/support/support.js","../../src/utils/browser.js","../../src/modules/browser/browser.js","../../src/modules/resize/resize.js","../../src/modules/observer/observer.js","../../src/components/virtual/virtual.js","../../src/components/keyboard/keyboard.js","../../src/components/mousewheel/mousewheel.js","../../src/components/navigation/navigation.js","../../src/components/pagination/pagination.js","../../src/components/scrollbar/scrollbar.js","../../src/components/parallax/parallax.js","../../src/components/zoom/zoom.js","../../src/components/lazy/lazy.js","../../src/components/controller/controller.js","../../src/components/a11y/a11y.js","../../src/components/history/history.js","../../src/components/hash-navigation/hash-navigation.js","../../src/components/autoplay/autoplay.js","../../src/components/effect-fade/effect-fade.js","../../src/components/effect-cube/effect-cube.js","../../src/components/effect-flip/effect-flip.js","../../src/components/effect-coverflow/effect-coverflow.js","../../src/components/thumbs/thumbs.js","../../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target, src) {\n    if (target === void 0) { target = {}; }\n    if (src === void 0) { src = {}; }\n    Object.keys(src).forEach(function (key) {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n    body: {},\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    activeElement: {\n        blur: function () { },\n        nodeName: '',\n    },\n    querySelector: function () {\n        return null;\n    },\n    querySelectorAll: function () {\n        return [];\n    },\n    getElementById: function () {\n        return null;\n    },\n    createEvent: function () {\n        return {\n            initEvent: function () { },\n        };\n    },\n    createElement: function () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute: function () { },\n            getElementsByTagName: function () {\n                return [];\n            },\n        };\n    },\n    createElementNS: function () {\n        return {};\n    },\n    importNode: function () {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState: function () { },\n        pushState: function () { },\n        go: function () { },\n        back: function () { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    getComputedStyle: function () {\n        return {\n            getPropertyValue: function () {\n                return '';\n            },\n        };\n    },\n    Image: function () { },\n    Date: function () { },\n    screen: {},\n    setTimeout: function () { },\n    clearTimeout: function () { },\n    matchMedia: function () {\n        return {};\n    },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n  constructor(arr) {\n    const self = this;\n    // Create array-like object\n    for (let i = 0; i < arr.length; i += 1) {\n      self[i] = arr[i];\n    }\n    self.length = arr.length;\n    // Return collection with methods\n    return this;\n  }\n}\n\nfunction $(selector, context) {\n  const arr = [];\n  let i = 0;\n  if (selector && !context) {\n    if (selector instanceof Dom7) {\n      return selector;\n    }\n  }\n  if (selector) {\n      // String\n    if (typeof selector === 'string') {\n      let els;\n      let tempParent;\n      const html = selector.trim();\n      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n        let toCreate = 'div';\n        if (html.indexOf('<li') === 0) toCreate = 'ul';\n        if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n        if (html.indexOf('<tbody') === 0) toCreate = 'table';\n        if (html.indexOf('<option') === 0) toCreate = 'select';\n        tempParent = document.createElement(toCreate);\n        tempParent.innerHTML = html;\n        for (i = 0; i < tempParent.childNodes.length; i += 1) {\n          arr.push(tempParent.childNodes[i]);\n        }\n      } else {\n        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n          // Pure ID selector\n          els = [document.getElementById(selector.trim().split('#')[1])];\n        } else {\n          // Other selectors\n          els = (context || document).querySelectorAll(selector.trim());\n        }\n        for (i = 0; i < els.length; i += 1) {\n          if (els[i]) arr.push(els[i]);\n        }\n      }\n    } else if (selector.nodeType || selector === window || selector === document) {\n      // Node/element\n      arr.push(selector);\n    } else if (selector.length > 0 && selector[0].nodeType) {\n      // Array of elements or instance of Dom\n      for (i = 0; i < selector.length; i += 1) {\n        arr.push(selector[i]);\n      }\n    }\n  }\n  return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n  const uniqueArray = [];\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n  if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n  else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n  return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n  if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n  else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n  return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n  if (typeof className === 'undefined') {\n    return this;\n  }\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n    }\n  }\n  return this;\n}\nfunction removeClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n    }\n  }\n  return this;\n}\nfunction hasClass(className) {\n  if (!this[0]) return false;\n  return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n    }\n  }\n  return this;\n}\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  }\n\n  // Set attrs\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      // eslint-disable-next-line\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        // eslint-disable-next-line\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n    return this;\n  }\n}\nfunction data(key, value) {\n  let el;\n  if (typeof value === 'undefined') {\n    el = this[0];\n    // Get value\n    if (el) {\n      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n        return el.dom7ElementDataStorage[key];\n      }\n\n      const dataKey = el.getAttribute(`data-${key}`);\n      if (dataKey) {\n        return dataKey;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  // Set value\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n  return this;\n}\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n  if (el.dataset) {\n    // eslint-disable-next-line\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      // eslint-disable-next-line\n      const attr = el.attributes[i];\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n  // eslint-disable-next-line\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;\n    else if (dataset[key] === 'true') dataset[key] = true;\n    else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n  return dataset;\n}\nfunction val(value) {\n  const dom = this;\n  if (typeof value === 'undefined') {\n    if (dom[0]) {\n      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n        const values = [];\n        for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n          values.push(dom[0].selectedOptions[i].value);\n        }\n        return values;\n      }\n      return dom[0].value;\n    }\n    return undefined;\n  }\n\n  for (let i = 0; i < dom.length; i += 1) {\n    const el = dom[i];\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n  return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransform = transform;\n    elStyle.transform = transform;\n  }\n  return this;\n}\nfunction transition(duration) {\n  if (typeof duration !== 'string') {\n    duration = `${duration}ms`; // eslint-disable-line\n  }\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransitionDuration = duration;\n    elStyle.transitionDuration = duration;\n  }\n  return this;\n}\n// Events\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);\n    else {\n      const parents = $(target).parents(); // eslint-disable-line\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    listener.apply(this, eventData);\n  }\n  const events = eventType.split(' ');\n  let j;\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent,\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent,\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n  return this;\n}\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  const events = eventType.split(' ');\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n  return this;\n}\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n  const events = args[0].split(' ');\n  const eventData = args[1];\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let evt;\n      try {\n        evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true,\n        });\n      } catch (e) {\n        evt = document.createEvent('Event');\n        evt.initEvent(event, true, true);\n        evt.detail = eventData;\n      }\n      // eslint-disable-next-line\n      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n      el.dispatchEvent(evt);\n      el.dom7EventData = [];\n      delete el.dom7EventData;\n    }\n  }\n  return this;\n}\nfunction transitionEnd(callback) {\n  const events = ['webkitTransitionEnd', 'transitionend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    /* jshint validthis:true */\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\nfunction animationEnd(callback) {\n  const events = ['webkitAnimationEnd', 'animationend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\n// Sizing/Styles\nfunction width() {\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n    return this[0].offsetWidth;\n  }\n  return null;\n}\nfunction height() {\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n    return this[0].offsetHeight;\n  }\n  return null;\n}\nfunction offset() {\n  if (this.length > 0) {\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: (box.top + scrollTop) - clientTop,\n      left: (box.left + scrollLeft) - clientLeft,\n    };\n  }\n\n  return null;\n}\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n  return this;\n}\nfunction show() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n  return this;\n}\nfunction styles() {\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\nfunction css(props, value) {\n  let i;\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      for (i = 0; i < this.length; i += 1) {\n        // eslint-disable-next-line\n        for (let prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n      return this;\n    }\n  }\n  if (arguments.length === 2 && typeof props === 'string') {\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n    return this;\n  }\n  return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n  const arr = [];\n  for (let i = 0; i < this.length; i += 1) {\n    arr.push(this[i]);\n  }\n  return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], i, this[i]) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction forEach(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], this[i], i) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction filter(callback) {\n  const matchedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n  }\n  return new Dom7(matchedItems);\n}\nfunction map(callback) {\n  const modifiedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    modifiedItems.push(callback.call(dom[i], i, dom[i]));\n  }\n  return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : undefined;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    if (this[0]) {\n      return this[0].textContent.trim();\n    }\n    return null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n  return this;\n}\nfunction is(selector) {\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n    compareWith = $(selector);\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  } else if (selector === document) return el === document;\n  else if (selector === window) return el === window;\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  }\n  return false;\n}\nfunction indexOf(el) {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i] === el) return i;\n  }\n  return -1;\n}\nfunction index() {\n  let child = this[0];\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n  let returnIndex;\n  if (index > length - 1) {\n    return new Dom7([]);\n  }\n  if (index < 0) {\n    returnIndex = length + index;\n    if (returnIndex < 0) return new Dom7([]);\n    return new Dom7([this[returnIndex]]);\n  }\n  return new Dom7([this[index]]);\n}\nfunction append(...args) {\n  let newChild;\n\n  for (let k = 0; k < args.length; k += 1) {\n    newChild = args[k];\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\nfunction prepend(newChild) {\n  let i;\n  let j;\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\nfunction insertBefore(selector) {\n  const before = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\nfunction insertAfter(selector) {\n  const after = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return new Dom7([this[0].nextElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return new Dom7(nextEls);\n}\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return new Dom7([el.previousElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n  return $(unique(parents));\n}\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n      parent = parent.parentNode;\n    }\n  }\n  return $(unique(parents));\n}\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n  if (typeof selector === 'undefined') {\n    return new Dom7([]);\n  }\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n  return closest;\n}\nfunction find(selector) {\n  const foundElements = [];\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n  return new Dom7(foundElements);\n}\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].childNodes;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector) {\n        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n  return new Dom7(unique(children));\n}\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n  return this;\n}\nfunction detach() {\n  return this.remove();\n}\nfunction add(...args) {\n  const dom = this;\n  let i;\n  let j;\n  for (i = 0; i < args.length; i += 1) {\n    const toAdd = $(args[i]);\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom[dom.length] = toAdd[j];\n      dom.length += 1;\n    }\n  }\n  return dom;\n}\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n      el.textContent = '';\n    }\n  }\n  return this;\n}\n\nfunction scrollTo(...args) {\n  let [left, top, duration, easing, callback] = args;\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n  if (typeof easing === 'undefined') easing = 'swing';\n\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n    let scrollLeft; // eslint-disable-line\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n    if (animateTop) {\n      currentTop = el.scrollTop;\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n    if (!duration) return;\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n      let done;\n      if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n      if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      requestAnimationFrame(render);\n    }\n    requestAnimationFrame(render);\n  });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing', // or 'linear'\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n    }, initialParams),\n\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - (Math.cos(progress * Math.PI) / 2);\n      }\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n      return progress;\n    },\n    stop() {\n      if (a.frameId) {\n        cancelAnimationFrame(a.frameId);\n      }\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done(complete) {\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n      const elements = [];\n\n      // Define & Cache Initials & Units\n      a.elements.each((index, el) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n        elements[index] = {\n          container: el,\n        };\n        Object.keys(props).forEach((prop) => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue,\n          };\n        });\n      });\n\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress;\n        // let el;\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n        if (startTime === null) {\n          startTime = time;\n        }\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n        }\n\n        elements.forEach((element) => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach((prop) => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const { initialValue, finalValue, unit } = el[prop];\n            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n            const currentValue = el[prop].currentValue;\n\n            if (\n              (finalValue > initialValue && currentValue >= finalValue) ||\n              (finalValue < initialValue && currentValue <= finalValue)) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return;\n        // Then call\n        a.frameId = requestAnimationFrame(render);\n      }\n      a.frameId = requestAnimationFrame(render);\n      return a;\n    },\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n  if (typeof args[0] === 'undefined') {\n    for (let i = 0; i < this.length; i += 1) {\n      if (noTrigger.indexOf(name) < 0) {\n        if (name in this[i]) this[i][name]();\n        else {\n          $(this[i]).trigger(name);\n        }\n      }\n    }\n    return this;\n  }\n  return this.on(name, ...args);\n}\n\nfunction click(...args) {\n  return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n  return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n  return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n  return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n  return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n  return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n  return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n  return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n  return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n  return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n  return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n  return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n  return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n  return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n  return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n  return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n  return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n  return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n  return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n  return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n  return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n  return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n  return {\n    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nexport default SwiperClass;\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup = groupIndex === 0\n          ? params.slidesPerGroup\n          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n","export default function (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((index, slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                || (slideAfter > 1 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n","export default function () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n  return (-this.snapGrid[0]);\n}\n","export default function () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n\n  const {\n    params,\n    wrapperEl,\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n","export default function (duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n","export default function (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n","export default function () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  swiper.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n  const platform = window.navigator.platform;\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!(window.cordova || window.phonegap),\n    phonegap: !!(window.cordova || window.phonegap),\n    electron: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  if (!ipad\n    && macos\n    && Support.touch\n    && (\n      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n      || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n      || (screenWidth === 768 && screenHeight === 1024) // other\n    )\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron;\n  if (device.desktop) {\n    device.electron = electron;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement\n      && $(document.activeElement).is(data.formElements)\n      && document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n","export default function (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","export default function () {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n  attachEvents,\n  detachEvents,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params, $el,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n    }\n\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Device from '../../../utils/device';\n\nexport default function () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n","export default function () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","export default function () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages,\n};\n","\nfunction checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    swiper.navigation.update();\n  }\n}\n\nexport default { checkOverflow };\n","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nexport default Swiper;\n","import Device from '../../utils/device';\n\nexport default {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n","import Support from '../../utils/support';\n\nexport default {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nexport default {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nexport default {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n    } else {\n      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (kc === 34 || kc === 40) swiper.slideNext();\n      if (kc === 33 || kc === 38) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nexport default {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document.implementation\n    && document.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: Utils.now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents = lastEventBeforeSnap\n        && newEvent.time < lastEventBeforeSnap.time + 500\n        && newEvent.delta <= lastEventBeforeSnap.delta\n        && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + (delta * params.sensitivity);\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15\n              && newEvent.time - firstEvent.time < 500\n              && firstEvent.delta - newEvent.delta >= 1\n              && newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nexport default {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        animateSlider: Mousewheel.animateSlider.bind(swiper),\n        releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n        lastScrollTime: Utils.now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nexport default {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n      && swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n    }\n    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const {\n      $el,\n      dragSize,\n      trackSize,\n      dragStartPos,\n    } = scrollbar;\n\n    let positionRatio;\n    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nexport default {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nexport default {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n};\n\nexport default {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nexport default {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nexport default {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nexport default {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nexport default {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    swiper.emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nexport default {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nexport default {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onVisibilityChange() {\n          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n            swiper.autoplay.pause();\n          }\n          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n            swiper.autoplay.run();\n            swiper.autoplay.paused = false;\n          }\n        },\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd() {\n      const swiper = this;\n      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nexport default {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nexport default {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n      }\n      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nexport default {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nexport default {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n  Device,\n  Support,\n  Browser,\n  Resize,\n  Observer,\n  //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["const","let","document","window","arguments","event","boxSizing","i","slidesGridItem","allSlidesSize","transitionEnd","currentSnap","slideChanged","increment","transition","checkOverflow","super","newEvent","recentWheelEvents","prevEvent","setTranslate","Device","Support","Browser","Observer","Virtual"],"mappings":"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"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,14 +0,0 @@
1
-/**
2
- * Swiper 5.4.0
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: May 15, 2020
11
- */
12
-
13
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(i,s){void 0===i&&(i={}),void 0===s&&(s={}),Object.keys(s).forEach((function(a){void 0===i[a]?i[a]=s[a]:e(s[a])&&e(i[a])&&Object.keys(s[a]).length>0&&t(i[a],s[a])}))}var i="undefined"!=typeof document?document:{},s={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};t(i,s);var a="undefined"!=typeof window?window:{};t(a,{document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}}});var r=function(e){for(var t=0;t<e.length;t+=1)this[t]=e[t];return this.length=e.length,this};function n(e,t){var s=[],n=0;if(e&&!t&&e instanceof r)return e;if(e)if("string"==typeof e){var o,l,d=e.trim();if(d.indexOf("<")>=0&&d.indexOf(">")>=0){var h="div";for(0===d.indexOf("<li")&&(h="ul"),0===d.indexOf("<tr")&&(h="tbody"),0!==d.indexOf("<td")&&0!==d.indexOf("<th")||(h="tr"),0===d.indexOf("<tbody")&&(h="table"),0===d.indexOf("<option")&&(h="select"),(l=i.createElement(h)).innerHTML=d,n=0;n<l.childNodes.length;n+=1)s.push(l.childNodes[n])}else for(o=t||"#"!==e[0]||e.match(/[ .<>:~]/)?(t||i).querySelectorAll(e.trim()):[i.getElementById(e.trim().split("#")[1])],n=0;n<o.length;n+=1)o[n]&&s.push(o[n])}else if(e.nodeType||e===a||e===i)s.push(e);else if(e.length>0&&e[0].nodeType)for(n=0;n<e.length;n+=1)s.push(e[n]);return new r(s)}function o(e){for(var t=[],i=0;i<e.length;i+=1)-1===t.indexOf(e[i])&&t.push(e[i]);return t}n.fn=r.prototype,n.Class=r,n.Dom7=r;var l={addClass:function(e){if(void 0===e)return this;for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.add(t[i]);return this},removeClass:function(e){for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.remove(t[i]);return this},hasClass:function(e){return!!this[0]&&this[0].classList.contains(e)},toggleClass:function(e){for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.toggle(t[i]);return this},attr:function(e,t){var i=arguments;if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var s=0;s<this.length;s+=1)if(2===i.length)this[s].setAttribute(e,t);else for(var a in e)this[s][a]=e[a],this[s].setAttribute(a,e[a]);return this},removeAttr:function(e){for(var t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},data:function(e,t){var i;if(void 0!==t){for(var s=0;s<this.length;s+=1)(i=this[s]).dom7ElementDataStorage||(i.dom7ElementDataStorage={}),i.dom7ElementDataStorage[e]=t;return this}if(i=this[0]){if(i.dom7ElementDataStorage&&e in i.dom7ElementDataStorage)return i.dom7ElementDataStorage[e];var a=i.getAttribute("data-"+e);return a||void 0}},transform:function(e){for(var t=0;t<this.length;t+=1){var i=this[t].style;i.webkitTransform=e,i.transform=e}return this},transition:function(e){"string"!=typeof e&&(e+="ms");for(var t=0;t<this.length;t+=1){var i=this[t].style;i.webkitTransitionDuration=e,i.transitionDuration=e}return this},on:function(){for(var e,t=[],i=arguments.length;i--;)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],o=t[3];function l(e){var t=e.target;if(t){var i=e.target.dom7EventData||[];if(i.indexOf(e)<0&&i.unshift(e),n(t).is(a))r.apply(t,i);else for(var s=n(t).parents(),o=0;o<s.length;o+=1)n(s[o]).is(a)&&r.apply(s[o],i)}}function d(e){var t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&(s=(e=t)[0],r=e[1],o=e[2],a=void 0),o||(o=!1);for(var h,p=s.split(" "),c=0;c<this.length;c+=1){var u=this[c];if(a)for(h=0;h<p.length;h+=1){var v=p[h];u.dom7LiveListeners||(u.dom7LiveListeners={}),u.dom7LiveListeners[v]||(u.dom7LiveListeners[v]=[]),u.dom7LiveListeners[v].push({listener:r,proxyListener:l}),u.addEventListener(v,l,o)}else for(h=0;h<p.length;h+=1){var f=p[h];u.dom7Listeners||(u.dom7Listeners={}),u.dom7Listeners[f]||(u.dom7Listeners[f]=[]),u.dom7Listeners[f].push({listener:r,proxyListener:d}),u.addEventListener(f,d,o)}}return this},off:function(){for(var e,t=[],i=arguments.length;i--;)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];"function"==typeof t[1]&&(s=(e=t)[0],r=e[1],n=e[2],a=void 0),n||(n=!1);for(var o=s.split(" "),l=0;l<o.length;l+=1)for(var d=o[l],h=0;h<this.length;h+=1){var p=this[h],c=void 0;if(!a&&p.dom7Listeners?c=p.dom7Listeners[d]:a&&p.dom7LiveListeners&&(c=p.dom7LiveListeners[d]),c&&c.length)for(var u=c.length-1;u>=0;u-=1){var v=c[u];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1)):r||(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1))}}return this},trigger:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var s=e[0].split(" "),r=e[1],n=0;n<s.length;n+=1)for(var o=s[n],l=0;l<this.length;l+=1){var d=this[l],h=void 0;try{h=new a.CustomEvent(o,{detail:r,bubbles:!0,cancelable:!0})}catch(e){(h=i.createEvent("Event")).initEvent(o,!0,!0),h.detail=r}d.dom7EventData=e.filter((function(e,t){return t>0})),d.dispatchEvent(h),d.dom7EventData=[],delete d.dom7EventData}return this},transitionEnd:function(e){var t,i=["webkitTransitionEnd","transitionend"],s=this;function a(r){if(r.target===this)for(e.call(this,r),t=0;t<i.length;t+=1)s.off(i[t],a)}if(e)for(t=0;t<i.length;t+=1)s.on(i[t],a);return this},outerWidth:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},offset:function(){if(this.length>0){var e=this[0],t=e.getBoundingClientRect(),s=i.body,r=e.clientTop||s.clientTop||0,n=e.clientLeft||s.clientLeft||0,o=e===a?a.scrollY:e.scrollTop,l=e===a?a.scrollX:e.scrollLeft;return{top:t.top+o-r,left:t.left+l-n}}return null},css:function(e,t){var i;if(1===arguments.length){if("string"!=typeof e){for(i=0;i<this.length;i+=1)for(var s in e)this[i].style[s]=e[s];return this}if(this[0])return a.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(i=0;i<this.length;i+=1)this[i].style[e]=t;return this}return this},each:function(e){if(!e)return this;for(var t=0;t<this.length;t+=1)if(!1===e.call(this[t],t,this[t]))return this;return this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:void 0;for(var t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){var t,s,o=this[0];if(!o||void 0===e)return!1;if("string"==typeof e){if(o.matches)return o.matches(e);if(o.webkitMatchesSelector)return o.webkitMatchesSelector(e);if(o.msMatchesSelector)return o.msMatchesSelector(e);for(t=n(e),s=0;s<t.length;s+=1)if(t[s]===o)return!0;return!1}if(e===i)return o===i;if(e===a)return o===a;if(e.nodeType||e instanceof r){for(t=e.nodeType?[e]:e,s=0;s<t.length;s+=1)if(t[s]===o)return!0;return!1}return!1},index:function(){var e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;var t,i=this.length;return new r(e>i-1?[]:e<0?(t=i+e)<0?[]:[this[t]]:[this[e]])},append:function(){for(var e,t=[],s=arguments.length;s--;)t[s]=arguments[s];for(var a=0;a<t.length;a+=1){e=t[a];for(var n=0;n<this.length;n+=1)if("string"==typeof e){var o=i.createElement("div");for(o.innerHTML=e;o.firstChild;)this[n].appendChild(o.firstChild)}else if(e instanceof r)for(var l=0;l<e.length;l+=1)this[n].appendChild(e[l]);else this[n].appendChild(e)}return this},prepend:function(e){var t,s;for(t=0;t<this.length;t+=1)if("string"==typeof e){var a=i.createElement("div");for(a.innerHTML=e,s=a.childNodes.length-1;s>=0;s-=1)this[t].insertBefore(a.childNodes[s],this[t].childNodes[0])}else if(e instanceof r)for(s=0;s<e.length;s+=1)this[t].insertBefore(e[s],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&n(this[0].nextElementSibling).is(e)?new r([this[0].nextElementSibling]):new r([]):this[0].nextElementSibling?new r([this[0].nextElementSibling]):new r([]):new r([])},nextAll:function(e){var t=[],i=this[0];if(!i)return new r([]);for(;i.nextElementSibling;){var s=i.nextElementSibling;e?n(s).is(e)&&t.push(s):t.push(s),i=s}return new r(t)},prev:function(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&n(t.previousElementSibling).is(e)?new r([t.previousElementSibling]):new r([]):t.previousElementSibling?new r([t.previousElementSibling]):new r([])}return new r([])},prevAll:function(e){var t=[],i=this[0];if(!i)return new r([]);for(;i.previousElementSibling;){var s=i.previousElementSibling;e?n(s).is(e)&&t.push(s):t.push(s),i=s}return new r(t)},parent:function(e){for(var t=[],i=0;i<this.length;i+=1)null!==this[i].parentNode&&(e?n(this[i].parentNode).is(e)&&t.push(this[i].parentNode):t.push(this[i].parentNode));return n(o(t))},parents:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].parentNode;s;)e?n(s).is(e)&&t.push(s):t.push(s),s=s.parentNode;return n(o(t))},closest:function(e){var t=this;return void 0===e?new r([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].querySelectorAll(e),a=0;a<s.length;a+=1)t.push(s[a]);return new r(t)},children:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].childNodes,a=0;a<s.length;a+=1)e?1===s[a].nodeType&&n(s[a]).is(e)&&t.push(s[a]):1===s[a].nodeType&&t.push(s[a]);return new r(o(t))},filter:function(e){for(var t=[],i=0;i<this.length;i+=1)e.call(this[i],i,this[i])&&t.push(this[i]);return new r(t)},remove:function(){for(var e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this},add:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var i,s,a=this;for(i=0;i<e.length;i+=1){var r=n(e[i]);for(s=0;s<r.length;s+=1)a[a.length]=r[s],a.length+=1}return a},styles:function(){return this[0]?a.getComputedStyle(this[0],null):{}}};Object.keys(l).forEach((function(e){n.fn[e]=n.fn[e]||l[e]}));var d={deleteProps:function(e){var t=e;Object.keys(t).forEach((function(e){try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))},nextTick:function(e,t){return void 0===t&&(t=0),setTimeout(e,t)},now:function(){return Date.now()},getTranslate:function(e,t){var i,s,r;void 0===t&&(t="x");var n=a.getComputedStyle(e,null);return a.WebKitCSSMatrix?((s=n.transform||n.webkitTransform).split(",").length>6&&(s=s.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),r=new a.WebKitCSSMatrix("none"===s?"":s)):i=(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(s=a.WebKitCSSMatrix?r.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(s=a.WebKitCSSMatrix?r.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),s||0},parseUrlQuery:function(e){var t,i,s,r,n={},o=e||a.location.href;if("string"==typeof o&&o.length)for(r=(i=(o=o.indexOf("?")>-1?o.replace(/\S*\?/,""):"").split("&").filter((function(e){return""!==e}))).length,t=0;t<r;t+=1)s=i[t].replace(/#\S+/g,"").split("="),n[decodeURIComponent(s[0])]=void 0===s[1]?void 0:decodeURIComponent(s[1])||"";return n},isObject:function(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object},extend:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var i=Object(e[0]),s=1;s<e.length;s+=1){var a=e[s];if(null!=a)for(var r=Object.keys(Object(a)),n=0,o=r.length;n<o;n+=1){var l=r[n],h=Object.getOwnPropertyDescriptor(a,l);void 0!==h&&h.enumerable&&(d.isObject(i[l])&&d.isObject(a[l])?d.extend(i[l],a[l]):!d.isObject(i[l])&&d.isObject(a[l])?(i[l]={},d.extend(i[l],a[l])):i[l]=a[l])}}return i}},h={touch:!!("ontouchstart"in a||a.DocumentTouch&&i instanceof a.DocumentTouch),pointerEvents:!!a.PointerEvent&&"maxTouchPoints"in a.navigator&&a.navigator.maxTouchPoints>=0,observer:"MutationObserver"in a||"WebkitMutationObserver"in a,passiveListener:function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});a.addEventListener("testPassiveListener",null,t)}catch(e){}return e}(),gestures:"ongesturestart"in a},p=function(e){void 0===e&&(e={});var t=this;t.params=e,t.eventsListeners={},t.params&&t.params.on&&Object.keys(t.params.on).forEach((function(e){t.on(e,t.params.on[e])}))},c={components:{configurable:!0}};p.prototype.on=function(e,t,i){var s=this;if("function"!=typeof t)return s;var a=i?"unshift":"push";return e.split(" ").forEach((function(e){s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][a](t)})),s},p.prototype.once=function(e,t,i){var s=this;if("function"!=typeof t)return s;function a(){for(var i=[],r=arguments.length;r--;)i[r]=arguments[r];s.off(e,a),a.f7proxy&&delete a.f7proxy,t.apply(s,i)}return a.f7proxy=t,s.on(e,a,i)},p.prototype.off=function(e,t){var i=this;return i.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].length&&i.eventsListeners[e].forEach((function(s,a){(s===t||s.f7proxy&&s.f7proxy===t)&&i.eventsListeners[e].splice(a,1)}))})),i):i},p.prototype.emit=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var i,s,a,r=this;if(!r.eventsListeners)return r;"string"==typeof e[0]||Array.isArray(e[0])?(i=e[0],s=e.slice(1,e.length),a=r):(i=e[0].events,s=e[0].data,a=e[0].context||r);var n=Array.isArray(i)?i:i.split(" ");return n.forEach((function(e){if(r.eventsListeners&&r.eventsListeners[e]){var t=[];r.eventsListeners[e].forEach((function(e){t.push(e)})),t.forEach((function(e){e.apply(a,s)}))}})),r},p.prototype.useModulesParams=function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i];s.params&&d.extend(e,s.params)}))},p.prototype.useModules=function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i],a=e[i]||{};s.instance&&Object.keys(s.instance).forEach((function(e){var i=s.instance[e];t[e]="function"==typeof i?i.bind(t):i})),s.on&&t.on&&Object.keys(s.on).forEach((function(e){t.on(e,s.on[e])})),s.create&&s.create.bind(t)(a)}))},c.components.set=function(e){this.use&&this.use(e)},p.installModule=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;s.prototype.modules||(s.prototype.modules={});var a=e.name||Object.keys(s.prototype.modules).length+"_"+d.now();return s.prototype.modules[a]=e,e.proto&&Object.keys(e.proto).forEach((function(t){s.prototype[t]=e.proto[t]})),e.static&&Object.keys(e.static).forEach((function(t){s[t]=e.static[t]})),e.install&&e.install.apply(s,t),s},p.use=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;return Array.isArray(e)?(e.forEach((function(e){return s.installModule(e)})),s):s.installModule.apply(s,[e].concat(t))},Object.defineProperties(p,c);var u={updateSize:function(){var e,t,i=this.$el;e=void 0!==this.params.width?this.params.width:i[0].clientWidth,t=void 0!==this.params.height?this.params.height:i[0].clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(i.css("padding-left"),10)-parseInt(i.css("padding-right"),10),t=t-parseInt(i.css("padding-top"),10)-parseInt(i.css("padding-bottom"),10),d.extend(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){var e=this.params,t=this.$wrapperEl,i=this.size,s=this.rtlTranslate,r=this.wrongRTL,n=this.virtual&&e.virtual.enabled,o=n?this.virtual.slides.length:this.slides.length,l=t.children("."+this.params.slideClass),h=n?this.virtual.slides.length:l.length,p=[],c=[],u=[];function v(t){return!e.cssMode||t!==l.length-1}var f=e.slidesOffsetBefore;"function"==typeof f&&(f=e.slidesOffsetBefore.call(this));var m=e.slidesOffsetAfter;"function"==typeof m&&(m=e.slidesOffsetAfter.call(this));var g=this.snapGrid.length,b=this.snapGrid.length,w=e.spaceBetween,y=-f,x=0,E=0;if(void 0!==i){var T,S;"string"==typeof w&&w.indexOf("%")>=0&&(w=parseFloat(w.replace("%",""))/100*i),this.virtualSize=-w,s?l.css({marginLeft:"",marginTop:""}):l.css({marginRight:"",marginBottom:""}),e.slidesPerColumn>1&&(T=Math.floor(h/e.slidesPerColumn)===h/this.params.slidesPerColumn?h:Math.ceil(h/e.slidesPerColumn)*e.slidesPerColumn,"auto"!==e.slidesPerView&&"row"===e.slidesPerColumnFill&&(T=Math.max(T,e.slidesPerView*e.slidesPerColumn)));for(var C,M=e.slidesPerColumn,P=T/M,z=Math.floor(h/e.slidesPerColumn),k=0;k<h;k+=1){S=0;var $=l.eq(k);if(e.slidesPerColumn>1){var L=void 0,I=void 0,O=void 0;if("row"===e.slidesPerColumnFill&&e.slidesPerGroup>1){var D=Math.floor(k/(e.slidesPerGroup*e.slidesPerColumn)),A=k-e.slidesPerColumn*e.slidesPerGroup*D,G=0===D?e.slidesPerGroup:Math.min(Math.ceil((h-D*M*e.slidesPerGroup)/M),e.slidesPerGroup);L=(I=A-(O=Math.floor(A/G))*G+D*e.slidesPerGroup)+O*T/M,$.css({"-webkit-box-ordinal-group":L,"-moz-box-ordinal-group":L,"-ms-flex-order":L,"-webkit-order":L,order:L})}else"column"===e.slidesPerColumnFill?(O=k-(I=Math.floor(k/M))*M,(I>z||I===z&&O===M-1)&&(O+=1)>=M&&(O=0,I+=1)):I=k-(O=Math.floor(k/P))*P;$.css("margin-"+(this.isHorizontal()?"top":"left"),0!==O&&e.spaceBetween&&e.spaceBetween+"px")}if("none"!==$.css("display")){if("auto"===e.slidesPerView){var H=a.getComputedStyle($[0],null),B=$[0].style.transform,N=$[0].style.webkitTransform;if(B&&($[0].style.transform="none"),N&&($[0].style.webkitTransform="none"),e.roundLengths)S=this.isHorizontal()?$.outerWidth(!0):$.outerHeight(!0);else if(this.isHorizontal()){var X=parseFloat(H.getPropertyValue("width")),V=parseFloat(H.getPropertyValue("padding-left")),Y=parseFloat(H.getPropertyValue("padding-right")),F=parseFloat(H.getPropertyValue("margin-left")),W=parseFloat(H.getPropertyValue("margin-right")),R=H.getPropertyValue("box-sizing");S=R&&"border-box"===R?X+F+W:X+V+Y+F+W}else{var q=parseFloat(H.getPropertyValue("height")),j=parseFloat(H.getPropertyValue("padding-top")),K=parseFloat(H.getPropertyValue("padding-bottom")),U=parseFloat(H.getPropertyValue("margin-top")),_=parseFloat(H.getPropertyValue("margin-bottom")),Z=H.getPropertyValue("box-sizing");S=Z&&"border-box"===Z?q+U+_:q+j+K+U+_}B&&($[0].style.transform=B),N&&($[0].style.webkitTransform=N),e.roundLengths&&(S=Math.floor(S))}else S=(i-(e.slidesPerView-1)*w)/e.slidesPerView,e.roundLengths&&(S=Math.floor(S)),l[k]&&(this.isHorizontal()?l[k].style.width=S+"px":l[k].style.height=S+"px");l[k]&&(l[k].swiperSlideSize=S),u.push(S),e.centeredSlides?(y=y+S/2+x/2+w,0===x&&0!==k&&(y=y-i/2-w),0===k&&(y=y-i/2-w),Math.abs(y)<.001&&(y=0),e.roundLengths&&(y=Math.floor(y)),E%e.slidesPerGroup==0&&p.push(y),c.push(y)):(e.roundLengths&&(y=Math.floor(y)),(E-Math.min(this.params.slidesPerGroupSkip,E))%this.params.slidesPerGroup==0&&p.push(y),c.push(y),y=y+S+w),this.virtualSize+=S+w,x=S,E+=1}}if(this.virtualSize=Math.max(this.virtualSize,i)+m,s&&r&&("slide"===e.effect||"coverflow"===e.effect)&&t.css({width:this.virtualSize+e.spaceBetween+"px"}),e.setWrapperSize&&(this.isHorizontal()?t.css({width:this.virtualSize+e.spaceBetween+"px"}):t.css({height:this.virtualSize+e.spaceBetween+"px"})),e.slidesPerColumn>1&&(this.virtualSize=(S+e.spaceBetween)*T,this.virtualSize=Math.ceil(this.virtualSize/e.slidesPerColumn)-e.spaceBetween,this.isHorizontal()?t.css({width:this.virtualSize+e.spaceBetween+"px"}):t.css({height:this.virtualSize+e.spaceBetween+"px"}),e.centeredSlides)){C=[];for(var Q=0;Q<p.length;Q+=1){var J=p[Q];e.roundLengths&&(J=Math.floor(J)),p[Q]<this.virtualSize+p[0]&&C.push(J)}p=C}if(!e.centeredSlides){C=[];for(var ee=0;ee<p.length;ee+=1){var te=p[ee];e.roundLengths&&(te=Math.floor(te)),p[ee]<=this.virtualSize-i&&C.push(te)}p=C,Math.floor(this.virtualSize-i)-Math.floor(p[p.length-1])>1&&p.push(this.virtualSize-i)}if(0===p.length&&(p=[0]),0!==e.spaceBetween&&(this.isHorizontal()?s?l.filter(v).css({marginLeft:w+"px"}):l.filter(v).css({marginRight:w+"px"}):l.filter(v).css({marginBottom:w+"px"})),e.centeredSlides&&e.centeredSlidesBounds){var ie=0;u.forEach((function(t){ie+=t+(e.spaceBetween?e.spaceBetween:0)}));var se=(ie-=e.spaceBetween)-i;p=p.map((function(e){return e<0?-f:e>se?se+m:e}))}if(e.centerInsufficientSlides){var ae=0;if(u.forEach((function(t){ae+=t+(e.spaceBetween?e.spaceBetween:0)})),(ae-=e.spaceBetween)<i){var re=(i-ae)/2;p.forEach((function(e,t){p[t]=e-re})),c.forEach((function(e,t){c[t]=e+re}))}}d.extend(this,{slides:l,snapGrid:p,slidesGrid:c,slidesSizesGrid:u}),h!==o&&this.emit("slidesLengthChange"),p.length!==g&&(this.params.watchOverflow&&this.checkOverflow(),this.emit("snapGridLengthChange")),c.length!==b&&this.emit("slidesGridLengthChange"),(e.watchSlidesProgress||e.watchSlidesVisibility)&&this.updateSlidesOffset()}},updateAutoHeight:function(e){var t,i=[],s=0;if("number"==typeof e?this.setTransition(e):!0===e&&this.setTransition(this.params.speed),"auto"!==this.params.slidesPerView&&this.params.slidesPerView>1)if(this.params.centeredSlides)this.visibleSlides.each((function(e,t){i.push(t)}));else for(t=0;t<Math.ceil(this.params.slidesPerView);t+=1){var a=this.activeIndex+t;if(a>this.slides.length)break;i.push(this.slides.eq(a)[0])}else i.push(this.slides.eq(this.activeIndex)[0]);for(t=0;t<i.length;t+=1)if(void 0!==i[t]){var r=i[t].offsetHeight;s=r>s?r:s}s&&this.$wrapperEl.css("height",s+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t<e.length;t+=1)e[t].swiperSlideOffset=this.isHorizontal()?e[t].offsetLeft:e[t].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);var t=this.params,i=this.slides,s=this.rtlTranslate;if(0!==i.length){void 0===i[0].swiperSlideOffset&&this.updateSlidesOffset();var a=-e;s&&(a=e),i.removeClass(t.slideVisibleClass),this.visibleSlidesIndexes=[],this.visibleSlides=[];for(var r=0;r<i.length;r+=1){var o=i[r],l=(a+(t.centeredSlides?this.minTranslate():0)-o.swiperSlideOffset)/(o.swiperSlideSize+t.spaceBetween);if(t.watchSlidesVisibility||t.centeredSlides&&t.autoHeight){var d=-(a-o.swiperSlideOffset),h=d+this.slidesSizesGrid[r];(d>=0&&d<this.size-1||h>1&&h<=this.size||d<=0&&h>=this.size)&&(this.visibleSlides.push(o),this.visibleSlidesIndexes.push(r),i.eq(r).addClass(t.slideVisibleClass))}o.progress=s?-l:l}this.visibleSlides=n(this.visibleSlides)}},updateProgress:function(e){if(void 0===e){var t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}var i=this.params,s=this.maxTranslate()-this.minTranslate(),a=this.progress,r=this.isBeginning,n=this.isEnd,o=r,l=n;0===s?(a=0,r=!0,n=!0):(r=(a=(e-this.minTranslate())/s)<=0,n=a>=1),d.extend(this,{progress:a,isBeginning:r,isEnd:n}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&this.updateSlidesProgress(e),r&&!o&&this.emit("reachBeginning toEdge"),n&&!l&&this.emit("reachEnd toEdge"),(o&&!r||l&&!n)&&this.emit("fromEdge"),this.emit("progress",a)},updateSlidesClasses:function(){var e,t=this.slides,i=this.params,s=this.$wrapperEl,a=this.activeIndex,r=this.realIndex,n=this.virtual&&i.virtual.enabled;t.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=n?this.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+a+'"]'):t.eq(a)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass));var o=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===o.length&&(o=t.eq(0)).addClass(i.slideNextClass);var l=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===l.length&&(l=t.eq(-1)).addClass(i.slidePrevClass),i.loop&&(o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),l.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass))},updateActiveIndex:function(e){var t,i=this.rtlTranslate?this.translate:-this.translate,s=this.slidesGrid,a=this.snapGrid,r=this.params,n=this.activeIndex,o=this.realIndex,l=this.snapIndex,h=e;if(void 0===h){for(var p=0;p<s.length;p+=1)void 0!==s[p+1]?i>=s[p]&&i<s[p+1]-(s[p+1]-s[p])/2?h=p:i>=s[p]&&i<s[p+1]&&(h=p+1):i>=s[p]&&(h=p);r.normalizeSlideIndex&&(h<0||void 0===h)&&(h=0)}if(a.indexOf(i)>=0)t=a.indexOf(i);else{var c=Math.min(r.slidesPerGroupSkip,h);t=c+Math.floor((h-c)/r.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),h!==n){var u=parseInt(this.slides.eq(h).attr("data-swiper-slide-index")||h,10);d.extend(this,{snapIndex:t,realIndex:u,previousIndex:n,activeIndex:h}),this.emit("activeIndexChange"),this.emit("snapIndexChange"),o!==u&&this.emit("realIndexChange"),(this.initialized||this.params.runCallbacksOnInit)&&this.emit("slideChange")}else t!==l&&(this.snapIndex=t,this.emit("snapIndexChange"))},updateClickedSlide:function(e){var t=this.params,i=n(e.target).closest("."+t.slideClass)[0],s=!1;if(i)for(var a=0;a<this.slides.length;a+=1)this.slides[a]===i&&(s=!0);if(!i||!s)return this.clickedSlide=void 0,void(this.clickedIndex=void 0);this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt(n(i).attr("data-swiper-slide-index"),10):this.clickedIndex=n(i).index(),t.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}};var v={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");var t=this.params,i=this.rtlTranslate,s=this.translate,a=this.$wrapperEl;if(t.virtualTranslate)return i?-s:s;if(t.cssMode)return s;var r=d.getTranslate(a[0],e);return i&&(r=-r),r||0},setTranslate:function(e,t){var i=this.rtlTranslate,s=this.params,a=this.$wrapperEl,r=this.wrapperEl,n=this.progress,o=0,l=0;this.isHorizontal()?o=i?-e:e:l=e,s.roundLengths&&(o=Math.floor(o),l=Math.floor(l)),s.cssMode?r[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-o:-l:s.virtualTranslate||a.transform("translate3d("+o+"px, "+l+"px, 0px)"),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?o:l;var d=this.maxTranslate()-this.minTranslate();(0===d?0:(e-this.minTranslate())/d)!==n&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,i,s,a){var r;void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0),void 0===s&&(s=!0);var n=this,o=n.params,l=n.wrapperEl;if(n.animating&&o.preventInteractionOnTransition)return!1;var d,h=n.minTranslate(),p=n.maxTranslate();if(d=s&&e>h?h:s&&e<p?p:e,n.updateProgress(d),o.cssMode){var c=n.isHorizontal();return 0===t?l[c?"scrollLeft":"scrollTop"]=-d:l.scrollTo?l.scrollTo(((r={})[c?"left":"top"]=-d,r.behavior="smooth",r)):l[c?"scrollLeft":"scrollTop"]=-d,!0}return 0===t?(n.setTransition(0),n.setTranslate(d),i&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionEnd"))):(n.setTransition(t),n.setTranslate(d),i&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionStart")),n.animating||(n.animating=!0,n.onTranslateToWrapperTransitionEnd||(n.onTranslateToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.$wrapperEl[0].removeEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].removeEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd),n.onTranslateToWrapperTransitionEnd=null,delete n.onTranslateToWrapperTransitionEnd,i&&n.emit("transitionEnd"))}),n.$wrapperEl[0].addEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].addEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd))),!0}};var f={setTransition:function(e,t){this.params.cssMode||this.$wrapperEl.transition(e),this.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.params,a=this.previousIndex;if(!s.cssMode){s.autoHeight&&this.updateAutoHeight();var r=t;if(r||(r=i>a?"next":i<a?"prev":"reset"),this.emit("transitionStart"),e&&i!==a){if("reset"===r)return void this.emit("slideResetTransitionStart");this.emit("slideChangeTransitionStart"),"next"===r?this.emit("slideNextTransitionStart"):this.emit("slidePrevTransitionStart")}}},transitionEnd:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.previousIndex,a=this.params;if(this.animating=!1,!a.cssMode){this.setTransition(0);var r=t;if(r||(r=i>s?"next":i<s?"prev":"reset"),this.emit("transitionEnd"),e&&i!==s){if("reset"===r)return void this.emit("slideResetTransitionEnd");this.emit("slideChangeTransitionEnd"),"next"===r?this.emit("slideNextTransitionEnd"):this.emit("slidePrevTransitionEnd")}}}};var m={slideTo:function(e,t,i,s){var a;void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var r=this,n=e;n<0&&(n=0);var o=r.params,l=r.snapGrid,d=r.slidesGrid,h=r.previousIndex,p=r.activeIndex,c=r.rtlTranslate,u=r.wrapperEl;if(r.animating&&o.preventInteractionOnTransition)return!1;var v=Math.min(r.params.slidesPerGroupSkip,n),f=v+Math.floor((n-v)/r.params.slidesPerGroup);f>=l.length&&(f=l.length-1),(p||o.initialSlide||0)===(h||0)&&i&&r.emit("beforeSlideChangeStart");var m,g=-l[f];if(r.updateProgress(g),o.normalizeSlideIndex)for(var b=0;b<d.length;b+=1)-Math.floor(100*g)>=Math.floor(100*d[b])&&(n=b);if(r.initialized&&n!==p){if(!r.allowSlideNext&&g<r.translate&&g<r.minTranslate())return!1;if(!r.allowSlidePrev&&g>r.translate&&g>r.maxTranslate()&&(p||0)!==n)return!1}if(m=n>p?"next":n<p?"prev":"reset",c&&-g===r.translate||!c&&g===r.translate)return r.updateActiveIndex(n),o.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==o.effect&&r.setTranslate(g),"reset"!==m&&(r.transitionStart(i,m),r.transitionEnd(i,m)),!1;if(o.cssMode){var w=r.isHorizontal(),y=-g;return c&&(y=u.scrollWidth-u.offsetWidth-y),0===t?u[w?"scrollLeft":"scrollTop"]=y:u.scrollTo?u.scrollTo(((a={})[w?"left":"top"]=y,a.behavior="smooth",a)):u[w?"scrollLeft":"scrollTop"]=y,!0}return 0===t?(r.setTransition(0),r.setTranslate(g),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,s),r.transitionStart(i,m),r.transitionEnd(i,m)):(r.setTransition(t),r.setTranslate(g),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,s),r.transitionStart(i,m),r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(i,m))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd))),!0},slideToLoop:function(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=e;return this.params.loop&&(a+=this.loopedSlides),this.slideTo(a,t,i,s)},slideNext:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.activeIndex<s.slidesPerGroupSkip?1:s.slidesPerGroup;if(s.loop){if(a)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}return this.slideTo(this.activeIndex+r,e,t,i)},slidePrev:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.snapGrid,n=this.slidesGrid,o=this.rtlTranslate;if(s.loop){if(a)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}function l(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}var d,h=l(o?this.translate:-this.translate),p=r.map((function(e){return l(e)})),c=(n.map((function(e){return l(e)})),r[p.indexOf(h)],r[p.indexOf(h)-1]);return void 0===c&&s.cssMode&&r.forEach((function(e){!c&&h>=e&&(c=e)})),void 0!==c&&(d=n.indexOf(c))<0&&(d=this.activeIndex-1),this.slideTo(d,e,t,i)},slideReset:function(e,t,i){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,i)},slideToClosest:function(e,t,i,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===s&&(s=.5);var a=this.activeIndex,r=Math.min(this.params.slidesPerGroupSkip,a),n=r+Math.floor((a-r)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[n]){var l=this.snapGrid[n];o-l>(this.snapGrid[n+1]-l)*s&&(a+=this.params.slidesPerGroup)}else{var d=this.snapGrid[n-1];o-d<=(this.snapGrid[n]-d)*s&&(a-=this.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,this.slidesGrid.length-1),this.slideTo(a,e,t,i)},slideToClickedSlide:function(){var e,t=this,i=t.params,s=t.$wrapperEl,a="auto"===i.slidesPerView?t.slidesPerViewDynamic():i.slidesPerView,r=t.clickedIndex;if(i.loop){if(t.animating)return;e=parseInt(n(t.clickedSlide).attr("data-swiper-slide-index"),10),i.centeredSlides?r<t.loopedSlides-a/2||r>t.slides.length-t.loopedSlides+a/2?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),d.nextTick((function(){t.slideTo(r)}))):t.slideTo(r):r>t.slides.length-a?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),d.nextTick((function(){t.slideTo(r)}))):t.slideTo(r)}else t.slideTo(r)}};var g={loopCreate:function(){var e=this,t=e.params,s=e.$wrapperEl;s.children("."+t.slideClass+"."+t.slideDuplicateClass).remove();var a=s.children("."+t.slideClass);if(t.loopFillGroupWithBlank){var r=t.slidesPerGroup-a.length%t.slidesPerGroup;if(r!==t.slidesPerGroup){for(var o=0;o<r;o+=1){var l=n(i.createElement("div")).addClass(t.slideClass+" "+t.slideBlankClass);s.append(l)}a=s.children("."+t.slideClass)}}"auto"!==t.slidesPerView||t.loopedSlides||(t.loopedSlides=a.length),e.loopedSlides=Math.ceil(parseFloat(t.loopedSlides||t.slidesPerView,10)),e.loopedSlides+=t.loopAdditionalSlides,e.loopedSlides>a.length&&(e.loopedSlides=a.length);var d=[],h=[];a.each((function(t,i){var s=n(i);t<e.loopedSlides&&h.push(i),t<a.length&&t>=a.length-e.loopedSlides&&d.push(i),s.attr("data-swiper-slide-index",t)}));for(var p=0;p<h.length;p+=1)s.append(n(h[p].cloneNode(!0)).addClass(t.slideDuplicateClass));for(var c=d.length-1;c>=0;c-=1)s.prepend(n(d[c].cloneNode(!0)).addClass(t.slideDuplicateClass))},loopFix:function(){this.emit("beforeLoopFix");var e,t=this.activeIndex,i=this.slides,s=this.loopedSlides,a=this.allowSlidePrev,r=this.allowSlideNext,n=this.snapGrid,o=this.rtlTranslate;this.allowSlidePrev=!0,this.allowSlideNext=!0;var l=-n[t]-this.getTranslate();if(t<s)e=i.length-3*s+t,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l);else if(t>=i.length-s){e=-i.length+t+s,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l)}this.allowSlidePrev=a,this.allowSlideNext=r,this.emit("loopFix")},loopDestroy:function(){var e=this.$wrapperEl,t=this.params,i=this.slides;e.children("."+t.slideClass+"."+t.slideDuplicateClass+",."+t.slideClass+"."+t.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}};var b={setGrabCursor:function(e){if(!(h.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)){var t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){h.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}};var w,y,x,E,T,S,C,M,P,z,k,$,L,I,O,D={appendSlide:function(e){var t=this.$wrapperEl,i=this.params;if(i.loop&&this.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s<e.length;s+=1)e[s]&&t.append(e[s]);else t.append(e);i.loop&&this.loopCreate(),i.observer&&h.observer||this.update()},prependSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&this.loopDestroy();var a=s+1;if("object"==typeof e&&"length"in e){for(var r=0;r<e.length;r+=1)e[r]&&i.prepend(e[r]);a=s+e.length}else i.prepend(e);t.loop&&this.loopCreate(),t.observer&&h.observer||this.update(),this.slideTo(a,0,!1)},addSlide:function(e,t){var i=this.$wrapperEl,s=this.params,a=this.activeIndex;s.loop&&(a-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+s.slideClass));var r=this.slides.length;if(e<=0)this.prependSlide(t);else if(e>=r)this.appendSlide(t);else{for(var n=a>e?a+1:a,o=[],l=r-1;l>=e;l-=1){var d=this.slides.eq(l);d.remove(),o.unshift(d)}if("object"==typeof t&&"length"in t){for(var p=0;p<t.length;p+=1)t[p]&&i.append(t[p]);n=a>e?a+t.length:a}else i.append(t);for(var c=0;c<o.length;c+=1)i.append(o[c]);s.loop&&this.loopCreate(),s.observer&&h.observer||this.update(),s.loop?this.slideTo(n+this.loopedSlides,0,!1):this.slideTo(n,0,!1)}},removeSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&(s-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+t.slideClass));var a,r=s;if("object"==typeof e&&"length"in e){for(var n=0;n<e.length;n+=1)a=e[n],this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1);r=Math.max(r,0)}else a=e,this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1),r=Math.max(r,0);t.loop&&this.loopCreate(),t.observer&&h.observer||this.update(),t.loop?this.slideTo(r+this.loopedSlides,0,!1):this.slideTo(r,0,!1)},removeAllSlides:function(){for(var e=[],t=0;t<this.slides.length;t+=1)e.push(t);this.removeSlide(e)}},A=(w=a.navigator.platform,y=a.navigator.userAgent,x={ios:!1,android:!1,androidChrome:!1,desktop:!1,iphone:!1,ipod:!1,ipad:!1,edge:!1,ie:!1,firefox:!1,macos:!1,windows:!1,cordova:!(!a.cordova&&!a.phonegap),phonegap:!(!a.cordova&&!a.phonegap),electron:!1},E=a.screen.width,T=a.screen.height,S=y.match(/(Android);?[\s\/]+([\d.]+)?/),C=y.match(/(iPad).*OS\s([\d_]+)/),M=y.match(/(iPod)(.*OS\s([\d_]+))?/),P=!C&&y.match(/(iPhone\sOS|iOS)\s([\d_]+)/),z=y.indexOf("MSIE ")>=0||y.indexOf("Trident/")>=0,k=y.indexOf("Edge/")>=0,$=y.indexOf("Gecko/")>=0&&y.indexOf("Firefox/")>=0,L="Win32"===w,I=y.toLowerCase().indexOf("electron")>=0,O="MacIntel"===w,!C&&O&&h.touch&&(1024===E&&1366===T||834===E&&1194===T||834===E&&1112===T||768===E&&1024===T)&&(C=y.match(/(Version)\/([\d.]+)/),O=!1),x.ie=z,x.edge=k,x.firefox=$,S&&!L&&(x.os="android",x.osVersion=S[2],x.android=!0,x.androidChrome=y.toLowerCase().indexOf("chrome")>=0),(C||P||M)&&(x.os="ios",x.ios=!0),P&&!M&&(x.osVersion=P[2].replace(/_/g,"."),x.iphone=!0),C&&(x.osVersion=C[2].replace(/_/g,"."),x.ipad=!0),M&&(x.osVersion=M[3]?M[3].replace(/_/g,"."):null,x.ipod=!0),x.ios&&x.osVersion&&y.indexOf("Version/")>=0&&"10"===x.osVersion.split(".")[0]&&(x.osVersion=y.toLowerCase().split("version/")[1].split(" ")[0]),x.webView=!(!(P||C||M)||!y.match(/.*AppleWebKit(?!.*Safari)/i)&&!a.navigator.standalone)||a.matchMedia&&a.matchMedia("(display-mode: standalone)").matches,x.webview=x.webView,x.standalone=x.webView,x.desktop=!(x.ios||x.android)||I,x.desktop&&(x.electron=I,x.macos=O,x.windows=L,x.macos&&(x.os="macos"),x.windows&&(x.os="windows")),x.pixelRatio=a.devicePixelRatio||1,x);function G(e){var t=this.touchEventsData,s=this.params,r=this.touches;if(!this.animating||!s.preventInteractionOnTransition){var o=e;o.originalEvent&&(o=o.originalEvent);var l=n(o.target);if(("wrapper"!==s.touchEventsTarget||l.closest(this.wrapperEl).length)&&(t.isTouchEvent="touchstart"===o.type,(t.isTouchEvent||!("which"in o)||3!==o.which)&&!(!t.isTouchEvent&&"button"in o&&o.button>0||t.isTouched&&t.isMoved)))if(s.noSwiping&&l.closest(s.noSwipingSelector?s.noSwipingSelector:"."+s.noSwipingClass)[0])this.allowClick=!0;else if(!s.swipeHandler||l.closest(s.swipeHandler)[0]){r.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,r.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;var h=r.currentX,p=r.currentY,c=s.edgeSwipeDetection||s.iOSEdgeSwipeDetection,u=s.edgeSwipeThreshold||s.iOSEdgeSwipeThreshold;if(!c||!(h<=u||h>=a.screen.width-u)){if(d.extend(t,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),r.startX=h,r.startY=p,t.touchStartTime=d.now(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,s.threshold>0&&(t.allowThresholdMove=!1),"touchstart"!==o.type){var v=!0;l.is(t.formElements)&&(v=!1),i.activeElement&&n(i.activeElement).is(t.formElements)&&i.activeElement!==l[0]&&i.activeElement.blur();var f=v&&this.allowTouchMove&&s.touchStartPreventDefault;(s.touchStartForcePreventDefault||f)&&o.preventDefault()}this.emit("touchStart",o)}}}}function H(e){var t=this.touchEventsData,s=this.params,a=this.touches,r=this.rtlTranslate,o=e;if(o.originalEvent&&(o=o.originalEvent),t.isTouched){if(!t.isTouchEvent||"touchmove"===o.type){var l="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),h="touchmove"===o.type?l.pageX:o.pageX,p="touchmove"===o.type?l.pageY:o.pageY;if(o.preventedByNestedSwiper)return a.startX=h,void(a.startY=p);if(!this.allowTouchMove)return this.allowClick=!1,void(t.isTouched&&(d.extend(a,{startX:h,startY:p,currentX:h,currentY:p}),t.touchStartTime=d.now()));if(t.isTouchEvent&&s.touchReleaseOnEdges&&!s.loop)if(this.isVertical()){if(p<a.startY&&this.translate<=this.maxTranslate()||p>a.startY&&this.translate>=this.minTranslate())return t.isTouched=!1,void(t.isMoved=!1)}else if(h<a.startX&&this.translate<=this.maxTranslate()||h>a.startX&&this.translate>=this.minTranslate())return;if(t.isTouchEvent&&i.activeElement&&o.target===i.activeElement&&n(o.target).is(t.formElements))return t.isMoved=!0,void(this.allowClick=!1);if(t.allowTouchCallbacks&&this.emit("touchMove",o),!(o.targetTouches&&o.targetTouches.length>1)){a.currentX=h,a.currentY=p;var c=a.currentX-a.startX,u=a.currentY-a.startY;if(!(this.params.threshold&&Math.sqrt(Math.pow(c,2)+Math.pow(u,2))<this.params.threshold)){var v;if(void 0===t.isScrolling)this.isHorizontal()&&a.currentY===a.startY||this.isVertical()&&a.currentX===a.startX?t.isScrolling=!1:c*c+u*u>=25&&(v=180*Math.atan2(Math.abs(u),Math.abs(c))/Math.PI,t.isScrolling=this.isHorizontal()?v>s.touchAngle:90-v>s.touchAngle);if(t.isScrolling&&this.emit("touchMoveOpposite",o),void 0===t.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(t.startMoving=!0)),t.isScrolling)t.isTouched=!1;else if(t.startMoving){this.allowClick=!1,!s.cssMode&&o.cancelable&&o.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&o.stopPropagation(),t.isMoved||(s.loop&&this.loopFix(),t.startTranslate=this.getTranslate(),this.setTransition(0),this.animating&&this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),t.allowMomentumBounce=!1,!s.grabCursor||!0!==this.allowSlideNext&&!0!==this.allowSlidePrev||this.setGrabCursor(!0),this.emit("sliderFirstMove",o)),this.emit("sliderMove",o),t.isMoved=!0;var f=this.isHorizontal()?c:u;a.diff=f,f*=s.touchRatio,r&&(f=-f),this.swipeDirection=f>0?"prev":"next",t.currentTranslate=f+t.startTranslate;var m=!0,g=s.resistanceRatio;if(s.touchReleaseOnEdges&&(g=0),f>0&&t.currentTranslate>this.minTranslate()?(m=!1,s.resistance&&(t.currentTranslate=this.minTranslate()-1+Math.pow(-this.minTranslate()+t.startTranslate+f,g))):f<0&&t.currentTranslate<this.maxTranslate()&&(m=!1,s.resistance&&(t.currentTranslate=this.maxTranslate()+1-Math.pow(this.maxTranslate()-t.startTranslate-f,g))),m&&(o.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&t.currentTranslate<t.startTranslate&&(t.currentTranslate=t.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&t.currentTranslate>t.startTranslate&&(t.currentTranslate=t.startTranslate),s.threshold>0){if(!(Math.abs(f)>s.threshold||t.allowThresholdMove))return void(t.currentTranslate=t.startTranslate);if(!t.allowThresholdMove)return t.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,t.currentTranslate=t.startTranslate,void(a.diff=this.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}s.followFinger&&!s.cssMode&&((s.freeMode||s.watchSlidesProgress||s.watchSlidesVisibility)&&(this.updateActiveIndex(),this.updateSlidesClasses()),s.freeMode&&(0===t.velocities.length&&t.velocities.push({position:a[this.isHorizontal()?"startX":"startY"],time:t.touchStartTime}),t.velocities.push({position:a[this.isHorizontal()?"currentX":"currentY"],time:d.now()})),this.updateProgress(t.currentTranslate),this.setTranslate(t.currentTranslate))}}}}}else t.startMoving&&t.isScrolling&&this.emit("touchMoveOpposite",o)}function B(e){var t=this,i=t.touchEventsData,s=t.params,a=t.touches,r=t.rtlTranslate,n=t.$wrapperEl,o=t.slidesGrid,l=t.snapGrid,h=e;if(h.originalEvent&&(h=h.originalEvent),i.allowTouchCallbacks&&t.emit("touchEnd",h),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&s.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);s.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var p,c=d.now(),u=c-i.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(h),t.emit("tap click",h),u<300&&c-i.lastClickTime<300&&t.emit("doubleTap doubleClick",h)),i.lastClickTime=d.now(),d.nextTick((function(){t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===a.diff||i.currentTranslate===i.startTranslate)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,p=s.followFinger?r?t.translate:-t.translate:-i.currentTranslate,!s.cssMode)if(s.freeMode){if(p<-t.minTranslate())return void t.slideTo(t.activeIndex);if(p>-t.maxTranslate())return void(t.slides.length<l.length?t.slideTo(l.length-1):t.slideTo(t.slides.length-1));if(s.freeModeMomentum){if(i.velocities.length>1){var v=i.velocities.pop(),f=i.velocities.pop(),m=v.position-f.position,g=v.time-f.time;t.velocity=m/g,t.velocity/=2,Math.abs(t.velocity)<s.freeModeMinimumVelocity&&(t.velocity=0),(g>150||d.now()-v.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=s.freeModeMomentumVelocityRatio,i.velocities.length=0;var b=1e3*s.freeModeMomentumRatio,w=t.velocity*b,y=t.translate+w;r&&(y=-y);var x,E,T=!1,S=20*Math.abs(t.velocity)*s.freeModeMomentumBounceRatio;if(y<t.maxTranslate())s.freeModeMomentumBounce?(y+t.maxTranslate()<-S&&(y=t.maxTranslate()-S),x=t.maxTranslate(),T=!0,i.allowMomentumBounce=!0):y=t.maxTranslate(),s.loop&&s.centeredSlides&&(E=!0);else if(y>t.minTranslate())s.freeModeMomentumBounce?(y-t.minTranslate()>S&&(y=t.minTranslate()+S),x=t.minTranslate(),T=!0,i.allowMomentumBounce=!0):y=t.minTranslate(),s.loop&&s.centeredSlides&&(E=!0);else if(s.freeModeSticky){for(var C,M=0;M<l.length;M+=1)if(l[M]>-y){C=M;break}y=-(y=Math.abs(l[C]-y)<Math.abs(l[C-1]-y)||"next"===t.swipeDirection?l[C]:l[C-1])}if(E&&t.once("transitionEnd",(function(){t.loopFix()})),0!==t.velocity){if(b=r?Math.abs((-y-t.translate)/t.velocity):Math.abs((y-t.translate)/t.velocity),s.freeModeSticky){var P=Math.abs((r?-y:y)-t.translate),z=t.slidesSizesGrid[t.activeIndex];b=P<z?s.speed:P<2*z?1.5*s.speed:2.5*s.speed}}else if(s.freeModeSticky)return void t.slideToClosest();s.freeModeMomentumBounce&&T?(t.updateProgress(x),t.setTransition(b),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&i.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(s.speed),setTimeout((function(){t.setTranslate(x),n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(t.updateProgress(y),t.setTransition(b),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(y),t.updateActiveIndex(),t.updateSlidesClasses()}else if(s.freeModeSticky)return void t.slideToClosest();(!s.freeModeMomentum||u>=s.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var k=0,$=t.slidesSizesGrid[0],L=0;L<o.length;L+=L<s.slidesPerGroupSkip?1:s.slidesPerGroup){var I=L<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==o[L+I]?p>=o[L]&&p<o[L+I]&&(k=L,$=o[L+I]-o[L]):p>=o[L]&&(k=L,$=o[o.length-1]-o[o.length-2])}var O=(p-o[k])/$,D=k<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(u>s.longSwipesMs){if(!s.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(O>=s.longSwipesRatio?t.slideTo(k+D):t.slideTo(k)),"prev"===t.swipeDirection&&(O>1-s.longSwipesRatio?t.slideTo(k+D):t.slideTo(k))}else{if(!s.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(h.target===t.navigation.nextEl||h.target===t.navigation.prevEl)?h.target===t.navigation.nextEl?t.slideTo(k+D):t.slideTo(k):("next"===t.swipeDirection&&t.slideTo(k+D),"prev"===t.swipeDirection&&t.slideTo(k))}}}function N(){var e=this.params,t=this.el;if(!t||0!==t.offsetWidth){e.breakpoints&&this.setBreakpoint();var i=this.allowSlideNext,s=this.allowSlidePrev,a=this.snapGrid;this.allowSlideNext=!0,this.allowSlidePrev=!0,this.updateSize(),this.updateSlides(),this.updateSlidesClasses(),("auto"===e.slidesPerView||e.slidesPerView>1)&&this.isEnd&&!this.params.centeredSlides?this.slideTo(this.slides.length-1,0,!1,!0):this.slideTo(this.activeIndex,0,!1,!0),this.autoplay&&this.autoplay.running&&this.autoplay.paused&&this.autoplay.run(),this.allowSlidePrev=s,this.allowSlideNext=i,this.params.watchOverflow&&a!==this.snapGrid&&this.checkOverflow()}}function X(e){this.allowClick||(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function V(){var e=this.wrapperEl,t=this.rtlTranslate;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=t?e.scrollWidth-e.offsetWidth-e.scrollLeft:-e.scrollLeft:this.translate=-e.scrollTop,-0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();var i=this.maxTranslate()-this.minTranslate();(0===i?0:(this.translate-this.minTranslate())/i)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}var Y=!1;function F(){}var W={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,preventInteractionOnTransition:!1,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0},R={update:u,translate:v,transition:f,slide:m,loop:g,grabCursor:b,manipulation:D,events:{attachEvents:function(){var e=this.params,t=this.touchEvents,s=this.el,a=this.wrapperEl;this.onTouchStart=G.bind(this),this.onTouchMove=H.bind(this),this.onTouchEnd=B.bind(this),e.cssMode&&(this.onScroll=V.bind(this)),this.onClick=X.bind(this);var r=!!e.nested;if(!h.touch&&h.pointerEvents)s.addEventListener(t.start,this.onTouchStart,!1),i.addEventListener(t.move,this.onTouchMove,r),i.addEventListener(t.end,this.onTouchEnd,!1);else{if(h.touch){var n=!("touchstart"!==t.start||!h.passiveListener||!e.passiveListeners)&&{passive:!0,capture:!1};s.addEventListener(t.start,this.onTouchStart,n),s.addEventListener(t.move,this.onTouchMove,h.passiveListener?{passive:!1,capture:r}:r),s.addEventListener(t.end,this.onTouchEnd,n),t.cancel&&s.addEventListener(t.cancel,this.onTouchEnd,n),Y||(i.addEventListener("touchstart",F),Y=!0)}(e.simulateTouch&&!A.ios&&!A.android||e.simulateTouch&&!h.touch&&A.ios)&&(s.addEventListener("mousedown",this.onTouchStart,!1),i.addEventListener("mousemove",this.onTouchMove,r),i.addEventListener("mouseup",this.onTouchEnd,!1))}(e.preventClicks||e.preventClicksPropagation)&&s.addEventListener("click",this.onClick,!0),e.cssMode&&a.addEventListener("scroll",this.onScroll),e.updateOnWindowResize?this.on(A.ios||A.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):this.on("observerUpdate",N,!0)},detachEvents:function(){var e=this.params,t=this.touchEvents,s=this.el,a=this.wrapperEl,r=!!e.nested;if(!h.touch&&h.pointerEvents)s.removeEventListener(t.start,this.onTouchStart,!1),i.removeEventListener(t.move,this.onTouchMove,r),i.removeEventListener(t.end,this.onTouchEnd,!1);else{if(h.touch){var n=!("onTouchStart"!==t.start||!h.passiveListener||!e.passiveListeners)&&{passive:!0,capture:!1};s.removeEventListener(t.start,this.onTouchStart,n),s.removeEventListener(t.move,this.onTouchMove,r),s.removeEventListener(t.end,this.onTouchEnd,n),t.cancel&&s.removeEventListener(t.cancel,this.onTouchEnd,n)}(e.simulateTouch&&!A.ios&&!A.android||e.simulateTouch&&!h.touch&&A.ios)&&(s.removeEventListener("mousedown",this.onTouchStart,!1),i.removeEventListener("mousemove",this.onTouchMove,r),i.removeEventListener("mouseup",this.onTouchEnd,!1))}(e.preventClicks||e.preventClicksPropagation)&&s.removeEventListener("click",this.onClick,!0),e.cssMode&&a.removeEventListener("scroll",this.onScroll),this.off(A.ios||A.android?"resize orientationchange observerUpdate":"resize observerUpdate",N)}},breakpoints:{setBreakpoint:function(){var e=this.activeIndex,t=this.initialized,i=this.loopedSlides;void 0===i&&(i=0);var s=this.params,a=this.$el,r=s.breakpoints;if(r&&(!r||0!==Object.keys(r).length)){var n=this.getBreakpoint(r);if(n&&this.currentBreakpoint!==n){var o=n in r?r[n]:void 0;o&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=o[e];void 0!==t&&(o[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var l=o||this.originalParams,h=s.slidesPerColumn>1,p=l.slidesPerColumn>1;h&&!p?a.removeClass(s.containerModifierClass+"multirow "+s.containerModifierClass+"multirow-column"):!h&&p&&(a.addClass(s.containerModifierClass+"multirow"),"column"===l.slidesPerColumnFill&&a.addClass(s.containerModifierClass+"multirow-column"));var c=l.direction&&l.direction!==s.direction,u=s.loop&&(l.slidesPerView!==s.slidesPerView||c);c&&t&&this.changeDirection(),d.extend(this.params,l),d.extend(this,{allowTouchMove:this.params.allowTouchMove,allowSlideNext:this.params.allowSlideNext,allowSlidePrev:this.params.allowSlidePrev}),this.currentBreakpoint=n,u&&t&&(this.loopDestroy(),this.loopCreate(),this.updateSlides(),this.slideTo(e-i+this.loopedSlides,0,!1)),this.emit("breakpoint",l)}}},getBreakpoint:function(e){if(e){var t=!1,i=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var t=parseFloat(e.substr(1));return{value:a.innerHeight*t,point:e}}return{value:e,point:e}}));i.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var s=0;s<i.length;s+=1){var r=i[s],n=r.point;r.value<=a.innerWidth&&(t=n)}return t||"max"}}},checkOverflow:{checkOverflow:function(){var e=this.params,t=this.isLocked,i=this.slides.length>0&&e.slidesOffsetBefore+e.spaceBetween*(this.slides.length-1)+this.slides[0].offsetWidth*this.slides.length;e.slidesOffsetBefore&&e.slidesOffsetAfter&&i?this.isLocked=i<=this.size:this.isLocked=1===this.snapGrid.length,this.allowSlideNext=!this.isLocked,this.allowSlidePrev=!this.isLocked,t!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock"),t&&t!==this.isLocked&&(this.isEnd=!1,this.navigation.update())}},classes:{addClasses:function(){var e=this.classNames,t=this.params,i=this.rtl,s=this.$el,a=[];a.push("initialized"),a.push(t.direction),t.freeMode&&a.push("free-mode"),t.autoHeight&&a.push("autoheight"),i&&a.push("rtl"),t.slidesPerColumn>1&&(a.push("multirow"),"column"===t.slidesPerColumnFill&&a.push("multirow-column")),A.android&&a.push("android"),A.ios&&a.push("ios"),t.cssMode&&a.push("css-mode"),a.forEach((function(i){e.push(t.containerModifierClass+i)})),s.addClass(e.join(" "))},removeClasses:function(){var e=this.$el,t=this.classNames;e.removeClass(t.join(" "))}},images:{loadImage:function(e,t,i,s,r,o){var l;function d(){o&&o()}n(e).parent("picture")[0]||e.complete&&r?d():t?((l=new a.Image).onload=d,l.onerror=d,s&&(l.sizes=s),i&&(l.srcset=i),t&&(l.src=t)):d()},preloadImages:function(){var e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var i=0;i<e.imagesToLoad.length;i+=1){var s=e.imagesToLoad[i];e.loadImage(s,s.currentSrc||s.getAttribute("src"),s.srcset||s.getAttribute("srcset"),s.sizes||s.getAttribute("sizes"),!0,t)}}}},q={},j=function(e){function t(){for(var i,s,a,r=[],o=arguments.length;o--;)r[o]=arguments[o];1===r.length&&r[0].constructor&&r[0].constructor===Object?a=r[0]:(s=(i=r)[0],a=i[1]),a||(a={}),a=d.extend({},a),s&&!a.el&&(a.el=s),e.call(this,a),Object.keys(R).forEach((function(e){Object.keys(R[e]).forEach((function(i){t.prototype[i]||(t.prototype[i]=R[e][i])}))}));var l=this;void 0===l.modules&&(l.modules={}),Object.keys(l.modules).forEach((function(e){var t=l.modules[e];if(t.params){var i=Object.keys(t.params)[0],s=t.params[i];if("object"!=typeof s||null===s)return;if(!(i in a)||!("enabled"in s))return;!0===a[i]&&(a[i]={enabled:!0}),"object"!=typeof a[i]||"enabled"in a[i]||(a[i].enabled=!0),a[i]||(a[i]={enabled:!1})}}));var p=d.extend({},W);l.useModulesParams(p),l.params=d.extend({},p,q,a),l.originalParams=d.extend({},l.params),l.passedParams=d.extend({},a),l.$=n;var c=n(l.params.el);if(s=c[0]){if(c.length>1){var u=[];return c.each((function(e,i){var s=d.extend({},a,{el:i});u.push(new t(s))})),u}var v,f,m;return s.swiper=l,c.data("swiper",l),s&&s.shadowRoot&&s.shadowRoot.querySelector?(v=n(s.shadowRoot.querySelector("."+l.params.wrapperClass))).children=function(e){return c.children(e)}:v=c.children("."+l.params.wrapperClass),d.extend(l,{$el:c,el:s,$wrapperEl:v,wrapperEl:v[0],classNames:[],slides:n(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===l.params.direction},isVertical:function(){return"vertical"===l.params.direction},rtl:"rtl"===s.dir.toLowerCase()||"rtl"===c.css("direction"),rtlTranslate:"horizontal"===l.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===c.css("direction")),wrongRTL:"-webkit-box"===v.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEvents:(f=["touchstart","touchmove","touchend","touchcancel"],m=["mousedown","mousemove","mouseup"],h.pointerEvents&&(m=["pointerdown","pointermove","pointerup"]),l.touchEventsTouch={start:f[0],move:f[1],end:f[2],cancel:f[3]},l.touchEventsDesktop={start:m[0],move:m[1],end:m[2]},h.touch||!l.params.simulateTouch?l.touchEventsTouch:l.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, label",lastClickTime:d.now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.useModules(),l.params.init&&l.init(),l}}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var i={extendedDefaults:{configurable:!0},defaults:{configurable:!0},Class:{configurable:!0},$:{configurable:!0}};return t.prototype.slidesPerViewDynamic=function(){var e=this.params,t=this.slides,i=this.slidesGrid,s=this.size,a=this.activeIndex,r=1;if(e.centeredSlides){for(var n,o=t[a].swiperSlideSize,l=a+1;l<t.length;l+=1)t[l]&&!n&&(r+=1,(o+=t[l].swiperSlideSize)>s&&(n=!0));for(var d=a-1;d>=0;d-=1)t[d]&&!n&&(r+=1,(o+=t[d].swiperSlideSize)>s&&(n=!0))}else for(var h=a+1;h<t.length;h+=1)i[h]-i[a]<s&&(r+=1);return r},t.prototype.update=function(){var e=this;if(e&&!e.destroyed){var t=e.snapGrid,i=e.params;i.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(s(),e.params.autoHeight&&e.updateAutoHeight()):(("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||s(),i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function s(){var t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}},t.prototype.changeDirection=function(e,t){void 0===t&&(t=!0);var i=this.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(this.$el.removeClass(""+this.params.containerModifierClass+i).addClass(""+this.params.containerModifierClass+e),this.params.direction=e,this.slides.each((function(t,i){"vertical"===e?i.style.width="":i.style.height=""})),this.emit("changeDirection"),t&&this.update()),this},t.prototype.init=function(){this.initialized||(this.emit("beforeInit"),this.params.breakpoints&&this.setBreakpoint(),this.addClasses(),this.params.loop&&this.loopCreate(),this.updateSize(),this.updateSlides(),this.params.watchOverflow&&this.checkOverflow(),this.params.grabCursor&&this.setGrabCursor(),this.params.preloadImages&&this.preloadImages(),this.params.loop?this.slideTo(this.params.initialSlide+this.loopedSlides,0,this.params.runCallbacksOnInit):this.slideTo(this.params.initialSlide,0,this.params.runCallbacksOnInit),this.attachEvents(),this.initialized=!0,this.emit("init"))},t.prototype.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var i=this,s=i.params,a=i.$el,r=i.$wrapperEl,n=i.slides;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),a.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([s.slideVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((function(e){i.off(e)})),!1!==e&&(i.$el[0].swiper=null,i.$el.data("swiper",null),d.deleteProps(i)),i.destroyed=!0),null},t.extendDefaults=function(e){d.extend(q,e)},i.extendedDefaults.get=function(){return q},i.defaults.get=function(){return W},i.Class.get=function(){return e},i.$.get=function(){return n},Object.defineProperties(t,i),t}(p),K={name:"device",proto:{device:A},static:{device:A}},U={name:"support",proto:{support:h},static:{support:h}},_={isEdge:!!a.navigator.userAgent.match(/Edge/g),isSafari:function(){var e=a.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(a.navigator.userAgent)},Z={name:"browser",proto:{browser:_},static:{browser:_}},Q={name:"resize",create:function(){var e=this;d.extend(e,{resize:{resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(){a.addEventListener("resize",this.resize.resizeHandler),a.addEventListener("orientationchange",this.resize.orientationChangeHandler)},destroy:function(){a.removeEventListener("resize",this.resize.resizeHandler),a.removeEventListener("orientationchange",this.resize.orientationChangeHandler)}}},J={func:a.MutationObserver||a.WebkitMutationObserver,attach:function(e,t){void 0===t&&(t={});var i=this,s=new(0,J.func)((function(e){if(1!==e.length){var t=function(){i.emit("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(t):a.setTimeout(t,0)}else i.emit("observerUpdate",e[0])}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),i.observer.observers.push(s)},init:function(){if(h.observer&&this.params.observer){if(this.params.observeParents)for(var e=this.$el.parents(),t=0;t<e.length;t+=1)this.observer.attach(e[t]);this.observer.attach(this.$el[0],{childList:this.params.observeSlideChildren}),this.observer.attach(this.$wrapperEl[0],{attributes:!1})}},destroy:function(){this.observer.observers.forEach((function(e){e.disconnect()})),this.observer.observers=[]}},ee={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create:function(){d.extend(this,{observer:{init:J.init.bind(this),attach:J.attach.bind(this),destroy:J.destroy.bind(this),observers:[]}})},on:{init:function(){this.observer.init()},destroy:function(){this.observer.destroy()}}},te={update:function(e){var t=this,i=t.params,s=i.slidesPerView,a=i.slidesPerGroup,r=i.centeredSlides,n=t.params.virtual,o=n.addSlidesBefore,l=n.addSlidesAfter,h=t.virtual,p=h.from,c=h.to,u=h.slides,v=h.slidesGrid,f=h.renderSlide,m=h.offset;t.updateActiveIndex();var g,b,w,y=t.activeIndex||0;g=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",r?(b=Math.floor(s/2)+a+o,w=Math.floor(s/2)+a+l):(b=s+(a-1)+o,w=a+l);var x=Math.max((y||0)-w,0),E=Math.min((y||0)+b,u.length-1),T=(t.slidesGrid[x]||0)-(t.slidesGrid[0]||0);function S(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(d.extend(t.virtual,{from:x,to:E,offset:T,slidesGrid:t.slidesGrid}),p===x&&c===E&&!e)return t.slidesGrid!==v&&T!==m&&t.slides.css(g,T+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:T,from:x,to:E,slides:function(){for(var e=[],t=x;t<=E;t+=1)e.push(u[t]);return e}()}),void S();var C=[],M=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(var P=p;P<=c;P+=1)(P<x||P>E)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+P+'"]').remove();for(var z=0;z<u.length;z+=1)z>=x&&z<=E&&(void 0===c||e?M.push(z):(z>c&&M.push(z),z<p&&C.push(z)));M.forEach((function(e){t.$wrapperEl.append(f(u[e],e))})),C.sort((function(e,t){return t-e})).forEach((function(e){t.$wrapperEl.prepend(f(u[e],e))})),t.$wrapperEl.children(".swiper-slide").css(g,T+"px"),S()},renderSlide:function(e,t){var i=this.params.virtual;if(i.cache&&this.virtual.cache[t])return this.virtual.cache[t];var s=i.renderSlide?n(i.renderSlide.call(this,e,t)):n('<div class="'+this.params.slideClass+'" data-swiper-slide-index="'+t+'">'+e+"</div>");return s.attr("data-swiper-slide-index")||s.attr("data-swiper-slide-index",t),i.cache&&(this.virtual.cache[t]=s),s},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 t=this.activeIndex,i=t+1,s=1;if(Array.isArray(e)){for(var a=0;a<e.length;a+=1)e[a]&&this.virtual.slides.unshift(e[a]);i=t+e.length,s=e.length}else this.virtual.slides.unshift(e);if(this.params.virtual.cache){var r=this.virtual.cache,n={};Object.keys(r).forEach((function(e){var t=r[e],i=t.attr("data-swiper-slide-index");i&&t.attr("data-swiper-slide-index",parseInt(i,10)+1),n[parseInt(e,10)+s]=t})),this.virtual.cache=n}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;i>=0;i-=1)this.virtual.slides.splice(e[i],1),this.params.virtual.cache&&delete this.virtual.cache[e[i]],e[i]<t&&(t-=1),t=Math.max(t,0);else this.virtual.slides.splice(e,1),this.params.virtual.cache&&delete this.virtual.cache[e],e<t&&(t-=1),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)}},ie={name:"virtual",params:{virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,addSlidesBefore:0,addSlidesAfter:0}},create:function(){d.extend(this,{virtual:{update:te.update.bind(this),appendSlide:te.appendSlide.bind(this),prependSlide:te.prependSlide.bind(this),removeSlide:te.removeSlide.bind(this),removeAllSlides:te.removeAllSlides.bind(this),renderSlide:te.renderSlide.bind(this),slides:this.params.virtual.slides,cache:{}}})},on:{beforeInit:function(){if(this.params.virtual.enabled){this.classNames.push(this.params.containerModifierClass+"virtual");var e={watchSlidesProgress:!0};d.extend(this.params,e),d.extend(this.originalParams,e),this.params.initialSlide||this.virtual.update()}},setTranslate:function(){this.params.virtual.enabled&&this.virtual.update()}}},se={handle:function(e){var t=this.rtlTranslate,s=e;s.originalEvent&&(s=s.originalEvent);var r=s.keyCode||s.charCode;if(!this.allowSlideNext&&(this.isHorizontal()&&39===r||this.isVertical()&&40===r||34===r))return!1;if(!this.allowSlidePrev&&(this.isHorizontal()&&37===r||this.isVertical()&&38===r||33===r))return!1;if(!(s.shiftKey||s.altKey||s.ctrlKey||s.metaKey||i.activeElement&&i.activeElement.nodeName&&("input"===i.activeElement.nodeName.toLowerCase()||"textarea"===i.activeElement.nodeName.toLowerCase()))){if(this.params.keyboard.onlyInViewport&&(33===r||34===r||37===r||39===r||38===r||40===r)){var n=!1;if(this.$el.parents("."+this.params.slideClass).length>0&&0===this.$el.parents("."+this.params.slideActiveClass).length)return;var o=a.innerWidth,l=a.innerHeight,d=this.$el.offset();t&&(d.left-=this.$el[0].scrollLeft);for(var h=[[d.left,d.top],[d.left+this.width,d.top],[d.left,d.top+this.height],[d.left+this.width,d.top+this.height]],p=0;p<h.length;p+=1){var c=h[p];c[0]>=0&&c[0]<=o&&c[1]>=0&&c[1]<=l&&(n=!0)}if(!n)return}this.isHorizontal()?(33!==r&&34!==r&&37!==r&&39!==r||(s.preventDefault?s.preventDefault():s.returnValue=!1),(34!==r&&39!==r||t)&&(33!==r&&37!==r||!t)||this.slideNext(),(33!==r&&37!==r||t)&&(34!==r&&39!==r||!t)||this.slidePrev()):(33!==r&&34!==r&&38!==r&&40!==r||(s.preventDefault?s.preventDefault():s.returnValue=!1),34!==r&&40!==r||this.slideNext(),33!==r&&38!==r||this.slidePrev()),this.emit("keyPress",r)}},enable:function(){this.keyboard.enabled||(n(i).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable:function(){this.keyboard.enabled&&(n(i).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}},ae={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0}},create:function(){d.extend(this,{keyboard:{enabled:!1,enable:se.enable.bind(this),disable:se.disable.bind(this),handle:se.handle.bind(this)}})},on:{init:function(){this.params.keyboard.enabled&&this.keyboard.enable()},destroy:function(){this.keyboard.enabled&&this.keyboard.disable()}}};var re={lastScrollTime:d.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return a.navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var e="onwheel"in i;if(!e){var t=i.createElement("div");t.setAttribute("onwheel","return;"),e="function"==typeof t.onwheel}return!e&&i.implementation&&i.implementation.hasFeature&&!0!==i.implementation.hasFeature("","")&&(e=i.implementation.hasFeature("Events.wheel","3.0")),e}()?"wheel":"mousewheel"},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)),s&&!t&&(t=s<1?-1:1),a&&!i&&(i=a<1?-1:1),{spinX:t,spinY: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;i.params.cssMode&&t.preventDefault();var a=i.$el;if("container"!==i.params.mousewheel.eventsTarged&&(a=n(i.params.mousewheel.eventsTarged)),!i.mouseEntered&&!a[0].contains(t.target)&&!s.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var r=0,o=i.rtlTranslate?-1:1,l=re.normalize(t);if(s.forceToAxis)if(i.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;r=l.pixelX*o}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;r=l.pixelY}else r=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*o:-l.pixelY;if(0===r)return!0;if(s.invert&&(r=-r),i.params.freeMode){var h={time:d.now(),delta:Math.abs(r),direction:Math.sign(r)},p=i.mousewheel.lastEventBeforeSnap,c=p&&h.time<p.time+500&&h.delta<=p.delta&&h.direction===p.direction;if(!c){i.mousewheel.lastEventBeforeSnap=void 0,i.params.loop&&i.loopFix();var u=i.getTranslate()+r*s.sensitivity,v=i.isBeginning,f=i.isEnd;if(u>=i.minTranslate()&&(u=i.minTranslate()),u<=i.maxTranslate()&&(u=i.maxTranslate()),i.setTransition(0),i.setTranslate(u),i.updateProgress(),i.updateActiveIndex(),i.updateSlidesClasses(),(!v&&i.isBeginning||!f&&i.isEnd)&&i.updateSlidesClasses(),i.params.freeModeSticky){clearTimeout(i.mousewheel.timeout),i.mousewheel.timeout=void 0;var m=i.mousewheel.recentWheelEvents;m.length>=15&&m.shift();var g=m.length?m[m.length-1]:void 0,b=m[0];if(m.push(h),g&&(h.delta>g.delta||h.direction!==g.direction))m.splice(0);else if(m.length>=15&&h.time-b.time<500&&b.delta-h.delta>=1&&h.delta<=6){var w=r>0?.8:.2;i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.mousewheel.timeout=d.nextTick((function(){i.slideToClosest(i.params.speed,!0,void 0,w)}),0)}i.mousewheel.timeout||(i.mousewheel.timeout=d.nextTick((function(){i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.slideToClosest(i.params.speed,!0,void 0,.5)}),500))}if(c||i.emit("scroll",t),i.params.autoplay&&i.params.autoplayDisableOnInteraction&&i.autoplay.stop(),u===i.minTranslate()||u===i.maxTranslate())return!0}}else{var y={time:d.now(),delta:Math.abs(r),direction:Math.sign(r),raw:e},x=i.mousewheel.recentWheelEvents;x.length>=2&&x.shift();var E=x.length?x[x.length-1]:void 0;if(x.push(y),E?(y.direction!==E.direction||y.delta>E.delta||y.time>E.time+150)&&i.mousewheel.animateSlider(y):i.mousewheel.animateSlider(y),i.mousewheel.releaseScroll(y))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider:function(e){return e.delta>=6&&d.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 a.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=re.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"container"!==this.params.mousewheel.eventsTarged&&(t=n(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,!0},disable:function(){var e=re.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"container"!==this.params.mousewheel.eventsTarged&&(t=n(this.params.mousewheel.eventsTarged)),t.off(e,this.mousewheel.handle),this.mousewheel.enabled=!1,!0}},ne={update:function(){var e=this.params.navigation;if(!this.params.loop){var t=this.navigation,i=t.$nextEl,s=t.$prevEl;s&&s.length>0&&(this.isBeginning?s.addClass(e.disabledClass):s.removeClass(e.disabledClass),s[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass)),i&&i.length>0&&(this.isEnd?i.addClass(e.disabledClass):i.removeClass(e.disabledClass),i[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.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=n(i.nextEl),this.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===this.$el.find(i.nextEl).length&&(e=this.$el.find(i.nextEl))),i.prevEl&&(t=n(i.prevEl),this.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===this.$el.find(i.prevEl).length&&(t=this.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",this.navigation.onNextClick),t&&t.length>0&&t.on("click",this.navigation.onPrevClick),d.extend(this.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}))},destroy:function(){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;t&&t.length&&(t.off("click",this.navigation.onNextClick),t.removeClass(this.params.navigation.disabledClass)),i&&i.length&&(i.off("click",this.navigation.onPrevClick),i.removeClass(this.params.navigation.disabledClass))}},oe={update:function(){var e=this.rtl,t=this.params.pagination;if(t.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var i,s=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,a=this.pagination.$el,r=this.params.loop?Math.ceil((s-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length;if(this.params.loop?((i=Math.ceil((this.activeIndex-this.loopedSlides)/this.params.slidesPerGroup))>s-1-2*this.loopedSlides&&(i-=s-2*this.loopedSlides),i>r-1&&(i-=r),i<0&&"bullets"!==this.params.paginationType&&(i=r+i)):i=void 0!==this.snapIndex?this.snapIndex:this.activeIndex||0,"bullets"===t.type&&this.pagination.bullets&&this.pagination.bullets.length>0){var o,l,d,h=this.pagination.bullets;if(t.dynamicBullets&&(this.pagination.bulletSize=h.eq(0)[this.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(this.isHorizontal()?"width":"height",this.pagination.bulletSize*(t.dynamicMainBullets+4)+"px"),t.dynamicMainBullets>1&&void 0!==this.previousIndex&&(this.pagination.dynamicBulletIndex+=i-this.previousIndex,this.pagination.dynamicBulletIndex>t.dynamicMainBullets-1?this.pagination.dynamicBulletIndex=t.dynamicMainBullets-1:this.pagination.dynamicBulletIndex<0&&(this.pagination.dynamicBulletIndex=0)),o=i-this.pagination.dynamicBulletIndex,d=((l=o+(Math.min(h.length,t.dynamicMainBullets)-1))+o)/2),h.removeClass(t.bulletActiveClass+" "+t.bulletActiveClass+"-next "+t.bulletActiveClass+"-next-next "+t.bulletActiveClass+"-prev "+t.bulletActiveClass+"-prev-prev "+t.bulletActiveClass+"-main"),a.length>1)h.each((function(e,s){var a=n(s),r=a.index();r===i&&a.addClass(t.bulletActiveClass),t.dynamicBullets&&(r>=o&&r<=l&&a.addClass(t.bulletActiveClass+"-main"),r===o&&a.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),r===l&&a.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next"))}));else{var p=h.eq(i),c=p.index();if(p.addClass(t.bulletActiveClass),t.dynamicBullets){for(var u=h.eq(o),v=h.eq(l),f=o;f<=l;f+=1)h.eq(f).addClass(t.bulletActiveClass+"-main");if(this.params.loop)if(c>=h.length-t.dynamicMainBullets){for(var m=t.dynamicMainBullets;m>=0;m-=1)h.eq(h.length-m).addClass(t.bulletActiveClass+"-main");h.eq(h.length-t.dynamicMainBullets-1).addClass(t.bulletActiveClass+"-prev")}else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next");else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next")}}if(t.dynamicBullets){var g=Math.min(h.length,t.dynamicMainBullets+4),b=(this.pagination.bulletSize*g-this.pagination.bulletSize)/2-d*this.pagination.bulletSize,w=e?"right":"left";h.css(this.isHorizontal()?w:"top",b+"px")}}if("fraction"===t.type&&(a.find("."+t.currentClass).text(t.formatFractionCurrent(i+1)),a.find("."+t.totalClass).text(t.formatFractionTotal(r))),"progressbar"===t.type){var y;y=t.progressbarOpposite?this.isHorizontal()?"vertical":"horizontal":this.isHorizontal()?"horizontal":"vertical";var x=(i+1)/r,E=1,T=1;"horizontal"===y?E=x:T=x,a.find("."+t.progressbarFillClass).transform("translate3d(0,0,0) scaleX("+E+") scaleY("+T+")").transition(this.params.speed)}"custom"===t.type&&t.renderCustom?(a.html(t.renderCustom(this,i+1,r)),this.emit("paginationRender",this,a[0])):this.emit("paginationUpdate",this,a[0]),a[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](t.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.slides.length: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,r=0;r<a;r+=1)e.renderBullet?s+=e.renderBullet.call(this,r,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):'<span class="'+e.currentClass+'"></span> / <span class="'+e.totalClass+'"></span>',i.html(s)),"progressbar"===e.type&&(s=e.renderProgressbar?e.renderProgressbar.call(this,e.progressbarFillClass):'<span class="'+e.progressbarFillClass+'"></span>',i.html(s)),"custom"!==e.type&&this.emit("paginationRender",this.pagination.$el[0])}},init:function(){var e=this,t=e.params.pagination;if(t.el){var i=n(t.el);0!==i.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&i.length>1&&1===e.$el.find(t.el).length&&(i=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&i.addClass(t.clickableClass),i.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(i.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&i.addClass(t.progressbarOppositeClass),t.clickable&&i.on("click","."+t.bulletClass,(function(t){t.preventDefault();var i=n(this).index()*e.params.slidesPerGroup;e.params.loop&&(i+=e.loopedSlides),e.slideTo(i)})),d.extend(e.pagination,{$el:i,el:i[0]}))}},destroy:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}}},le={setTranslate:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=this.rtlTranslate,i=this.progress,s=e.dragSize,a=e.trackSize,r=e.$dragEl,n=e.$el,o=this.params.scrollbar,l=s,d=(a-s)*i;t?(d=-d)>0?(l=s-d,d=0):-d+s>a&&(l=a+d):d<0?(l=s+d,d=0):d+s>a&&(l=a-d),this.isHorizontal()?(r.transform("translate3d("+d+"px, 0, 0)"),r[0].style.width=l+"px"):(r.transform("translate3d(0px, "+d+"px, 0)"),r[0].style.height=l+"px"),o.hide&&(clearTimeout(this.scrollbar.timeout),n[0].style.opacity=1,this.scrollbar.timeout=setTimeout((function(){n[0].style.opacity=0,n.transition(400)}),1e3))}},setTransition:function(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=e.$dragEl,i=e.$el;t[0].style.width="",t[0].style.height="";var s,a=this.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,r=this.size/this.virtualSize,n=r*(a/this.size);s="auto"===this.params.scrollbar.dragSize?a*r:parseInt(this.params.scrollbar.dragSize,10),this.isHorizontal()?t[0].style.width=s+"px":t[0].style.height=s+"px",i[0].style.display=r>=1?"none":"",this.params.scrollbar.hide&&(i[0].style.opacity=0),d.extend(e,{trackSize:a,divider:r,moveDivider:n,dragSize:s}),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].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY},setDragPosition:function(e){var t,i=this.scrollbar,s=this.rtlTranslate,a=i.$el,r=i.dragSize,n=i.trackSize,o=i.dragStartPos;t=(i.getPointerPosition(e)-a.offset()[this.isHorizontal()?"left":"top"]-(null!==o?o:r/2))/(n-r),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var l=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*t;this.updateProgress(l),this.setTranslate(l),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el,r=i.$dragEl;this.scrollbar.isTouched=!0,this.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[this.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),r.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=d.nextTick((function(){a.css("opacity",0),a.transition(400)}),1e3)),this.emit("scrollbarDragEnd",e),t.snapOnRelease&&this.slideToClosest())},enableDraggable:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=e.$el[0],n=!(!h.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},o=!(!h.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};h.touch?(r.addEventListener(t.start,this.scrollbar.onDragStart,n),r.addEventListener(t.move,this.scrollbar.onDragMove,n),r.addEventListener(t.end,this.scrollbar.onDragEnd,o)):(r.addEventListener(s.start,this.scrollbar.onDragStart,n),i.addEventListener(s.move,this.scrollbar.onDragMove,n),i.addEventListener(s.end,this.scrollbar.onDragEnd,o))}},disableDraggable:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=e.$el[0],n=!(!h.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},o=!(!h.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};h.touch?(r.removeEventListener(t.start,this.scrollbar.onDragStart,n),r.removeEventListener(t.move,this.scrollbar.onDragMove,n),r.removeEventListener(t.end,this.scrollbar.onDragEnd,o)):(r.removeEventListener(s.start,this.scrollbar.onDragStart,n),i.removeEventListener(s.move,this.scrollbar.onDragMove,n),i.removeEventListener(s.end,this.scrollbar.onDragEnd,o))}},init:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.$el,i=this.params.scrollbar,s=n(i.el);this.params.uniqueNavElements&&"string"==typeof i.el&&s.length>1&&1===t.find(i.el).length&&(s=t.find(i.el));var a=s.find("."+this.params.scrollbar.dragClass);0===a.length&&(a=n('<div class="'+this.params.scrollbar.dragClass+'"></div>'),s.append(a)),d.extend(e,{$el:s,el:s[0],$dragEl:a,dragEl:a[0]}),i.draggable&&e.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},de={setTransform:function(e,t){var i=this.rtl,s=n(e),a=i?-1:1,r=s.attr("data-swiper-parallax")||"0",o=s.attr("data-swiper-parallax-x"),l=s.attr("data-swiper-parallax-y"),d=s.attr("data-swiper-parallax-scale"),h=s.attr("data-swiper-parallax-opacity");if(o||l?(o=o||"0",l=l||"0"):this.isHorizontal()?(o=r,l="0"):(l=r,o="0"),o=o.indexOf("%")>=0?parseInt(o,10)*t*a+"%":o*t*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=h){var p=h-(h-1)*(1-Math.abs(t));s[0].style.opacity=p}if(null==d)s.transform("translate3d("+o+", "+l+", 0px)");else{var c=d-(d-1)*(1-Math.abs(t));s.transform("translate3d("+o+", "+l+", 0px) scale("+c+")")}},setTranslate:function(){var e=this,t=e.$el,i=e.slides,s=e.progress,a=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,s)})),i.each((function(t,i){var r=i.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(r+=Math.ceil(t/2)-s*(a.length-1)),r=Math.min(Math.max(r,-1),1),n(i).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,r)}))}))},setTransition:function(e){void 0===e&&(e=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(t,i){var s=n(i),a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}},he={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,a=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-t,2)+Math.pow(a-i,2))},onGestureStart:function(e){var t=this.params.zoom,i=this.zoom,s=i.gesture;if(i.fakeGestureTouched=!1,i.fakeGestureMoved=!1,!h.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;i.fakeGestureTouched=!0,s.scaleStart=he.getDistanceBetweenTouches(e)}s.$slideEl&&s.$slideEl.length||(s.$slideEl=n(e.target).closest("."+this.params.slideClass),0===s.$slideEl.length&&(s.$slideEl=this.slides.eq(this.activeIndex)),s.$imageEl=s.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),s.$imageWrapEl=s.$imageEl.parent("."+t.containerClass),s.maxRatio=s.$imageWrapEl.attr("data-swiper-zoom")||t.maxRatio,0!==s.$imageWrapEl.length)?(s.$imageEl&&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(!h.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;i.fakeGestureMoved=!0,s.scaleMove=he.getDistanceBetweenTouches(e)}s.$imageEl&&0!==s.$imageEl.length&&(i.scale=h.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,.5)),i.scale<t.minRatio&&(i.scale=t.minRatio+1-Math.pow(t.minRatio-i.scale+1,.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(!h.gestures){if(!i.fakeGestureTouched||!i.fakeGestureMoved)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!A.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,s=t.image;i.$imageEl&&0!==i.$imageEl.length&&(s.isTouched||(A.android&&e.cancelable&&e.preventDefault(),s.isTouched=!0,s.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY: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=d.getTranslate(i.$imageWrapEl[0],"x")||0,s.startY=d.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 r=s.width*t.scale,n=s.height*t.scale;if(!(r<i.slideWidth&&n<i.slideHeight)){if(s.minX=Math.min(i.slideWidth/2-r/2,0),s.maxX=-s.minX,s.minY=Math.min(i.slideHeight/2-n/2,0),s.maxY=-s.minY,s.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY: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.cancelable&&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,.8)),s.currentX>s.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentY<s.minY&&(s.currentY=s.minY+1-Math.pow(s.minY-s.currentY+1,.8)),s.currentY>s.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.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,r=300,n=s.x*a,o=i.currentX+n,l=s.y*r,d=i.currentY+l;0!==s.x&&(a=Math.abs((o-i.currentX)/s.x)),0!==s.y&&(r=Math.abs((d-i.currentY)/s.y));var h=Math.max(a,r);i.currentX=o,i.currentY=d;var p=i.width*e.scale,c=i.height*e.scale;i.minX=Math.min(t.slideWidth/2-p/2,0),i.maxX=-i.minX,i.minY=Math.min(t.slideHeight/2-c/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(h).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&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&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,r,n,o,l,d,h,p,c,u,v,f,m,g=this.zoom,b=this.params.zoom,w=g.gesture,y=g.image;(w.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?w.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):w.$slideEl=this.slides.eq(this.activeIndex),w.$imageEl=w.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),w.$imageWrapEl=w.$imageEl.parent("."+b.containerClass)),w.$imageEl&&0!==w.$imageEl.length)&&(w.$slideEl.addClass(""+b.zoomedSlideClass),void 0===y.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,i="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=y.touchesStart.x,i=y.touchesStart.y),g.scale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,g.currentScale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,e?(f=w.$slideEl[0].offsetWidth,m=w.$slideEl[0].offsetHeight,s=w.$slideEl.offset().left+f/2-t,a=w.$slideEl.offset().top+m/2-i,o=w.$imageEl[0].offsetWidth,l=w.$imageEl[0].offsetHeight,d=o*g.scale,h=l*g.scale,u=-(p=Math.min(f/2-d/2,0)),v=-(c=Math.min(m/2-h/2,0)),(r=s*g.scale)<p&&(r=p),r>u&&(r=u),(n=a*g.scale)<c&&(n=c),n>v&&(n=v)):(r=0,n=0),w.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),w.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+g.scale+")"))},out:function(){var e=this.zoom,t=this.params.zoom,i=e.gesture;i.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?i.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):i.$slideEl=this.slides.eq(this.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),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=this.zoom;if(!e.enabled){e.enabled=!0;var t=!("touchstart"!==this.touchEvents.start||!h.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!h.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;h.gestures?(this.$wrapperEl.on("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.on("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.on("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.on(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.on(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.on(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.on(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.on(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}},disable:function(){var e=this.zoom;if(e.enabled){this.zoom.enabled=!1;var t=!("touchstart"!==this.touchEvents.start||!h.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!h.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;h.gestures?(this.$wrapperEl.off("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.off("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.off("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.off(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.off(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.off(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.off(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.off(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}}},pe={loadInSlide:function(e,t){void 0===t&&(t=!0);var i=this,s=i.params.lazy;if(void 0!==e&&0!==i.slides.length){var a=i.virtual&&i.params.virtual.enabled?i.$wrapperEl.children("."+i.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):i.slides.eq(e),r=a.find("."+s.elementClass+":not(."+s.loadedClass+"):not(."+s.loadingClass+")");!a.hasClass(s.elementClass)||a.hasClass(s.loadedClass)||a.hasClass(s.loadingClass)||(r=r.add(a[0])),0!==r.length&&r.each((function(e,r){var o=n(r);o.addClass(s.loadingClass);var l=o.attr("data-background"),d=o.attr("data-src"),h=o.attr("data-srcset"),p=o.attr("data-sizes"),c=o.parent("picture");i.loadImage(o[0],d||l,h,p,!1,(function(){if(null!=i&&i&&(!i||i.params)&&!i.destroyed){if(l?(o.css("background-image",'url("'+l+'")'),o.removeAttr("data-background")):(h&&(o.attr("srcset",h),o.removeAttr("data-srcset")),p&&(o.attr("sizes",p),o.removeAttr("data-sizes")),c.length&&c.children("source").each((function(e,t){var i=n(t);i.attr("data-srcset")&&(i.attr("srcset",i.attr("data-srcset")),i.removeAttr("data-srcset"))})),d&&(o.attr("src",d),o.removeAttr("data-src"))),o.addClass(s.loadedClass).removeClass(s.loadingClass),a.find("."+s.preloaderClass).remove(),i.params.loop&&t){var e=a.attr("data-swiper-slide-index");if(a.hasClass(i.params.slideDuplicateClass)){var r=i.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+i.params.slideDuplicateClass+")");i.lazy.loadInSlide(r.index(),!1)}else{var u=i.$wrapperEl.children("."+i.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');i.lazy.loadInSlide(u.index(),!1)}}i.emit("lazyImageReady",a[0],o[0]),i.params.autoHeight&&i.updateAutoHeight()}})),i.emit("lazyImageLoad",a[0],o[0])}))}},load:function(){var e=this,t=e.$wrapperEl,i=e.params,s=e.slides,a=e.activeIndex,r=e.virtual&&i.virtual.enabled,o=i.lazy,l=i.slidesPerView;function d(e){if(r){if(t.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(s[e])return!0;return!1}function h(e){return r?n(e).attr("data-swiper-slide-index"):n(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+i.slideVisibleClass).each((function(t,i){var s=r?n(i).attr("data-swiper-slide-index"):n(i).index();e.lazy.loadInSlide(s)}));else if(l>1)for(var p=a;p<a+l;p+=1)d(p)&&e.lazy.loadInSlide(p);else e.lazy.loadInSlide(a);if(o.loadPrevNext)if(l>1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){for(var c=o.loadPrevNextAmount,u=l,v=Math.min(a+u+Math.max(c,u),s.length),f=Math.max(a-Math.max(u,c),0),m=a+l;m<v;m+=1)d(m)&&e.lazy.loadInSlide(m);for(var g=f;g<a;g+=1)d(g)&&e.lazy.loadInSlide(g)}else{var b=t.children("."+i.slideNextClass);b.length>0&&e.lazy.loadInSlide(h(b));var w=t.children("."+i.slidePrevClass);w.length>0&&e.lazy.loadInSlide(h(w))}}},ce={LinearSpline:function(e,t){var i,s,a,r,n,o=function(e,t){for(s=-1,i=e.length;i-s>1;)e[a=i+s>>1]<=t?s=a:i=a;return i};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=o(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){this.controller.spline||(this.controller.spline=this.params.loop?new ce.LinearSpline(this.slidesGrid,e.slidesGrid):new ce.LinearSpline(this.snapGrid,e.snapGrid))},setTranslate:function(e,t){var i,s,a=this,r=a.controller.control;function n(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(r))for(var o=0;o<r.length;o+=1)r[o]!==t&&r[o]instanceof j&&n(r[o]);else r instanceof j&&t!==r&&n(r)},setTransition:function(e,t){var i,s=this,a=s.controller.control;function r(t){t.setTransition(e,s),0!==e&&(t.transitionStart(),t.params.autoHeight&&d.nextTick((function(){t.updateAutoHeight()})),t.$wrapperEl.transitionEnd((function(){a&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())})))}if(Array.isArray(a))for(i=0;i<a.length;i+=1)a[i]!==t&&a[i]instanceof j&&r(a[i]);else a instanceof j&&t!==a&&r(a)}},ue={makeElFocusable:function(e){return e.attr("tabIndex","0"),e},makeElNotFocusable:function(e){return e.attr("tabIndex","-1"),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;if(13===e.keyCode){var i=n(e.target);this.navigation&&this.navigation.$nextEl&&i.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&&i.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&&i.is("."+this.params.pagination.bulletClass)&&i[0].click()}},notify:function(e){var t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation:function(){if(!this.params.loop&&this.navigation){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;i&&i.length>0&&(this.isBeginning?(this.a11y.disableEl(i),this.a11y.makeElNotFocusable(i)):(this.a11y.enableEl(i),this.a11y.makeElFocusable(i))),t&&t.length>0&&(this.isEnd?(this.a11y.disableEl(t),this.a11y.makeElNotFocusable(t)):(this.a11y.enableEl(t),this.a11y.makeElFocusable(t)))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(i,s){var a=n(s);e.a11y.makeElFocusable(a),e.a11y.addElRole(a,"button"),e.a11y.addElLabel(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.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&&this.a11y.liveRegion.length>0&&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)}},ve={init:function(){if(this.params.history){if(!a.history||!a.history.pushState)return this.params.history.enabled=!1,void(this.params.hashNavigation.enabled=!0);var e=this.history;e.initialized=!0,e.paths=ve.getPathValues(),(e.paths.key||e.paths.value)&&(e.scrollToSlide(0,e.paths.value,this.params.runCallbacksOnInit),this.params.history.replaceState||a.addEventListener("popstate",this.history.setHistoryPopState))}},destroy:function(){this.params.history.replaceState||a.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){this.history.paths=ve.getPathValues(),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues:function(){var e=a.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){if(this.history.initialized&&this.params.history.enabled){var i=this.slides.eq(t),s=ve.slugify(i.attr("data-history"));a.location.pathname.includes(e)||(s=e+"/"+s);var r=a.history.state;r&&r.value===s||(this.params.history.replaceState?a.history.replaceState({value:s},null,s):a.history.pushState({value:s},null,s))}},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 r=this.slides.eq(s);if(ve.slugify(r.attr("data-history"))===t&&!r.hasClass(this.params.slideDuplicateClass)){var n=r.index();this.slideTo(n,e,i)}}else this.slideTo(0,e,i)}},fe={onHashCange:function(){this.emit("hashChange");var e=i.location.hash.replace("#","");if(e!==this.slides.eq(this.activeIndex).attr("data-hash")){var t=this.$wrapperEl.children("."+this.params.slideClass+'[data-hash="'+e+'"]').index();if(void 0===t)return;this.slideTo(t)}},setHash:function(){if(this.hashNavigation.initialized&&this.params.hashNavigation.enabled)if(this.params.hashNavigation.replaceState&&a.history&&a.history.replaceState)a.history.replaceState(null,null,"#"+this.slides.eq(this.activeIndex).attr("data-hash")||""),this.emit("hashSet");else{var e=this.slides.eq(this.activeIndex),t=e.attr("data-hash")||e.attr("data-history");i.location.hash=t||"",this.emit("hashSet")}},init:function(){if(!(!this.params.hashNavigation.enabled||this.params.history&&this.params.history.enabled)){this.hashNavigation.initialized=!0;var e=i.location.hash.replace("#","");if(e)for(var t=0,s=this.slides.length;t<s;t+=1){var r=this.slides.eq(t);if((r.attr("data-hash")||r.attr("data-history"))===e&&!r.hasClass(this.params.slideDuplicateClass)){var o=r.index();this.slideTo(o,0,this.params.runCallbacksOnInit,!0)}}this.params.hashNavigation.watchState&&n(a).on("hashchange",this.hashNavigation.onHashCange)}},destroy:function(){this.params.hashNavigation.watchState&&n(a).off("hashchange",this.hashNavigation.onHashCange)}},me={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=d.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())))}},ge={setTranslate:function(){for(var e=this.slides,t=0;t<e.length;t+=1){var i=this.slides.eq(t),s=-i[0].swiperSlideOffset;this.params.virtualTranslate||(s-=this.translate);var a=0;this.isHorizontal()||(a=s,s=0);var r=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:r}).transform("translate3d("+s+"px, "+a+"px, 0px)")}},setTransition:function(e){var t=this,i=t.slides,s=t.$wrapperEl;if(i.transition(e),t.params.virtualTranslate&&0!==e){var a=!1;i.transitionEnd((function(){if(!a&&t&&!t.destroyed){a=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)s.trigger(e[i])}}))}}},be={setTranslate:function(){var e,t=this.$el,i=this.$wrapperEl,s=this.slides,a=this.width,r=this.height,o=this.rtlTranslate,l=this.size,d=this.params.cubeEffect,h=this.isHorizontal(),p=this.virtual&&this.params.virtual.enabled,c=0;d.shadow&&(h?(0===(e=i.find(".swiper-cube-shadow")).length&&(e=n('<div class="swiper-cube-shadow"></div>'),i.append(e)),e.css({height:a+"px"})):0===(e=t.find(".swiper-cube-shadow")).length&&(e=n('<div class="swiper-cube-shadow"></div>'),t.append(e)));for(var u=0;u<s.length;u+=1){var v=s.eq(u),f=u;p&&(f=parseInt(v.attr("data-swiper-slide-index"),10));var m=90*f,g=Math.floor(m/360);o&&(m=-m,g=Math.floor(-m/360));var b=Math.max(Math.min(v[0].progress,1),-1),w=0,y=0,x=0;f%4==0?(w=4*-g*l,x=0):(f-1)%4==0?(w=0,x=4*-g*l):(f-2)%4==0?(w=l+4*g*l,x=l):(f-3)%4==0&&(w=-l,x=3*l+4*l*g),o&&(w=-w),h||(y=w,w=0);var E="rotateX("+(h?0:-m)+"deg) rotateY("+(h?m:0)+"deg) translate3d("+w+"px, "+y+"px, "+x+"px)";if(b<=1&&b>-1&&(c=90*f+90*b,o&&(c=90*-f-90*b)),v.transform(E),d.slideShadows){var T=h?v.find(".swiper-slide-shadow-left"):v.find(".swiper-slide-shadow-top"),S=h?v.find(".swiper-slide-shadow-right"):v.find(".swiper-slide-shadow-bottom");0===T.length&&(T=n('<div class="swiper-slide-shadow-'+(h?"left":"top")+'"></div>'),v.append(T)),0===S.length&&(S=n('<div class="swiper-slide-shadow-'+(h?"right":"bottom")+'"></div>'),v.append(S)),T.length&&(T[0].style.opacity=Math.max(-b,0)),S.length&&(S[0].style.opacity=Math.max(b,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+l/2+"px","-moz-transform-origin":"50% 50% -"+l/2+"px","-ms-transform-origin":"50% 50% -"+l/2+"px","transform-origin":"50% 50% -"+l/2+"px"}),d.shadow)if(h)e.transform("translate3d(0px, "+(a/2+d.shadowOffset)+"px, "+-a/2+"px) rotateX(90deg) rotateZ(0deg) scale("+d.shadowScale+")");else{var C=Math.abs(c)-90*Math.floor(Math.abs(c)/90),M=1.5-(Math.sin(2*C*Math.PI/360)/2+Math.cos(2*C*Math.PI/360)/2),P=d.shadowScale,z=d.shadowScale/M,k=d.shadowOffset;e.transform("scale3d("+P+", 1, "+z+") translate3d(0px, "+(r/2+k)+"px, "+-r/2/z+"px) rotateX(-90deg)")}var $=_.isSafari||_.isUiWebView?-l/2:0;i.transform("translate3d(0px,0,"+$+"px) rotateX("+(this.isHorizontal()?0:c)+"deg) rotateY("+(this.isHorizontal()?-c: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)}},we={setTranslate:function(){for(var e=this.slides,t=this.rtlTranslate,i=0;i<e.length;i+=1){var s=e.eq(i),a=s[0].progress;this.params.flipEffect.limitRotation&&(a=Math.max(Math.min(s[0].progress,1),-1));var r=-180*a,o=0,l=-s[0].swiperSlideOffset,d=0;if(this.isHorizontal()?t&&(r=-r):(d=l,l=0,o=-r,r=0),s[0].style.zIndex=-Math.abs(Math.round(a))+e.length,this.params.flipEffect.slideShadows){var h=this.isHorizontal()?s.find(".swiper-slide-shadow-left"):s.find(".swiper-slide-shadow-top"),p=this.isHorizontal()?s.find(".swiper-slide-shadow-right"):s.find(".swiper-slide-shadow-bottom");0===h.length&&(h=n('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"left":"top")+'"></div>'),s.append(h)),0===p.length&&(p=n('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"right":"bottom")+'"></div>'),s.append(p)),h.length&&(h[0].style.opacity=Math.max(-a,0)),p.length&&(p[0].style.opacity=Math.max(a,0))}s.transform("translate3d("+l+"px, "+d+"px, 0px) rotateX("+o+"deg) rotateY("+r+"deg)")}},setTransition:function(e){var t=this,i=t.slides,s=t.activeIndex,a=t.$wrapperEl;if(i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;i.eq(s).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)a.trigger(e[i])}}))}}},ye={setTranslate:function(){for(var e=this.width,t=this.height,i=this.slides,s=this.$wrapperEl,a=this.slidesSizesGrid,r=this.params.coverflowEffect,o=this.isHorizontal(),l=this.translate,d=o?e/2-l:t/2-l,p=o?r.rotate:-r.rotate,c=r.depth,u=0,v=i.length;u<v;u+=1){var f=i.eq(u),m=a[u],g=(d-f[0].swiperSlideOffset-m/2)/m*r.modifier,b=o?p*g:0,w=o?0:p*g,y=-c*Math.abs(g),x=r.stretch;"string"==typeof x&&-1!==x.indexOf("%")&&(x=parseFloat(r.stretch)/100*m);var E=o?0:x*g,T=o?x*g:0;Math.abs(T)<.001&&(T=0),Math.abs(E)<.001&&(E=0),Math.abs(y)<.001&&(y=0),Math.abs(b)<.001&&(b=0),Math.abs(w)<.001&&(w=0);var S="translate3d("+T+"px,"+E+"px,"+y+"px)  rotateX("+w+"deg) rotateY("+b+"deg)";if(f.transform(S),f[0].style.zIndex=1-Math.abs(Math.round(g)),r.slideShadows){var C=o?f.find(".swiper-slide-shadow-left"):f.find(".swiper-slide-shadow-top"),M=o?f.find(".swiper-slide-shadow-right"):f.find(".swiper-slide-shadow-bottom");0===C.length&&(C=n('<div class="swiper-slide-shadow-'+(o?"left":"top")+'"></div>'),f.append(C)),0===M.length&&(M=n('<div class="swiper-slide-shadow-'+(o?"right":"bottom")+'"></div>'),f.append(M)),C.length&&(C[0].style.opacity=g>0?g:0),M.length&&(M[0].style.opacity=-g>0?-g:0)}}(h.pointerEvents||h.prefixedPointerEvents)&&(s[0].style.perspectiveOrigin=d+"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)}},xe={init:function(){var e=this.params.thumbs,t=this.constructor;e.swiper instanceof t?(this.thumbs.swiper=e.swiper,d.extend(this.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),d.extend(this.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):d.isObject(e.swiper)&&(this.thumbs.swiper=new t(d.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=this.thumbs.swiper;if(e){var t=e.clickedIndex,i=e.clickedSlide;if(!(i&&n(i).hasClass(this.params.thumbs.slideThumbActiveClass)||null==t)){var s;if(s=e.params.loop?parseInt(n(e.clickedSlide).attr("data-swiper-slide-index"),10):t,this.params.loop){var a=this.activeIndex;this.slides.eq(a).hasClass(this.params.slideDuplicateClass)&&(this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft,a=this.activeIndex);var r=this.slides.eq(a).prevAll('[data-swiper-slide-index="'+s+'"]').eq(0).index(),o=this.slides.eq(a).nextAll('[data-swiper-slide-index="'+s+'"]').eq(0).index();s=void 0===r?o:void 0===o?r:o-a<a-r?o:r}this.slideTo(s)}}},update:function(e){var t=this.thumbs.swiper;if(t){var i="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():t.params.slidesPerView,s=this.params.thumbs.autoScrollOffset,a=s&&!t.params.loop;if(this.realIndex!==t.realIndex||a){var r,n,o=t.activeIndex;if(t.params.loop){t.slides.eq(o).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,o=t.activeIndex);var l=t.slides.eq(o).prevAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index(),d=t.slides.eq(o).nextAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index();r=void 0===l?d:void 0===d?l:d-o==o-l?o:d-o<o-l?d:l,n=this.activeIndex>this.previousIndex?"next":"prev"}else n=(r=this.realIndex)>this.previousIndex?"next":"prev";a&&(r+="next"===n?s:-1*s),t.visibleSlidesIndexes&&t.visibleSlidesIndexes.indexOf(r)<0&&(t.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),t.slideTo(r,e?0:void 0))}var h=1,p=this.params.thumbs.slideThumbActiveClass;if(this.params.slidesPerView>1&&!this.params.centeredSlides&&(h=this.params.slidesPerView),this.params.thumbs.multipleActiveThumbs||(h=1),h=Math.floor(h),t.slides.removeClass(p),t.params.loop||t.params.virtual&&t.params.virtual.enabled)for(var c=0;c<h;c+=1)t.$wrapperEl.children('[data-swiper-slide-index="'+(this.realIndex+c)+'"]').addClass(p);else for(var u=0;u<h;u+=1)t.slides.eq(this.realIndex+u).addClass(p)}}},Ee=[K,U,Z,Q,ee,ie,ae,{name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarged:"container"}},create:function(){d.extend(this,{mousewheel:{enabled:!1,enable:re.enable.bind(this),disable:re.disable.bind(this),handle:re.handle.bind(this),handleMouseEnter:re.handleMouseEnter.bind(this),handleMouseLeave:re.handleMouseLeave.bind(this),animateSlider:re.animateSlider.bind(this),releaseScroll:re.releaseScroll.bind(this),lastScrollTime:d.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(){d.extend(this,{navigation:{init:ne.init.bind(this),update:ne.update.bind(this),destroy:ne.destroy.bind(this),onNextClick:ne.onNextClick.bind(this),onPrevClick:ne.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,a=i.$prevEl;!this.params.navigation.hideOnClick||n(e.target).is(a)||n(e.target).is(s)||(s?t=s.hasClass(this.params.navigation.hiddenClass):a&&(t=a.hasClass(this.params.navigation.hiddenClass)),!0===t?this.emit("navigationShow",this):this.emit("navigationHide",this),s&&s.toggleClass(this.params.navigation.hiddenClass),a&&a.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(){d.extend(this,{pagination:{init:oe.init.bind(this),render:oe.render.bind(this),update:oe.update.bind(this),destroy:oe.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&&this.pagination.$el.length>0&&!n(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(){d.extend(this,{scrollbar:{init:le.init.bind(this),destroy:le.destroy.bind(this),updateSize:le.updateSize.bind(this),setTranslate:le.setTranslate.bind(this),setTransition:le.setTransition.bind(this),enableDraggable:le.enableDraggable.bind(this),disableDraggable:le.disableDraggable.bind(this),setDragPosition:le.setDragPosition.bind(this),getPointerPosition:le.getPointerPosition.bind(this),onDragStart:le.onDragStart.bind(this),onDragMove:le.onDragMove.bind(this),onDragEnd:le.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(){d.extend(this,{parallax:{setTransform:de.setTransform.bind(this),setTranslate:de.setTranslate.bind(this),setTransition:de.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 e=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}};"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach((function(i){t[i]=he[i].bind(e)})),d.extend(e,{zoom:t});var i=1;Object.defineProperty(e.zoom,"scale",{get:function(){return i},set:function(t){if(i!==t){var s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,a=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,a)}i=t}})},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(){d.extend(this,{lazy:{initialImageLoaded:!1,load:pe.load.bind(this),loadInSlide:pe.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(){d.extend(this,{controller:{control:this.params.controller.control,getInterpolateFunction:ce.getInterpolateFunction.bind(this),setTranslate:ce.setTranslate.bind(this),setTransition:ce.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 e=this;d.extend(e,{a11y:{liveRegion:n('<span class="'+e.params.a11y.notificationClass+'" aria-live="assertive" aria-atomic="true"></span>')}}),Object.keys(ue).forEach((function(t){e.a11y[t]=ue[t].bind(e)}))},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(){d.extend(this,{history:{init:ve.init.bind(this),setHistory:ve.setHistory.bind(this),setHistoryPopState:ve.setHistoryPopState.bind(this),scrollToSlide:ve.scrollToSlide.bind(this),destroy:ve.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(){d.extend(this,{hashNavigation:{initialized:!1,init:fe.init.bind(this),destroy:fe.destroy.bind(this),setHash:fe.setHash.bind(this),onHashCange:fe.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 e=this;d.extend(e,{autoplay:{running:!1,paused:!1,run:me.run.bind(e),start:me.start.bind(e),stop:me.stop.bind(e),pause:me.pause.bind(e),onVisibilityChange:function(){"hidden"===document.visibilityState&&e.autoplay.running&&e.autoplay.pause(),"visible"===document.visibilityState&&e.autoplay.paused&&(e.autoplay.run(),e.autoplay.paused=!1)},onTransitionEnd:function(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===this&&(e.$wrapperEl[0].removeEventListener("transitionend",e.autoplay.onTransitionEnd),e.$wrapperEl[0].removeEventListener("webkitTransitionEnd",e.autoplay.onTransitionEnd),e.autoplay.paused=!1,e.autoplay.running?e.autoplay.run():e.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(){d.extend(this,{fadeEffect:{setTranslate:ge.setTranslate.bind(this),setTransition:ge.setTransition.bind(this)}})},on:{beforeInit:function(){if("fade"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"fade");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};d.extend(this.params,e),d.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:.94}},create:function(){d.extend(this,{cubeEffect:{setTranslate:be.setTranslate.bind(this),setTransition:be.setTransition.bind(this)}})},on:{beforeInit:function(){if("cube"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"cube"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};d.extend(this.params,e),d.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(){d.extend(this,{flipEffect:{setTranslate:we.setTranslate.bind(this),setTransition:we.setTransition.bind(this)}})},on:{beforeInit:function(){if("flip"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"flip"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};d.extend(this.params,e),d.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(){d.extend(this,{coverflowEffect:{setTranslate:ye.setTranslate.bind(this),setTransition:ye.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:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){d.extend(this,{thumbs:{swiper:null,init:xe.init.bind(this),update:xe.update.bind(this),onThumbClick:xe.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===j.use&&(j.use=j.Class.use,j.installModule=j.Class.installModule),j.use(Ee),j}));
14
-//# sourceMappingURL=swiper.min.js.map
15 0
\ No newline at end of file
16 1
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-{"version":3,"sources":["0"],"names":["global","factory","exports","module","define","amd","self","Swiper","this","isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments$1","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","args","len","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","removeChild","toAdd","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","o","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","defineProperty","get","gestures","SwiperClass","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","use","installModule","name","proto","static","install","m","concat","defineProperties","update","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesSize$1","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","swiper","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transition$1","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ios","androidChrome","desktop","cordova","phonegap","toLowerCase","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","increment$1","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","ref","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent$1","sign","ignoreWheelEvents","sensitivity","timeout","recentWheelEvents$1","shift","prevEvent$1","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","c","controller","spline","setTranslate$1","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"swiper.min.js"}
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1,24 +0,0 @@
1
-@plugin './plugin.js';
2
-.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) {
3
-  @length: length( @colors ) ;
4
-  .looper( 1 ) ;
5
-  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
6
-    @navPair: extract( @colors, @index );
7
-    @navColorName: extract( @navPair, 1 ) ;
8
-    @navColorValue: extract( @navPair, 2 ) ;
9
-    @ruleset();
10
-    .looper( @index + 1 ) ;
11
-  }
12
-}
13
-
14
-.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) {
15
-  @length: length( @colors ) ;
16
-  .looper( 1 ) ;
17
-  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
18
-    @paginationPair: extract( @colors, @index );
19
-    @paginationColorName: extract( @paginationPair, 1 ) ;
20
-    @paginationColorValue: extract( @paginationPair, 2 ) ;
21
-    @ruleset();
22
-    .looper( @index + 1 ) ;
23
-  }
24
-}
25 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-/// Urlencode the SVG string
2
-/// @param {String} $svg - SVG image to encode
3
-/// @return {String} - Encoded SVG data uri
4
-@function swiper-svg-uri($svg) {
5
-  $encoded: '';
6
-  $chunkSize: 2048;
7
-  $index: 0;
8
-  $loops: ceil(str-length($svg) / $chunkSize);
9
-
10
-  $map: (
11
-   "%": "%25",
12
-   "<": "%3C",
13
-   ">": "%3E",
14
-   " ": "%20",
15
-   "!": "%21",
16
-   "*": "%2A",
17
-   '"': "%22",
18
-   ";": "%3B",
19
-   ":": "%3A",
20
-   "@": "%40",
21
-   "&": "%26",
22
-   "=": "%3D",
23
-   "+": "%2B",
24
-   "$": "%24",
25
-   ",": "%2C",
26
-   "/": "%2F",
27
-   "?": "%3F",
28
-   "#": "%23",
29
-   "[": "%5B",
30
-   "]": "%5D"
31
-  );
32
-
33
-  @for $i from 1 through $loops {
34
-    $chunk: str-slice($svg, $index, $index + $chunkSize - 1);
35
-    @each $search, $replace in $map {
36
-      $chunk: swiper-str-replace($chunk, $search, $replace);
37
-    }
38
-    $encoded: #{$encoded}#{$chunk};
39
-    $index: $index + $chunkSize;
40
-  }
41
-
42
-  @return url("data:image/svg+xml;charset=utf-8,#{$encoded}");
43
-}
44
-
45
-/// Replace `$search` with `$replace` in `$string`
46
-/// @author Hugo Giraudel
47
-/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d
48
-/// @param {String} $string - Initial string
49
-/// @param {String} $search - Substring to replace
50
-/// @param {String} $replace ('') - New value
51
-/// @return {String} - Updated string
52
-@function swiper-str-replace($string, $search, $replace: '') {
53
-  $index: str-index($string, $search);
54
-
55
-  @if $index {
56
-    @return str-slice($string, 1, $index - 1) + $replace + swiper-str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
57
-  }
58
-
59
-  @return $string;
60
-}
61 0
deleted file mode 100644
... ...
@@ -1,212 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const a11y = {
5
-  makeElFocusable($el) {
6
-    $el.attr('tabIndex', '0');
7
-    return $el;
8
-  },
9
-  makeElNotFocusable($el) {
10
-    $el.attr('tabIndex', '-1');
11
-    return $el;
12
-  },
13
-  addElRole($el, role) {
14
-    $el.attr('role', role);
15
-    return $el;
16
-  },
17
-  addElLabel($el, label) {
18
-    $el.attr('aria-label', label);
19
-    return $el;
20
-  },
21
-  disableEl($el) {
22
-    $el.attr('aria-disabled', true);
23
-    return $el;
24
-  },
25
-  enableEl($el) {
26
-    $el.attr('aria-disabled', false);
27
-    return $el;
28
-  },
29
-  onEnterKey(e) {
30
-    const swiper = this;
31
-    const params = swiper.params.a11y;
32
-    if (e.keyCode !== 13) return;
33
-    const $targetEl = $(e.target);
34
-    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
35
-      if (!(swiper.isEnd && !swiper.params.loop)) {
36
-        swiper.slideNext();
37
-      }
38
-      if (swiper.isEnd) {
39
-        swiper.a11y.notify(params.lastSlideMessage);
40
-      } else {
41
-        swiper.a11y.notify(params.nextSlideMessage);
42
-      }
43
-    }
44
-    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
45
-      if (!(swiper.isBeginning && !swiper.params.loop)) {
46
-        swiper.slidePrev();
47
-      }
48
-      if (swiper.isBeginning) {
49
-        swiper.a11y.notify(params.firstSlideMessage);
50
-      } else {
51
-        swiper.a11y.notify(params.prevSlideMessage);
52
-      }
53
-    }
54
-    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {
55
-      $targetEl[0].click();
56
-    }
57
-  },
58
-  notify(message) {
59
-    const swiper = this;
60
-    const notification = swiper.a11y.liveRegion;
61
-    if (notification.length === 0) return;
62
-    notification.html('');
63
-    notification.html(message);
64
-  },
65
-  updateNavigation() {
66
-    const swiper = this;
67
-
68
-    if (swiper.params.loop || !swiper.navigation) return;
69
-    const { $nextEl, $prevEl } = swiper.navigation;
70
-
71
-    if ($prevEl && $prevEl.length > 0) {
72
-      if (swiper.isBeginning) {
73
-        swiper.a11y.disableEl($prevEl);
74
-        swiper.a11y.makeElNotFocusable($prevEl);
75
-      } else {
76
-        swiper.a11y.enableEl($prevEl);
77
-        swiper.a11y.makeElFocusable($prevEl);
78
-      }
79
-    }
80
-    if ($nextEl && $nextEl.length > 0) {
81
-      if (swiper.isEnd) {
82
-        swiper.a11y.disableEl($nextEl);
83
-        swiper.a11y.makeElNotFocusable($nextEl);
84
-      } else {
85
-        swiper.a11y.enableEl($nextEl);
86
-        swiper.a11y.makeElFocusable($nextEl);
87
-      }
88
-    }
89
-  },
90
-  updatePagination() {
91
-    const swiper = this;
92
-    const params = swiper.params.a11y;
93
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
94
-      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {
95
-        const $bulletEl = $(bulletEl);
96
-        swiper.a11y.makeElFocusable($bulletEl);
97
-        swiper.a11y.addElRole($bulletEl, 'button');
98
-        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
99
-      });
100
-    }
101
-  },
102
-  init() {
103
-    const swiper = this;
104
-
105
-    swiper.$el.append(swiper.a11y.liveRegion);
106
-
107
-    // Navigation
108
-    const params = swiper.params.a11y;
109
-    let $nextEl;
110
-    let $prevEl;
111
-    if (swiper.navigation && swiper.navigation.$nextEl) {
112
-      $nextEl = swiper.navigation.$nextEl;
113
-    }
114
-    if (swiper.navigation && swiper.navigation.$prevEl) {
115
-      $prevEl = swiper.navigation.$prevEl;
116
-    }
117
-    if ($nextEl) {
118
-      swiper.a11y.makeElFocusable($nextEl);
119
-      swiper.a11y.addElRole($nextEl, 'button');
120
-      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
121
-      $nextEl.on('keydown', swiper.a11y.onEnterKey);
122
-    }
123
-    if ($prevEl) {
124
-      swiper.a11y.makeElFocusable($prevEl);
125
-      swiper.a11y.addElRole($prevEl, 'button');
126
-      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
127
-      $prevEl.on('keydown', swiper.a11y.onEnterKey);
128
-    }
129
-
130
-    // Pagination
131
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
132
-      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
133
-    }
134
-  },
135
-  destroy() {
136
-    const swiper = this;
137
-    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
138
-
139
-    let $nextEl;
140
-    let $prevEl;
141
-    if (swiper.navigation && swiper.navigation.$nextEl) {
142
-      $nextEl = swiper.navigation.$nextEl;
143
-    }
144
-    if (swiper.navigation && swiper.navigation.$prevEl) {
145
-      $prevEl = swiper.navigation.$prevEl;
146
-    }
147
-    if ($nextEl) {
148
-      $nextEl.off('keydown', swiper.a11y.onEnterKey);
149
-    }
150
-    if ($prevEl) {
151
-      $prevEl.off('keydown', swiper.a11y.onEnterKey);
152
-    }
153
-
154
-    // Pagination
155
-    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
156
-      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
157
-    }
158
-  },
159
-};
160
-export default {
161
-  name: 'a11y',
162
-  params: {
163
-    a11y: {
164
-      enabled: true,
165
-      notificationClass: 'swiper-notification',
166
-      prevSlideMessage: 'Previous slide',
167
-      nextSlideMessage: 'Next slide',
168
-      firstSlideMessage: 'This is the first slide',
169
-      lastSlideMessage: 'This is the last slide',
170
-      paginationBulletMessage: 'Go to slide {{index}}',
171
-    },
172
-  },
173
-  create() {
174
-    const swiper = this;
175
-    Utils.extend(swiper, {
176
-      a11y: {
177
-        liveRegion: $(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`),
178
-      },
179
-    });
180
-    Object.keys(a11y).forEach((methodName) => {
181
-      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
182
-    });
183
-  },
184
-  on: {
185
-    init() {
186
-      const swiper = this;
187
-      if (!swiper.params.a11y.enabled) return;
188
-      swiper.a11y.init();
189
-      swiper.a11y.updateNavigation();
190
-    },
191
-    toEdge() {
192
-      const swiper = this;
193
-      if (!swiper.params.a11y.enabled) return;
194
-      swiper.a11y.updateNavigation();
195
-    },
196
-    fromEdge() {
197
-      const swiper = this;
198
-      if (!swiper.params.a11y.enabled) return;
199
-      swiper.a11y.updateNavigation();
200
-    },
201
-    paginationUpdate() {
202
-      const swiper = this;
203
-      if (!swiper.params.a11y.enabled) return;
204
-      swiper.a11y.updatePagination();
205
-    },
206
-    destroy() {
207
-      const swiper = this;
208
-      if (!swiper.params.a11y.enabled) return;
209
-      swiper.a11y.destroy();
210
-    },
211
-  },
212
-};
213 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-/* a11y */
2
-.swiper-container .swiper-notification {
3
-  position: absolute;
4
-  left: 0;
5
-  top: 0;
6
-  pointer-events: none;
7
-  opacity: 0;
8
-  z-index: -1000;
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-/* a11y */
2
-.swiper-container .swiper-notification {
3
-  position: absolute;
4
-  left: 0;
5
-  top: 0;
6
-  pointer-events: none;
7
-  opacity: 0;
8
-  z-index: -1000;
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,170 +0,0 @@
1
-/* eslint no-underscore-dangle: "off" */
2
-import Utils from '../../utils/utils';
3
-
4
-const Autoplay = {
5
-  run() {
6
-    const swiper = this;
7
-    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
8
-    let delay = swiper.params.autoplay.delay;
9
-    if ($activeSlideEl.attr('data-swiper-autoplay')) {
10
-      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
11
-    }
12
-    clearTimeout(swiper.autoplay.timeout);
13
-    swiper.autoplay.timeout = Utils.nextTick(() => {
14
-      if (swiper.params.autoplay.reverseDirection) {
15
-        if (swiper.params.loop) {
16
-          swiper.loopFix();
17
-          swiper.slidePrev(swiper.params.speed, true, true);
18
-          swiper.emit('autoplay');
19
-        } else if (!swiper.isBeginning) {
20
-          swiper.slidePrev(swiper.params.speed, true, true);
21
-          swiper.emit('autoplay');
22
-        } else if (!swiper.params.autoplay.stopOnLastSlide) {
23
-          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
24
-          swiper.emit('autoplay');
25
-        } else {
26
-          swiper.autoplay.stop();
27
-        }
28
-      } else if (swiper.params.loop) {
29
-        swiper.loopFix();
30
-        swiper.slideNext(swiper.params.speed, true, true);
31
-        swiper.emit('autoplay');
32
-      } else if (!swiper.isEnd) {
33
-        swiper.slideNext(swiper.params.speed, true, true);
34
-        swiper.emit('autoplay');
35
-      } else if (!swiper.params.autoplay.stopOnLastSlide) {
36
-        swiper.slideTo(0, swiper.params.speed, true, true);
37
-        swiper.emit('autoplay');
38
-      } else {
39
-        swiper.autoplay.stop();
40
-      }
41
-      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
42
-    }, delay);
43
-  },
44
-  start() {
45
-    const swiper = this;
46
-    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
47
-    if (swiper.autoplay.running) return false;
48
-    swiper.autoplay.running = true;
49
-    swiper.emit('autoplayStart');
50
-    swiper.autoplay.run();
51
-    return true;
52
-  },
53
-  stop() {
54
-    const swiper = this;
55
-    if (!swiper.autoplay.running) return false;
56
-    if (typeof swiper.autoplay.timeout === 'undefined') return false;
57
-
58
-    if (swiper.autoplay.timeout) {
59
-      clearTimeout(swiper.autoplay.timeout);
60
-      swiper.autoplay.timeout = undefined;
61
-    }
62
-    swiper.autoplay.running = false;
63
-    swiper.emit('autoplayStop');
64
-    return true;
65
-  },
66
-  pause(speed) {
67
-    const swiper = this;
68
-    if (!swiper.autoplay.running) return;
69
-    if (swiper.autoplay.paused) return;
70
-    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
71
-    swiper.autoplay.paused = true;
72
-    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
73
-      swiper.autoplay.paused = false;
74
-      swiper.autoplay.run();
75
-    } else {
76
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
77
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
78
-    }
79
-  },
80
-};
81
-
82
-export default {
83
-  name: 'autoplay',
84
-  params: {
85
-    autoplay: {
86
-      enabled: false,
87
-      delay: 3000,
88
-      waitForTransition: true,
89
-      disableOnInteraction: true,
90
-      stopOnLastSlide: false,
91
-      reverseDirection: false,
92
-    },
93
-  },
94
-  create() {
95
-    const swiper = this;
96
-    Utils.extend(swiper, {
97
-      autoplay: {
98
-        running: false,
99
-        paused: false,
100
-        run: Autoplay.run.bind(swiper),
101
-        start: Autoplay.start.bind(swiper),
102
-        stop: Autoplay.stop.bind(swiper),
103
-        pause: Autoplay.pause.bind(swiper),
104
-        onVisibilityChange() {
105
-          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
106
-            swiper.autoplay.pause();
107
-          }
108
-          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
109
-            swiper.autoplay.run();
110
-            swiper.autoplay.paused = false;
111
-          }
112
-        },
113
-        onTransitionEnd(e) {
114
-          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
115
-          if (e.target !== this) return;
116
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
117
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
118
-          swiper.autoplay.paused = false;
119
-          if (!swiper.autoplay.running) {
120
-            swiper.autoplay.stop();
121
-          } else {
122
-            swiper.autoplay.run();
123
-          }
124
-        },
125
-      },
126
-    });
127
-  },
128
-  on: {
129
-    init() {
130
-      const swiper = this;
131
-      if (swiper.params.autoplay.enabled) {
132
-        swiper.autoplay.start();
133
-        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
134
-      }
135
-    },
136
-    beforeTransitionStart(speed, internal) {
137
-      const swiper = this;
138
-      if (swiper.autoplay.running) {
139
-        if (internal || !swiper.params.autoplay.disableOnInteraction) {
140
-          swiper.autoplay.pause(speed);
141
-        } else {
142
-          swiper.autoplay.stop();
143
-        }
144
-      }
145
-    },
146
-    sliderFirstMove() {
147
-      const swiper = this;
148
-      if (swiper.autoplay.running) {
149
-        if (swiper.params.autoplay.disableOnInteraction) {
150
-          swiper.autoplay.stop();
151
-        } else {
152
-          swiper.autoplay.pause();
153
-        }
154
-      }
155
-    },
156
-    touchEnd() {
157
-      const swiper = this;
158
-      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
159
-        swiper.autoplay.run();
160
-      }
161
-    },
162
-    destroy() {
163
-      const swiper = this;
164
-      if (swiper.autoplay.running) {
165
-        swiper.autoplay.stop();
166
-      }
167
-      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
168
-    },
169
-  },
170
-};
171 0
deleted file mode 100644
... ...
@@ -1,186 +0,0 @@
1
-/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
2
-import Swiper from '../core/core-class';
3
-import Utils from '../../utils/utils';
4
-
5
-const Controller = {
6
-  LinearSpline: function LinearSpline(x, y) {
7
-    const binarySearch = (function search() {
8
-      let maxIndex;
9
-      let minIndex;
10
-      let guess;
11
-      return (array, val) => {
12
-        minIndex = -1;
13
-        maxIndex = array.length;
14
-        while (maxIndex - minIndex > 1) {
15
-          guess = maxIndex + minIndex >> 1;
16
-          if (array[guess] <= val) {
17
-            minIndex = guess;
18
-          } else {
19
-            maxIndex = guess;
20
-          }
21
-        }
22
-        return maxIndex;
23
-      };
24
-    }());
25
-    this.x = x;
26
-    this.y = y;
27
-    this.lastIndex = x.length - 1;
28
-    // Given an x value (x2), return the expected y2 value:
29
-    // (x1,y1) is the known point before given value,
30
-    // (x3,y3) is the known point after given value.
31
-    let i1;
32
-    let i3;
33
-
34
-    this.interpolate = function interpolate(x2) {
35
-      if (!x2) return 0;
36
-
37
-      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
38
-      i3 = binarySearch(this.x, x2);
39
-      i1 = i3 - 1;
40
-
41
-      // We have our indexes i1 & i3, so we can calculate already:
42
-      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
43
-      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
44
-    };
45
-    return this;
46
-  },
47
-  // xxx: for now i will just save one spline function to to
48
-  getInterpolateFunction(c) {
49
-    const swiper = this;
50
-    if (!swiper.controller.spline) {
51
-      swiper.controller.spline = swiper.params.loop
52
-        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
53
-        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
54
-    }
55
-  },
56
-  setTranslate(setTranslate, byController) {
57
-    const swiper = this;
58
-    const controlled = swiper.controller.control;
59
-    let multiplier;
60
-    let controlledTranslate;
61
-    function setControlledTranslate(c) {
62
-      // this will create an Interpolate function based on the snapGrids
63
-      // x is the Grid of the scrolled scroller and y will be the controlled scroller
64
-      // it makes sense to create this only once and recall it for the interpolation
65
-      // the function does a lot of value caching for performance
66
-      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
67
-      if (swiper.params.controller.by === 'slide') {
68
-        swiper.controller.getInterpolateFunction(c);
69
-        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
70
-        // but it did not work out
71
-        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
72
-      }
73
-
74
-      if (!controlledTranslate || swiper.params.controller.by === 'container') {
75
-        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
76
-        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
77
-      }
78
-
79
-      if (swiper.params.controller.inverse) {
80
-        controlledTranslate = c.maxTranslate() - controlledTranslate;
81
-      }
82
-      c.updateProgress(controlledTranslate);
83
-      c.setTranslate(controlledTranslate, swiper);
84
-      c.updateActiveIndex();
85
-      c.updateSlidesClasses();
86
-    }
87
-    if (Array.isArray(controlled)) {
88
-      for (let i = 0; i < controlled.length; i += 1) {
89
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
90
-          setControlledTranslate(controlled[i]);
91
-        }
92
-      }
93
-    } else if (controlled instanceof Swiper && byController !== controlled) {
94
-      setControlledTranslate(controlled);
95
-    }
96
-  },
97
-  setTransition(duration, byController) {
98
-    const swiper = this;
99
-    const controlled = swiper.controller.control;
100
-    let i;
101
-    function setControlledTransition(c) {
102
-      c.setTransition(duration, swiper);
103
-      if (duration !== 0) {
104
-        c.transitionStart();
105
-        if (c.params.autoHeight) {
106
-          Utils.nextTick(() => {
107
-            c.updateAutoHeight();
108
-          });
109
-        }
110
-        c.$wrapperEl.transitionEnd(() => {
111
-          if (!controlled) return;
112
-          if (c.params.loop && swiper.params.controller.by === 'slide') {
113
-            c.loopFix();
114
-          }
115
-          c.transitionEnd();
116
-        });
117
-      }
118
-    }
119
-    if (Array.isArray(controlled)) {
120
-      for (i = 0; i < controlled.length; i += 1) {
121
-        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
122
-          setControlledTransition(controlled[i]);
123
-        }
124
-      }
125
-    } else if (controlled instanceof Swiper && byController !== controlled) {
126
-      setControlledTransition(controlled);
127
-    }
128
-  },
129
-};
130
-export default {
131
-  name: 'controller',
132
-  params: {
133
-    controller: {
134
-      control: undefined,
135
-      inverse: false,
136
-      by: 'slide', // or 'container'
137
-    },
138
-  },
139
-  create() {
140
-    const swiper = this;
141
-    Utils.extend(swiper, {
142
-      controller: {
143
-        control: swiper.params.controller.control,
144
-        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
145
-        setTranslate: Controller.setTranslate.bind(swiper),
146
-        setTransition: Controller.setTransition.bind(swiper),
147
-      },
148
-    });
149
-  },
150
-  on: {
151
-    update() {
152
-      const swiper = this;
153
-      if (!swiper.controller.control) return;
154
-      if (swiper.controller.spline) {
155
-        swiper.controller.spline = undefined;
156
-        delete swiper.controller.spline;
157
-      }
158
-    },
159
-    resize() {
160
-      const swiper = this;
161
-      if (!swiper.controller.control) return;
162
-      if (swiper.controller.spline) {
163
-        swiper.controller.spline = undefined;
164
-        delete swiper.controller.spline;
165
-      }
166
-    },
167
-    observerUpdate() {
168
-      const swiper = this;
169
-      if (!swiper.controller.control) return;
170
-      if (swiper.controller.spline) {
171
-        swiper.controller.spline = undefined;
172
-        delete swiper.controller.spline;
173
-      }
174
-    },
175
-    setTranslate(translate, byController) {
176
-      const swiper = this;
177
-      if (!swiper.controller.control) return;
178
-      swiper.controller.setTranslate(translate, byController);
179
-    },
180
-    setTransition(duration, byController) {
181
-      const swiper = this;
182
-      if (!swiper.controller.control) return;
183
-      swiper.controller.setTransition(duration, byController);
184
-    },
185
-  },
186
-};
187 0
deleted file mode 100644
188 1
deleted file mode 100644
189 2
deleted file mode 100644
... ...
@@ -1,25 +0,0 @@
1
-import { window } from 'ssr-window';
2
-
3
-export default function (breakpoints) {
4
-  // Get breakpoint for window width
5
-  if (!breakpoints) return undefined;
6
-  let breakpoint = false;
7
-
8
-  const points = Object.keys(breakpoints).map((point) => {
9
-    if (typeof point === 'string' && point.indexOf('@') === 0) {
10
-      const minRatio = parseFloat(point.substr(1));
11
-      const value = window.innerHeight * minRatio;
12
-      return { value, point };
13
-    }
14
-    return { value: point, point };
15
-  });
16
-
17
-  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
18
-  for (let i = 0; i < points.length; i += 1) {
19
-    const { point, value } = points[i];
20
-    if (value <= window.innerWidth) {
21
-      breakpoint = point;
22
-    }
23
-  }
24
-  return breakpoint || 'max';
25
-}
26 0
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-import setBreakpoint from './setBreakpoint';
2
-import getBreakpoint from './getBreakpoint';
3
-
4
-export default { setBreakpoint, getBreakpoint };
5 0
deleted file mode 100644
... ...
@@ -1,68 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function () {
4
-  const swiper = this;
5
-  const {
6
-    activeIndex, initialized, loopedSlides = 0, params, $el,
7
-  } = swiper;
8
-  const breakpoints = params.breakpoints;
9
-  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;
10
-
11
-  // Get breakpoint for window width and update parameters
12
-  const breakpoint = swiper.getBreakpoint(breakpoints);
13
-
14
-  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
15
-    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
16
-    if (breakpointOnlyParams) {
17
-      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {
18
-        const paramValue = breakpointOnlyParams[param];
19
-        if (typeof paramValue === 'undefined') return;
20
-        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
21
-          breakpointOnlyParams[param] = 'auto';
22
-        } else if (param === 'slidesPerView') {
23
-          breakpointOnlyParams[param] = parseFloat(paramValue);
24
-        } else {
25
-          breakpointOnlyParams[param] = parseInt(paramValue, 10);
26
-        }
27
-      });
28
-    }
29
-
30
-    const breakpointParams = breakpointOnlyParams || swiper.originalParams;
31
-    const wasMultiRow = params.slidesPerColumn > 1;
32
-    const isMultiRow = breakpointParams.slidesPerColumn > 1;
33
-    if (wasMultiRow && !isMultiRow) {
34
-      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);
35
-    } else if (!wasMultiRow && isMultiRow) {
36
-      $el.addClass(`${params.containerModifierClass}multirow`);
37
-      if (breakpointParams.slidesPerColumnFill === 'column') {
38
-        $el.addClass(`${params.containerModifierClass}multirow-column`);
39
-      }
40
-    }
41
-
42
-    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
43
-    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
44
-
45
-    if (directionChanged && initialized) {
46
-      swiper.changeDirection();
47
-    }
48
-
49
-    Utils.extend(swiper.params, breakpointParams);
50
-
51
-    Utils.extend(swiper, {
52
-      allowTouchMove: swiper.params.allowTouchMove,
53
-      allowSlideNext: swiper.params.allowSlideNext,
54
-      allowSlidePrev: swiper.params.allowSlidePrev,
55
-    });
56
-
57
-    swiper.currentBreakpoint = breakpoint;
58
-
59
-    if (needsReLoop && initialized) {
60
-      swiper.loopDestroy();
61
-      swiper.loopCreate();
62
-      swiper.updateSlides();
63
-      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
64
-    }
65
-
66
-    swiper.emit('breakpoint', breakpointParams);
67
-  }
68
-}
69 0
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-
2
-function checkOverflow() {
3
-  const swiper = this;
4
-  const params = swiper.params;
5
-  const wasLocked = swiper.isLocked;
6
-  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
7
-
8
-  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
9
-    swiper.isLocked = lastSlidePosition <= swiper.size;
10
-  } else {
11
-    swiper.isLocked = swiper.snapGrid.length === 1;
12
-  }
13
-
14
-  swiper.allowSlideNext = !swiper.isLocked;
15
-  swiper.allowSlidePrev = !swiper.isLocked;
16
-
17
-  // events
18
-  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
19
-
20
-  if (wasLocked && wasLocked !== swiper.isLocked) {
21
-    swiper.isEnd = false;
22
-    swiper.navigation.update();
23
-  }
24
-}
25
-
26
-export default { checkOverflow };
27 0
deleted file mode 100644
... ...
@@ -1,44 +0,0 @@
1
-import Device from '../../../utils/device';
2
-
3
-export default function () {
4
-  const swiper = this;
5
-  const {
6
-    classNames, params, rtl, $el,
7
-  } = swiper;
8
-  const suffixes = [];
9
-
10
-  suffixes.push('initialized');
11
-  suffixes.push(params.direction);
12
-
13
-  if (params.freeMode) {
14
-    suffixes.push('free-mode');
15
-  }
16
-  if (params.autoHeight) {
17
-    suffixes.push('autoheight');
18
-  }
19
-  if (rtl) {
20
-    suffixes.push('rtl');
21
-  }
22
-  if (params.slidesPerColumn > 1) {
23
-    suffixes.push('multirow');
24
-    if (params.slidesPerColumnFill === 'column') {
25
-      suffixes.push('multirow-column');
26
-    }
27
-  }
28
-  if (Device.android) {
29
-    suffixes.push('android');
30
-  }
31
-  if (Device.ios) {
32
-    suffixes.push('ios');
33
-  }
34
-
35
-  if (params.cssMode) {
36
-    suffixes.push('css-mode');
37
-  }
38
-
39
-  suffixes.forEach((suffix) => {
40
-    classNames.push(params.containerModifierClass + suffix);
41
-  });
42
-
43
-  $el.addClass(classNames.join(' '));
44
-}
45 0
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-import addClasses from './addClasses';
2
-import removeClasses from './removeClasses';
3
-
4
-export default { addClasses, removeClasses };
5 0
deleted file mode 100644
... ...
@@ -1,6 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-  const { $el, classNames } = swiper;
4
-
5
-  $el.removeClass(classNames.join(' '));
6
-}
7 0
deleted file mode 100644
... ...
@@ -1,490 +0,0 @@
1
-/* eslint no-param-reassign: "off" */
2
-import $ from '../../utils/dom';
3
-import Utils from '../../utils/utils';
4
-import Support from '../../utils/support';
5
-
6
-import SwiperClass from '../../utils/class';
7
-
8
-import update from './update/index';
9
-import translate from './translate/index';
10
-import transition from './transition/index';
11
-import slide from './slide/index';
12
-import loop from './loop/index';
13
-import grabCursor from './grab-cursor/index';
14
-import manipulation from './manipulation/index';
15
-import events from './events/index';
16
-import breakpoints from './breakpoints/index';
17
-import classes from './classes/index';
18
-import images from './images/index';
19
-import checkOverflow from './check-overflow/index';
20
-
21
-import defaults from './defaults';
22
-
23
-const prototypes = {
24
-  update,
25
-  translate,
26
-  transition,
27
-  slide,
28
-  loop,
29
-  grabCursor,
30
-  manipulation,
31
-  events,
32
-  breakpoints,
33
-  checkOverflow,
34
-  classes,
35
-  images,
36
-};
37
-
38
-const extendedDefaults = {};
39
-
40
-class Swiper extends SwiperClass {
41
-  constructor(...args) {
42
-    let el;
43
-    let params;
44
-    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
45
-      params = args[0];
46
-    } else {
47
-      [el, params] = args;
48
-    }
49
-    if (!params) params = {};
50
-
51
-    params = Utils.extend({}, params);
52
-    if (el && !params.el) params.el = el;
53
-
54
-    super(params);
55
-
56
-    Object.keys(prototypes).forEach((prototypeGroup) => {
57
-      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
58
-        if (!Swiper.prototype[protoMethod]) {
59
-          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
60
-        }
61
-      });
62
-    });
63
-
64
-    // Swiper Instance
65
-    const swiper = this;
66
-    if (typeof swiper.modules === 'undefined') {
67
-      swiper.modules = {};
68
-    }
69
-    Object.keys(swiper.modules).forEach((moduleName) => {
70
-      const module = swiper.modules[moduleName];
71
-      if (module.params) {
72
-        const moduleParamName = Object.keys(module.params)[0];
73
-        const moduleParams = module.params[moduleParamName];
74
-        if (typeof moduleParams !== 'object' || moduleParams === null) return;
75
-        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
76
-        if (params[moduleParamName] === true) {
77
-          params[moduleParamName] = { enabled: true };
78
-        }
79
-        if (
80
-          typeof params[moduleParamName] === 'object'
81
-          && !('enabled' in params[moduleParamName])
82
-        ) {
83
-          params[moduleParamName].enabled = true;
84
-        }
85
-        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
86
-      }
87
-    });
88
-
89
-    // Extend defaults with modules params
90
-    const swiperParams = Utils.extend({}, defaults);
91
-    swiper.useModulesParams(swiperParams);
92
-
93
-    // Extend defaults with passed params
94
-    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
95
-    swiper.originalParams = Utils.extend({}, swiper.params);
96
-    swiper.passedParams = Utils.extend({}, params);
97
-
98
-    // Save Dom lib
99
-    swiper.$ = $;
100
-
101
-    // Find el
102
-    const $el = $(swiper.params.el);
103
-    el = $el[0];
104
-
105
-    if (!el) {
106
-      return undefined;
107
-    }
108
-
109
-    if ($el.length > 1) {
110
-      const swipers = [];
111
-      $el.each((index, containerEl) => {
112
-        const newParams = Utils.extend({}, params, { el: containerEl });
113
-        swipers.push(new Swiper(newParams));
114
-      });
115
-      return swipers;
116
-    }
117
-
118
-    el.swiper = swiper;
119
-    $el.data('swiper', swiper);
120
-
121
-    // Find Wrapper
122
-    let $wrapperEl;
123
-    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
124
-      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));
125
-      // Children needs to return slot items
126
-      $wrapperEl.children = (options) => $el.children(options);
127
-    } else {
128
-      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);
129
-    }
130
-    // Extend Swiper
131
-    Utils.extend(swiper, {
132
-      $el,
133
-      el,
134
-      $wrapperEl,
135
-      wrapperEl: $wrapperEl[0],
136
-
137
-      // Classes
138
-      classNames: [],
139
-
140
-      // Slides
141
-      slides: $(),
142
-      slidesGrid: [],
143
-      snapGrid: [],
144
-      slidesSizesGrid: [],
145
-
146
-      // isDirection
147
-      isHorizontal() {
148
-        return swiper.params.direction === 'horizontal';
149
-      },
150
-      isVertical() {
151
-        return swiper.params.direction === 'vertical';
152
-      },
153
-      // RTL
154
-      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
155
-      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
156
-      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
157
-
158
-      // Indexes
159
-      activeIndex: 0,
160
-      realIndex: 0,
161
-
162
-      //
163
-      isBeginning: true,
164
-      isEnd: false,
165
-
166
-      // Props
167
-      translate: 0,
168
-      previousTranslate: 0,
169
-      progress: 0,
170
-      velocity: 0,
171
-      animating: false,
172
-
173
-      // Locks
174
-      allowSlideNext: swiper.params.allowSlideNext,
175
-      allowSlidePrev: swiper.params.allowSlidePrev,
176
-
177
-      // Touch Events
178
-      touchEvents: (function touchEvents() {
179
-        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
180
-        let desktop = ['mousedown', 'mousemove', 'mouseup'];
181
-        if (Support.pointerEvents) {
182
-          desktop = ['pointerdown', 'pointermove', 'pointerup'];
183
-        }
184
-        swiper.touchEventsTouch = {
185
-          start: touch[0],
186
-          move: touch[1],
187
-          end: touch[2],
188
-          cancel: touch[3],
189
-        };
190
-        swiper.touchEventsDesktop = {
191
-          start: desktop[0],
192
-          move: desktop[1],
193
-          end: desktop[2],
194
-        };
195
-        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
196
-      }()),
197
-      touchEventsData: {
198
-        isTouched: undefined,
199
-        isMoved: undefined,
200
-        allowTouchCallbacks: undefined,
201
-        touchStartTime: undefined,
202
-        isScrolling: undefined,
203
-        currentTranslate: undefined,
204
-        startTranslate: undefined,
205
-        allowThresholdMove: undefined,
206
-        // Form elements to match
207
-        formElements: 'input, select, option, textarea, button, video, label',
208
-        // Last click time
209
-        lastClickTime: Utils.now(),
210
-        clickTimeout: undefined,
211
-        // Velocities
212
-        velocities: [],
213
-        allowMomentumBounce: undefined,
214
-        isTouchEvent: undefined,
215
-        startMoving: undefined,
216
-      },
217
-
218
-      // Clicks
219
-      allowClick: true,
220
-
221
-      // Touches
222
-      allowTouchMove: swiper.params.allowTouchMove,
223
-
224
-      touches: {
225
-        startX: 0,
226
-        startY: 0,
227
-        currentX: 0,
228
-        currentY: 0,
229
-        diff: 0,
230
-      },
231
-
232
-      // Images
233
-      imagesToLoad: [],
234
-      imagesLoaded: 0,
235
-
236
-    });
237
-
238
-    // Install Modules
239
-    swiper.useModules();
240
-
241
-    // Init
242
-    if (swiper.params.init) {
243
-      swiper.init();
244
-    }
245
-
246
-    // Return app instance
247
-    return swiper;
248
-  }
249
-
250
-  slidesPerViewDynamic() {
251
-    const swiper = this;
252
-    const {
253
-      params, slides, slidesGrid, size: swiperSize, activeIndex,
254
-    } = swiper;
255
-    let spv = 1;
256
-    if (params.centeredSlides) {
257
-      let slideSize = slides[activeIndex].swiperSlideSize;
258
-      let breakLoop;
259
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
260
-        if (slides[i] && !breakLoop) {
261
-          slideSize += slides[i].swiperSlideSize;
262
-          spv += 1;
263
-          if (slideSize > swiperSize) breakLoop = true;
264
-        }
265
-      }
266
-      for (let i = activeIndex - 1; i >= 0; i -= 1) {
267
-        if (slides[i] && !breakLoop) {
268
-          slideSize += slides[i].swiperSlideSize;
269
-          spv += 1;
270
-          if (slideSize > swiperSize) breakLoop = true;
271
-        }
272
-      }
273
-    } else {
274
-      for (let i = activeIndex + 1; i < slides.length; i += 1) {
275
-        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
276
-          spv += 1;
277
-        }
278
-      }
279
-    }
280
-    return spv;
281
-  }
282
-
283
-  update() {
284
-    const swiper = this;
285
-    if (!swiper || swiper.destroyed) return;
286
-    const { snapGrid, params } = swiper;
287
-    // Breakpoints
288
-    if (params.breakpoints) {
289
-      swiper.setBreakpoint();
290
-    }
291
-    swiper.updateSize();
292
-    swiper.updateSlides();
293
-    swiper.updateProgress();
294
-    swiper.updateSlidesClasses();
295
-
296
-    function setTranslate() {
297
-      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
298
-      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
299
-      swiper.setTranslate(newTranslate);
300
-      swiper.updateActiveIndex();
301
-      swiper.updateSlidesClasses();
302
-    }
303
-    let translated;
304
-    if (swiper.params.freeMode) {
305
-      setTranslate();
306
-      if (swiper.params.autoHeight) {
307
-        swiper.updateAutoHeight();
308
-      }
309
-    } else {
310
-      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
311
-        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
312
-      } else {
313
-        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
314
-      }
315
-      if (!translated) {
316
-        setTranslate();
317
-      }
318
-    }
319
-    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
320
-      swiper.checkOverflow();
321
-    }
322
-    swiper.emit('update');
323
-  }
324
-
325
-  changeDirection(newDirection, needUpdate = true) {
326
-    const swiper = this;
327
-    const currentDirection = swiper.params.direction;
328
-    if (!newDirection) {
329
-      // eslint-disable-next-line
330
-      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
331
-    }
332
-    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
333
-      return swiper;
334
-    }
335
-
336
-    swiper.$el
337
-      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)
338
-      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);
339
-
340
-    swiper.params.direction = newDirection;
341
-
342
-    swiper.slides.each((slideIndex, slideEl) => {
343
-      if (newDirection === 'vertical') {
344
-        slideEl.style.width = '';
345
-      } else {
346
-        slideEl.style.height = '';
347
-      }
348
-    });
349
-
350
-    swiper.emit('changeDirection');
351
-    if (needUpdate) swiper.update();
352
-
353
-    return swiper;
354
-  }
355
-
356
-  init() {
357
-    const swiper = this;
358
-    if (swiper.initialized) return;
359
-
360
-    swiper.emit('beforeInit');
361
-
362
-    // Set breakpoint
363
-    if (swiper.params.breakpoints) {
364
-      swiper.setBreakpoint();
365
-    }
366
-
367
-    // Add Classes
368
-    swiper.addClasses();
369
-
370
-    // Create loop
371
-    if (swiper.params.loop) {
372
-      swiper.loopCreate();
373
-    }
374
-
375
-    // Update size
376
-    swiper.updateSize();
377
-
378
-    // Update slides
379
-    swiper.updateSlides();
380
-
381
-    if (swiper.params.watchOverflow) {
382
-      swiper.checkOverflow();
383
-    }
384
-
385
-    // Set Grab Cursor
386
-    if (swiper.params.grabCursor) {
387
-      swiper.setGrabCursor();
388
-    }
389
-
390
-    if (swiper.params.preloadImages) {
391
-      swiper.preloadImages();
392
-    }
393
-
394
-    // Slide To Initial Slide
395
-    if (swiper.params.loop) {
396
-      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
397
-    } else {
398
-      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
399
-    }
400
-
401
-    // Attach events
402
-    swiper.attachEvents();
403
-
404
-    // Init Flag
405
-    swiper.initialized = true;
406
-
407
-    // Emit
408
-    swiper.emit('init');
409
-  }
410
-
411
-  destroy(deleteInstance = true, cleanStyles = true) {
412
-    const swiper = this;
413
-    const {
414
-      params, $el, $wrapperEl, slides,
415
-    } = swiper;
416
-
417
-    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
418
-      return null;
419
-    }
420
-
421
-    swiper.emit('beforeDestroy');
422
-
423
-    // Init Flag
424
-    swiper.initialized = false;
425
-
426
-    // Detach events
427
-    swiper.detachEvents();
428
-
429
-    // Destroy loop
430
-    if (params.loop) {
431
-      swiper.loopDestroy();
432
-    }
433
-
434
-    // Cleanup styles
435
-    if (cleanStyles) {
436
-      swiper.removeClasses();
437
-      $el.removeAttr('style');
438
-      $wrapperEl.removeAttr('style');
439
-      if (slides && slides.length) {
440
-        slides
441
-          .removeClass([
442
-            params.slideVisibleClass,
443
-            params.slideActiveClass,
444
-            params.slideNextClass,
445
-            params.slidePrevClass,
446
-          ].join(' '))
447
-          .removeAttr('style')
448
-          .removeAttr('data-swiper-slide-index');
449
-      }
450
-    }
451
-
452
-    swiper.emit('destroy');
453
-
454
-    // Detach emitter events
455
-    Object.keys(swiper.eventsListeners).forEach((eventName) => {
456
-      swiper.off(eventName);
457
-    });
458
-
459
-    if (deleteInstance !== false) {
460
-      swiper.$el[0].swiper = null;
461
-      swiper.$el.data('swiper', null);
462
-      Utils.deleteProps(swiper);
463
-    }
464
-    swiper.destroyed = true;
465
-
466
-    return null;
467
-  }
468
-
469
-  static extendDefaults(newDefaults) {
470
-    Utils.extend(extendedDefaults, newDefaults);
471
-  }
472
-
473
-  static get extendedDefaults() {
474
-    return extendedDefaults;
475
-  }
476
-
477
-  static get defaults() {
478
-    return defaults;
479
-  }
480
-
481
-  static get Class() {
482
-    return SwiperClass;
483
-  }
484
-
485
-  static get $() {
486
-    return $;
487
-  }
488
-}
489
-
490
-export default Swiper;
491 0
deleted file mode 100644
... ...
@@ -1,111 +0,0 @@
1
-:root {
2
-  --swiper-theme-color: @themeColor;
3
-}
4
-.swiper-container {
5
-  margin-left: auto;
6
-  margin-right: auto;
7
-  position: relative;
8
-  overflow: hidden;
9
-  list-style: none;
10
-  padding: 0;
11
-  /* Fix of Webkit flickering */
12
-  z-index:1;
13
-}
14
-.swiper-container-vertical > .swiper-wrapper {
15
-  flex-direction: column;
16
-}
17
-.swiper-wrapper {
18
-  position:relative;
19
-  width: 100%;
20
-  height: 100%;
21
-  z-index: 1;
22
-  display: flex;
23
-  transition-property:transform;
24
-  box-sizing: content-box;
25
-}
26
-.swiper-container-android .swiper-slide, .swiper-wrapper {
27
-  transform:translate3d(0px,0,0);
28
-}
29
-.swiper-container-multirow > .swiper-wrapper {
30
-  flex-wrap: wrap;
31
-}
32
-.swiper-container-multirow-column > .swiper-wrapper {
33
-  flex-wrap: wrap;
34
-  flex-direction: column;
35
-}
36
-.swiper-container-free-mode > .swiper-wrapper {
37
-  transition-timing-function: ease-out;
38
-  margin: 0 auto;
39
-}
40
-.swiper-slide {
41
-  flex-shrink: 0;
42
-  width: 100%;
43
-  height: 100%;
44
-  position: relative;
45
-  transition-property: transform;
46
-}
47
-.swiper-slide-invisible-blank {
48
-  visibility: hidden;
49
-}
50
-/* Auto Height */
51
-.swiper-container-autoheight, .swiper-container-autoheight .swiper-slide {
52
-  height: auto;
53
-}
54
-.swiper-container-autoheight .swiper-wrapper {
55
-  align-items: flex-start;
56
-  transition-property: transform, height;
57
-}
58
-
59
-/* 3D Effects */
60
-.swiper-container-3d {
61
-  perspective: 1200px;
62
-  .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow {
63
-    transform-style: preserve-3d;
64
-  }
65
-  .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom {
66
-    position: absolute;
67
-    left: 0;
68
-    top: 0;
69
-    width: 100%;
70
-    height: 100%;
71
-    pointer-events: none;
72
-    z-index: 10;
73
-  }
74
-  .swiper-slide-shadow-left {
75
-    background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0));
76
-  }
77
-  .swiper-slide-shadow-right {
78
-    background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0));
79
-  }
80
-  .swiper-slide-shadow-top {
81
-    background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0));
82
-  }
83
-  .swiper-slide-shadow-bottom {
84
-    background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0));
85
-  }
86
-}
87
-
88
-/* CSS Mode */
89
-.swiper-container-css-mode {
90
-  > .swiper-wrapper {
91
-    overflow: auto;
92
-    scrollbar-width: none; /* For Firefox */
93
-    -ms-overflow-style: none; /* For Internet Explorer and Edge */
94
-    &::-webkit-scrollbar {
95
-      display: none;
96
-    }
97
-  }
98
-  > .swiper-wrapper > .swiper-slide {
99
-    scroll-snap-align: start start;
100
-  }
101
-}
102
-.swiper-container-horizontal.swiper-container-css-mode {
103
-  > .swiper-wrapper {
104
-    scroll-snap-type: x mandatory;
105
-  }
106
-}
107
-.swiper-container-vertical.swiper-container-css-mode {
108
-  > .swiper-wrapper {
109
-    scroll-snap-type: y mandatory;
110
-  }
111
-}
112 0
deleted file mode 100644
... ...
@@ -1,115 +0,0 @@
1
-:root {
2
-  --swiper-theme-color: #{$themeColor};
3
-}
4
-.swiper-container {
5
-  margin-left: auto;
6
-  margin-right: auto;
7
-  position: relative;
8
-  overflow: hidden;
9
-  list-style: none;
10
-  padding: 0;
11
-  /* Fix of Webkit flickering */
12
-  z-index:1;
13
-}
14
-.swiper-container-vertical > .swiper-wrapper {
15
-  flex-direction: column;
16
-}
17
-.swiper-wrapper {
18
-  position:relative;
19
-  width: 100%;
20
-  height: 100%;
21
-  z-index: 1;
22
-  display: flex;
23
-  transition-property:transform;
24
-  box-sizing: content-box;
25
-}
26
-.swiper-container-android .swiper-slide,
27
-.swiper-wrapper {
28
-  transform:translate3d(0px,0,0);
29
-}
30
-.swiper-container-multirow > .swiper-wrapper {
31
-  flex-wrap: wrap;
32
-}
33
-.swiper-container-multirow-column > .swiper-wrapper {
34
-  flex-wrap: wrap;
35
-  flex-direction: column;
36
-}
37
-.swiper-container-free-mode > .swiper-wrapper {
38
-  transition-timing-function: ease-out;
39
-  margin: 0 auto;
40
-}
41
-.swiper-slide {
42
-  flex-shrink: 0;
43
-  width: 100%;
44
-  height: 100%;
45
-  position: relative;
46
-  transition-property: transform;
47
-}
48
-.swiper-slide-invisible-blank {
49
-  visibility: hidden;
50
-}
51
-/* Auto Height */
52
-.swiper-container-autoheight {
53
-  &, .swiper-slide {
54
-    height: auto;
55
-  }
56
-
57
-  .swiper-wrapper {
58
-    align-items: flex-start;
59
-    transition-property: transform, height;
60
-  }
61
-}
62
-
63
-/* 3D Effects */
64
-.swiper-container-3d {
65
-  perspective: 1200px;
66
-  .swiper-wrapper, .swiper-slide, .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-cube-shadow {
67
-    transform-style: preserve-3d;
68
-  }
69
-  .swiper-slide-shadow-left, .swiper-slide-shadow-right, .swiper-slide-shadow-top, .swiper-slide-shadow-bottom {
70
-    position: absolute;
71
-    left: 0;
72
-    top: 0;
73
-    width: 100%;
74
-    height: 100%;
75
-    pointer-events: none;
76
-    z-index: 10;
77
-  }
78
-  .swiper-slide-shadow-left {
79
-    background-image: linear-gradient(to left, rgba(0,0,0,0.5), rgba(0,0,0,0));
80
-  }
81
-  .swiper-slide-shadow-right {
82
-    background-image: linear-gradient(to right, rgba(0,0,0,0.5), rgba(0,0,0,0));
83
-  }
84
-  .swiper-slide-shadow-top {
85
-    background-image: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0));
86
-  }
87
-  .swiper-slide-shadow-bottom {
88
-    background-image: linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0,0,0,0));
89
-  }
90
-}
91
-
92
-/* CSS Mode */
93
-.swiper-container-css-mode {
94
-  > .swiper-wrapper {
95
-    overflow: auto;
96
-    scrollbar-width: none; /* For Firefox */
97
-    -ms-overflow-style: none; /* For Internet Explorer and Edge */
98
-    &::-webkit-scrollbar {
99
-      display: none;
100
-    }
101
-  }
102
-  > .swiper-wrapper > .swiper-slide {
103
-    scroll-snap-align: start start;
104
-  }
105
-}
106
-.swiper-container-horizontal.swiper-container-css-mode {
107
-  > .swiper-wrapper {
108
-    scroll-snap-type: x mandatory;
109
-  }
110
-}
111
-.swiper-container-vertical.swiper-container-css-mode {
112
-  > .swiper-wrapper {
113
-    scroll-snap-type: y mandatory;
114
-  }
115
-}
116 0
deleted file mode 100644
... ...
@@ -1,133 +0,0 @@
1
-export default {
2
-  init: true,
3
-  direction: 'horizontal',
4
-  touchEventsTarget: 'container',
5
-  initialSlide: 0,
6
-  speed: 300,
7
-  cssMode: false,
8
-  updateOnWindowResize: true,
9
-  //
10
-  preventInteractionOnTransition: false,
11
-
12
-  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
13
-  edgeSwipeDetection: false,
14
-  edgeSwipeThreshold: 20,
15
-
16
-  // Free mode
17
-  freeMode: false,
18
-  freeModeMomentum: true,
19
-  freeModeMomentumRatio: 1,
20
-  freeModeMomentumBounce: true,
21
-  freeModeMomentumBounceRatio: 1,
22
-  freeModeMomentumVelocityRatio: 1,
23
-  freeModeSticky: false,
24
-  freeModeMinimumVelocity: 0.02,
25
-
26
-  // Autoheight
27
-  autoHeight: false,
28
-
29
-  // Set wrapper width
30
-  setWrapperSize: false,
31
-
32
-  // Virtual Translate
33
-  virtualTranslate: false,
34
-
35
-  // Effects
36
-  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
37
-
38
-  // Breakpoints
39
-  breakpoints: undefined,
40
-
41
-  // Slides grid
42
-  spaceBetween: 0,
43
-  slidesPerView: 1,
44
-  slidesPerColumn: 1,
45
-  slidesPerColumnFill: 'column',
46
-  slidesPerGroup: 1,
47
-  slidesPerGroupSkip: 0,
48
-  centeredSlides: false,
49
-  centeredSlidesBounds: false,
50
-  slidesOffsetBefore: 0, // in px
51
-  slidesOffsetAfter: 0, // in px
52
-  normalizeSlideIndex: true,
53
-  centerInsufficientSlides: false,
54
-
55
-  // Disable swiper and hide navigation when container not overflow
56
-  watchOverflow: false,
57
-
58
-  // Round length
59
-  roundLengths: false,
60
-
61
-  // Touches
62
-  touchRatio: 1,
63
-  touchAngle: 45,
64
-  simulateTouch: true,
65
-  shortSwipes: true,
66
-  longSwipes: true,
67
-  longSwipesRatio: 0.5,
68
-  longSwipesMs: 300,
69
-  followFinger: true,
70
-  allowTouchMove: true,
71
-  threshold: 0,
72
-  touchMoveStopPropagation: false,
73
-  touchStartPreventDefault: true,
74
-  touchStartForcePreventDefault: false,
75
-  touchReleaseOnEdges: false,
76
-
77
-  // Unique Navigation Elements
78
-  uniqueNavElements: true,
79
-
80
-  // Resistance
81
-  resistance: true,
82
-  resistanceRatio: 0.85,
83
-
84
-  // Progress
85
-  watchSlidesProgress: false,
86
-  watchSlidesVisibility: false,
87
-
88
-  // Cursor
89
-  grabCursor: false,
90
-
91
-  // Clicks
92
-  preventClicks: true,
93
-  preventClicksPropagation: true,
94
-  slideToClickedSlide: false,
95
-
96
-  // Images
97
-  preloadImages: true,
98
-  updateOnImagesReady: true,
99
-
100
-  // loop
101
-  loop: false,
102
-  loopAdditionalSlides: 0,
103
-  loopedSlides: null,
104
-  loopFillGroupWithBlank: false,
105
-
106
-  // Swiping/no swiping
107
-  allowSlidePrev: true,
108
-  allowSlideNext: true,
109
-  swipeHandler: null, // '.swipe-handler',
110
-  noSwiping: true,
111
-  noSwipingClass: 'swiper-no-swiping',
112
-  noSwipingSelector: null,
113
-
114
-  // Passive Listeners
115
-  passiveListeners: true,
116
-
117
-  // NS
118
-  containerModifierClass: 'swiper-container-', // NEW
119
-  slideClass: 'swiper-slide',
120
-  slideBlankClass: 'swiper-slide-invisible-blank',
121
-  slideActiveClass: 'swiper-slide-active',
122
-  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
123
-  slideVisibleClass: 'swiper-slide-visible',
124
-  slideDuplicateClass: 'swiper-slide-duplicate',
125
-  slideNextClass: 'swiper-slide-next',
126
-  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
127
-  slidePrevClass: 'swiper-slide-prev',
128
-  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
129
-  wrapperClass: 'swiper-wrapper',
130
-
131
-  // Callbacks
132
-  runCallbacksOnInit: true,
133
-};
134 0
deleted file mode 100644
... ...
@@ -1,119 +0,0 @@
1
-import { document } from 'ssr-window';
2
-import Device from '../../../utils/device';
3
-import Support from '../../../utils/support';
4
-
5
-import onTouchStart from './onTouchStart';
6
-import onTouchMove from './onTouchMove';
7
-import onTouchEnd from './onTouchEnd';
8
-import onResize from './onResize';
9
-import onClick from './onClick';
10
-import onScroll from './onScroll';
11
-
12
-let dummyEventAttached = false;
13
-function dummyEventListener() {}
14
-
15
-function attachEvents() {
16
-  const swiper = this;
17
-  const {
18
-    params, touchEvents, el, wrapperEl,
19
-  } = swiper;
20
-
21
-  swiper.onTouchStart = onTouchStart.bind(swiper);
22
-  swiper.onTouchMove = onTouchMove.bind(swiper);
23
-  swiper.onTouchEnd = onTouchEnd.bind(swiper);
24
-  if (params.cssMode) {
25
-    swiper.onScroll = onScroll.bind(swiper);
26
-  }
27
-
28
-  swiper.onClick = onClick.bind(swiper);
29
-
30
-  const capture = !!params.nested;
31
-
32
-  // Touch Events
33
-  if (!Support.touch && Support.pointerEvents) {
34
-    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
35
-    document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
36
-    document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
37
-  } else {
38
-    if (Support.touch) {
39
-      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
40
-      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
41
-      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
42
-      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
43
-      if (touchEvents.cancel) {
44
-        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
45
-      }
46
-      if (!dummyEventAttached) {
47
-        document.addEventListener('touchstart', dummyEventListener);
48
-        dummyEventAttached = true;
49
-      }
50
-    }
51
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
52
-      el.addEventListener('mousedown', swiper.onTouchStart, false);
53
-      document.addEventListener('mousemove', swiper.onTouchMove, capture);
54
-      document.addEventListener('mouseup', swiper.onTouchEnd, false);
55
-    }
56
-  }
57
-  // Prevent Links Clicks
58
-  if (params.preventClicks || params.preventClicksPropagation) {
59
-    el.addEventListener('click', swiper.onClick, true);
60
-  }
61
-  if (params.cssMode) {
62
-    wrapperEl.addEventListener('scroll', swiper.onScroll);
63
-  }
64
-
65
-  // Resize handler
66
-  if (params.updateOnWindowResize) {
67
-    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
68
-  } else {
69
-    swiper.on('observerUpdate', onResize, true);
70
-  }
71
-}
72
-
73
-function detachEvents() {
74
-  const swiper = this;
75
-
76
-  const {
77
-    params, touchEvents, el, wrapperEl,
78
-  } = swiper;
79
-
80
-  const capture = !!params.nested;
81
-
82
-  // Touch Events
83
-  if (!Support.touch && Support.pointerEvents) {
84
-    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
85
-    document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
86
-    document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
87
-  } else {
88
-    if (Support.touch) {
89
-      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
90
-      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
91
-      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
92
-      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
93
-      if (touchEvents.cancel) {
94
-        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
95
-      }
96
-    }
97
-    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
98
-      el.removeEventListener('mousedown', swiper.onTouchStart, false);
99
-      document.removeEventListener('mousemove', swiper.onTouchMove, capture);
100
-      document.removeEventListener('mouseup', swiper.onTouchEnd, false);
101
-    }
102
-  }
103
-  // Prevent Links Clicks
104
-  if (params.preventClicks || params.preventClicksPropagation) {
105
-    el.removeEventListener('click', swiper.onClick, true);
106
-  }
107
-
108
-  if (params.cssMode) {
109
-    wrapperEl.removeEventListener('scroll', swiper.onScroll);
110
-  }
111
-
112
-  // Resize handler
113
-  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
114
-}
115
-
116
-export default {
117
-  attachEvents,
118
-  detachEvents,
119
-};
120 0
deleted file mode 100644
... ...
@@ -1,10 +0,0 @@
1
-export default function (e) {
2
-  const swiper = this;
3
-  if (!swiper.allowClick) {
4
-    if (swiper.params.preventClicks) e.preventDefault();
5
-    if (swiper.params.preventClicksPropagation && swiper.animating) {
6
-      e.stopPropagation();
7
-      e.stopImmediatePropagation();
8
-    }
9
-  }
10
-}
11 0
deleted file mode 100644
... ...
@@ -1,40 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-
4
-  const { params, el } = swiper;
5
-
6
-  if (el && el.offsetWidth === 0) return;
7
-
8
-  // Breakpoints
9
-  if (params.breakpoints) {
10
-    swiper.setBreakpoint();
11
-  }
12
-
13
-  // Save locks
14
-  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;
15
-
16
-  // Disable locks on resize
17
-  swiper.allowSlideNext = true;
18
-  swiper.allowSlidePrev = true;
19
-
20
-  swiper.updateSize();
21
-  swiper.updateSlides();
22
-
23
-  swiper.updateSlidesClasses();
24
-  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
25
-    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
26
-  } else {
27
-    swiper.slideTo(swiper.activeIndex, 0, false, true);
28
-  }
29
-
30
-  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
31
-    swiper.autoplay.run();
32
-  }
33
-  // Return locks after resize
34
-  swiper.allowSlidePrev = allowSlidePrev;
35
-  swiper.allowSlideNext = allowSlideNext;
36
-
37
-  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
38
-    swiper.checkOverflow();
39
-  }
40
-}
41 0
deleted file mode 100644
... ...
@@ -1,32 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-  const { wrapperEl, rtlTranslate } = swiper;
4
-  swiper.previousTranslate = swiper.translate;
5
-  if (swiper.isHorizontal()) {
6
-    if (rtlTranslate) {
7
-      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
8
-    } else {
9
-      swiper.translate = -wrapperEl.scrollLeft;
10
-    }
11
-  } else {
12
-    swiper.translate = -wrapperEl.scrollTop;
13
-  }
14
-  // eslint-disable-next-line
15
-  if (swiper.translate === -0) swiper.translate = 0;
16
-
17
-  swiper.updateActiveIndex();
18
-  swiper.updateSlidesClasses();
19
-
20
-  let newProgress;
21
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
22
-  if (translatesDiff === 0) {
23
-    newProgress = 0;
24
-  } else {
25
-    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
26
-  }
27
-  if (newProgress !== swiper.progress) {
28
-    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
29
-  }
30
-
31
-  swiper.emit('setTranslate', swiper.translate, false);
32
-}
33 0
deleted file mode 100644
... ...
@@ -1,293 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function (event) {
4
-  const swiper = this;
5
-  const data = swiper.touchEventsData;
6
-
7
-  const {
8
-    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,
9
-  } = swiper;
10
-  let e = event;
11
-  if (e.originalEvent) e = e.originalEvent;
12
-  if (data.allowTouchCallbacks) {
13
-    swiper.emit('touchEnd', e);
14
-  }
15
-  data.allowTouchCallbacks = false;
16
-  if (!data.isTouched) {
17
-    if (data.isMoved && params.grabCursor) {
18
-      swiper.setGrabCursor(false);
19
-    }
20
-    data.isMoved = false;
21
-    data.startMoving = false;
22
-    return;
23
-  }
24
-  // Return Grab Cursor
25
-  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
26
-    swiper.setGrabCursor(false);
27
-  }
28
-
29
-  // Time diff
30
-  const touchEndTime = Utils.now();
31
-  const timeDiff = touchEndTime - data.touchStartTime;
32
-
33
-  // Tap, doubleTap, Click
34
-  if (swiper.allowClick) {
35
-    swiper.updateClickedSlide(e);
36
-    swiper.emit('tap click', e);
37
-    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
38
-      swiper.emit('doubleTap doubleClick', e);
39
-    }
40
-  }
41
-
42
-  data.lastClickTime = Utils.now();
43
-  Utils.nextTick(() => {
44
-    if (!swiper.destroyed) swiper.allowClick = true;
45
-  });
46
-
47
-  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
48
-    data.isTouched = false;
49
-    data.isMoved = false;
50
-    data.startMoving = false;
51
-    return;
52
-  }
53
-  data.isTouched = false;
54
-  data.isMoved = false;
55
-  data.startMoving = false;
56
-
57
-  let currentPos;
58
-  if (params.followFinger) {
59
-    currentPos = rtl ? swiper.translate : -swiper.translate;
60
-  } else {
61
-    currentPos = -data.currentTranslate;
62
-  }
63
-
64
-  if (params.cssMode) {
65
-    return;
66
-  }
67
-
68
-  if (params.freeMode) {
69
-    if (currentPos < -swiper.minTranslate()) {
70
-      swiper.slideTo(swiper.activeIndex);
71
-      return;
72
-    }
73
-    if (currentPos > -swiper.maxTranslate()) {
74
-      if (swiper.slides.length < snapGrid.length) {
75
-        swiper.slideTo(snapGrid.length - 1);
76
-      } else {
77
-        swiper.slideTo(swiper.slides.length - 1);
78
-      }
79
-      return;
80
-    }
81
-
82
-    if (params.freeModeMomentum) {
83
-      if (data.velocities.length > 1) {
84
-        const lastMoveEvent = data.velocities.pop();
85
-        const velocityEvent = data.velocities.pop();
86
-
87
-        const distance = lastMoveEvent.position - velocityEvent.position;
88
-        const time = lastMoveEvent.time - velocityEvent.time;
89
-        swiper.velocity = distance / time;
90
-        swiper.velocity /= 2;
91
-        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
92
-          swiper.velocity = 0;
93
-        }
94
-        // this implies that the user stopped moving a finger then released.
95
-        // There would be no events with distance zero, so the last event is stale.
96
-        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
97
-          swiper.velocity = 0;
98
-        }
99
-      } else {
100
-        swiper.velocity = 0;
101
-      }
102
-      swiper.velocity *= params.freeModeMomentumVelocityRatio;
103
-
104
-      data.velocities.length = 0;
105
-      let momentumDuration = 1000 * params.freeModeMomentumRatio;
106
-      const momentumDistance = swiper.velocity * momentumDuration;
107
-
108
-      let newPosition = swiper.translate + momentumDistance;
109
-      if (rtl) newPosition = -newPosition;
110
-
111
-      let doBounce = false;
112
-      let afterBouncePosition;
113
-      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
114
-      let needsLoopFix;
115
-      if (newPosition < swiper.maxTranslate()) {
116
-        if (params.freeModeMomentumBounce) {
117
-          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
118
-            newPosition = swiper.maxTranslate() - bounceAmount;
119
-          }
120
-          afterBouncePosition = swiper.maxTranslate();
121
-          doBounce = true;
122
-          data.allowMomentumBounce = true;
123
-        } else {
124
-          newPosition = swiper.maxTranslate();
125
-        }
126
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
127
-      } else if (newPosition > swiper.minTranslate()) {
128
-        if (params.freeModeMomentumBounce) {
129
-          if (newPosition - swiper.minTranslate() > bounceAmount) {
130
-            newPosition = swiper.minTranslate() + bounceAmount;
131
-          }
132
-          afterBouncePosition = swiper.minTranslate();
133
-          doBounce = true;
134
-          data.allowMomentumBounce = true;
135
-        } else {
136
-          newPosition = swiper.minTranslate();
137
-        }
138
-        if (params.loop && params.centeredSlides) needsLoopFix = true;
139
-      } else if (params.freeModeSticky) {
140
-        let nextSlide;
141
-        for (let j = 0; j < snapGrid.length; j += 1) {
142
-          if (snapGrid[j] > -newPosition) {
143
-            nextSlide = j;
144
-            break;
145
-          }
146
-        }
147
-
148
-        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
149
-          newPosition = snapGrid[nextSlide];
150
-        } else {
151
-          newPosition = snapGrid[nextSlide - 1];
152
-        }
153
-        newPosition = -newPosition;
154
-      }
155
-      if (needsLoopFix) {
156
-        swiper.once('transitionEnd', () => {
157
-          swiper.loopFix();
158
-        });
159
-      }
160
-      // Fix duration
161
-      if (swiper.velocity !== 0) {
162
-        if (rtl) {
163
-          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
164
-        } else {
165
-          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
166
-        }
167
-        if (params.freeModeSticky) {
168
-          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
169
-          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
170
-          // It's easy to see this when simulating touch with mouse events. To fix this,
171
-          // limit single-slide swipes to the default slide duration. This also has the
172
-          // nice side effect of matching slide speed if the user stopped moving before
173
-          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
174
-          // For faster swipes, also apply limits (albeit higher ones).
175
-          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
176
-          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
177
-          if (moveDistance < currentSlideSize) {
178
-            momentumDuration = params.speed;
179
-          } else if (moveDistance < 2 * currentSlideSize) {
180
-            momentumDuration = params.speed * 1.5;
181
-          } else {
182
-            momentumDuration = params.speed * 2.5;
183
-          }
184
-        }
185
-      } else if (params.freeModeSticky) {
186
-        swiper.slideToClosest();
187
-        return;
188
-      }
189
-
190
-      if (params.freeModeMomentumBounce && doBounce) {
191
-        swiper.updateProgress(afterBouncePosition);
192
-        swiper.setTransition(momentumDuration);
193
-        swiper.setTranslate(newPosition);
194
-        swiper.transitionStart(true, swiper.swipeDirection);
195
-        swiper.animating = true;
196
-        $wrapperEl.transitionEnd(() => {
197
-          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
198
-          swiper.emit('momentumBounce');
199
-          swiper.setTransition(params.speed);
200
-          setTimeout(() => {
201
-            swiper.setTranslate(afterBouncePosition);
202
-            $wrapperEl.transitionEnd(() => {
203
-              if (!swiper || swiper.destroyed) return;
204
-              swiper.transitionEnd();
205
-            });
206
-          }, 0);
207
-        });
208
-      } else if (swiper.velocity) {
209
-        swiper.updateProgress(newPosition);
210
-        swiper.setTransition(momentumDuration);
211
-        swiper.setTranslate(newPosition);
212
-        swiper.transitionStart(true, swiper.swipeDirection);
213
-        if (!swiper.animating) {
214
-          swiper.animating = true;
215
-          $wrapperEl.transitionEnd(() => {
216
-            if (!swiper || swiper.destroyed) return;
217
-            swiper.transitionEnd();
218
-          });
219
-        }
220
-      } else {
221
-        swiper.updateProgress(newPosition);
222
-      }
223
-
224
-      swiper.updateActiveIndex();
225
-      swiper.updateSlidesClasses();
226
-    } else if (params.freeModeSticky) {
227
-      swiper.slideToClosest();
228
-      return;
229
-    }
230
-
231
-    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
232
-      swiper.updateProgress();
233
-      swiper.updateActiveIndex();
234
-      swiper.updateSlidesClasses();
235
-    }
236
-    return;
237
-  }
238
-
239
-  // Find current slide
240
-  let stopIndex = 0;
241
-  let groupSize = swiper.slidesSizesGrid[0];
242
-  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
243
-    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
244
-    if (typeof slidesGrid[i + increment] !== 'undefined') {
245
-      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
246
-        stopIndex = i;
247
-        groupSize = slidesGrid[i + increment] - slidesGrid[i];
248
-      }
249
-    } else if (currentPos >= slidesGrid[i]) {
250
-      stopIndex = i;
251
-      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
252
-    }
253
-  }
254
-
255
-  // Find current slide size
256
-  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
257
-  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
258
-
259
-  if (timeDiff > params.longSwipesMs) {
260
-    // Long touches
261
-    if (!params.longSwipes) {
262
-      swiper.slideTo(swiper.activeIndex);
263
-      return;
264
-    }
265
-    if (swiper.swipeDirection === 'next') {
266
-      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);
267
-      else swiper.slideTo(stopIndex);
268
-    }
269
-    if (swiper.swipeDirection === 'prev') {
270
-      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);
271
-      else swiper.slideTo(stopIndex);
272
-    }
273
-  } else {
274
-    // Short swipes
275
-    if (!params.shortSwipes) {
276
-      swiper.slideTo(swiper.activeIndex);
277
-      return;
278
-    }
279
-    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
280
-    if (!isNavButtonTarget) {
281
-      if (swiper.swipeDirection === 'next') {
282
-        swiper.slideTo(stopIndex + increment);
283
-      }
284
-      if (swiper.swipeDirection === 'prev') {
285
-        swiper.slideTo(stopIndex);
286
-      }
287
-    } else if (e.target === swiper.navigation.nextEl) {
288
-      swiper.slideTo(stopIndex + increment);
289
-    } else {
290
-      swiper.slideTo(stopIndex);
291
-    }
292
-  }
293
-}
294 0
deleted file mode 100644
... ...
@@ -1,207 +0,0 @@
1
-import { document } from 'ssr-window';
2
-import $ from '../../../utils/dom';
3
-import Utils from '../../../utils/utils';
4
-
5
-export default function (event) {
6
-  const swiper = this;
7
-  const data = swiper.touchEventsData;
8
-  const { params, touches, rtlTranslate: rtl } = swiper;
9
-  let e = event;
10
-  if (e.originalEvent) e = e.originalEvent;
11
-  if (!data.isTouched) {
12
-    if (data.startMoving && data.isScrolling) {
13
-      swiper.emit('touchMoveOpposite', e);
14
-    }
15
-    return;
16
-  }
17
-  if (data.isTouchEvent && e.type !== 'touchmove') return;
18
-  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
19
-  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
20
-  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
21
-  if (e.preventedByNestedSwiper) {
22
-    touches.startX = pageX;
23
-    touches.startY = pageY;
24
-    return;
25
-  }
26
-  if (!swiper.allowTouchMove) {
27
-    // isMoved = true;
28
-    swiper.allowClick = false;
29
-    if (data.isTouched) {
30
-      Utils.extend(touches, {
31
-        startX: pageX,
32
-        startY: pageY,
33
-        currentX: pageX,
34
-        currentY: pageY,
35
-      });
36
-      data.touchStartTime = Utils.now();
37
-    }
38
-    return;
39
-  }
40
-  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
41
-    if (swiper.isVertical()) {
42
-      // Vertical
43
-      if (
44
-        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
45
-        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
46
-      ) {
47
-        data.isTouched = false;
48
-        data.isMoved = false;
49
-        return;
50
-      }
51
-    } else if (
52
-      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
53
-      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
54
-    ) {
55
-      return;
56
-    }
57
-  }
58
-  if (data.isTouchEvent && document.activeElement) {
59
-    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
60
-      data.isMoved = true;
61
-      swiper.allowClick = false;
62
-      return;
63
-    }
64
-  }
65
-  if (data.allowTouchCallbacks) {
66
-    swiper.emit('touchMove', e);
67
-  }
68
-  if (e.targetTouches && e.targetTouches.length > 1) return;
69
-
70
-  touches.currentX = pageX;
71
-  touches.currentY = pageY;
72
-
73
-  const diffX = touches.currentX - touches.startX;
74
-  const diffY = touches.currentY - touches.startY;
75
-  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;
76
-
77
-  if (typeof data.isScrolling === 'undefined') {
78
-    let touchAngle;
79
-    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
80
-      data.isScrolling = false;
81
-    } else {
82
-      // eslint-disable-next-line
83
-      if ((diffX * diffX) + (diffY * diffY) >= 25) {
84
-        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
85
-        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
86
-      }
87
-    }
88
-  }
89
-  if (data.isScrolling) {
90
-    swiper.emit('touchMoveOpposite', e);
91
-  }
92
-  if (typeof data.startMoving === 'undefined') {
93
-    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
94
-      data.startMoving = true;
95
-    }
96
-  }
97
-  if (data.isScrolling) {
98
-    data.isTouched = false;
99
-    return;
100
-  }
101
-  if (!data.startMoving) {
102
-    return;
103
-  }
104
-  swiper.allowClick = false;
105
-  if (!params.cssMode && e.cancelable) {
106
-    e.preventDefault();
107
-  }
108
-  if (params.touchMoveStopPropagation && !params.nested) {
109
-    e.stopPropagation();
110
-  }
111
-
112
-  if (!data.isMoved) {
113
-    if (params.loop) {
114
-      swiper.loopFix();
115
-    }
116
-    data.startTranslate = swiper.getTranslate();
117
-    swiper.setTransition(0);
118
-    if (swiper.animating) {
119
-      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
120
-    }
121
-    data.allowMomentumBounce = false;
122
-    // Grab Cursor
123
-    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
124
-      swiper.setGrabCursor(true);
125
-    }
126
-    swiper.emit('sliderFirstMove', e);
127
-  }
128
-  swiper.emit('sliderMove', e);
129
-  data.isMoved = true;
130
-
131
-  let diff = swiper.isHorizontal() ? diffX : diffY;
132
-  touches.diff = diff;
133
-
134
-  diff *= params.touchRatio;
135
-  if (rtl) diff = -diff;
136
-
137
-  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
138
-  data.currentTranslate = diff + data.startTranslate;
139
-
140
-  let disableParentSwiper = true;
141
-  let resistanceRatio = params.resistanceRatio;
142
-  if (params.touchReleaseOnEdges) {
143
-    resistanceRatio = 0;
144
-  }
145
-  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
146
-    disableParentSwiper = false;
147
-    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);
148
-  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
149
-    disableParentSwiper = false;
150
-    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);
151
-  }
152
-
153
-  if (disableParentSwiper) {
154
-    e.preventedByNestedSwiper = true;
155
-  }
156
-
157
-  // Directions locks
158
-  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
159
-    data.currentTranslate = data.startTranslate;
160
-  }
161
-  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
162
-    data.currentTranslate = data.startTranslate;
163
-  }
164
-
165
-
166
-  // Threshold
167
-  if (params.threshold > 0) {
168
-    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
169
-      if (!data.allowThresholdMove) {
170
-        data.allowThresholdMove = true;
171
-        touches.startX = touches.currentX;
172
-        touches.startY = touches.currentY;
173
-        data.currentTranslate = data.startTranslate;
174
-        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
175
-        return;
176
-      }
177
-    } else {
178
-      data.currentTranslate = data.startTranslate;
179
-      return;
180
-    }
181
-  }
182
-
183
-  if (!params.followFinger || params.cssMode) return;
184
-
185
-  // Update active index in free mode
186
-  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
187
-    swiper.updateActiveIndex();
188
-    swiper.updateSlidesClasses();
189
-  }
190
-  if (params.freeMode) {
191
-    // Velocity
192
-    if (data.velocities.length === 0) {
193
-      data.velocities.push({
194
-        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
195
-        time: data.touchStartTime,
196
-      });
197
-    }
198
-    data.velocities.push({
199
-      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
200
-      time: Utils.now(),
201
-    });
202
-  }
203
-  // Update progress
204
-  swiper.updateProgress(data.currentTranslate);
205
-  // Update translate
206
-  swiper.setTranslate(data.currentTranslate);
207
-}
208 0
deleted file mode 100644
... ...
@@ -1,81 +0,0 @@
1
-import { window, document } from 'ssr-window';
2
-import $ from '../../../utils/dom';
3
-import Utils from '../../../utils/utils';
4
-
5
-export default function (event) {
6
-  const swiper = this;
7
-  const data = swiper.touchEventsData;
8
-  const { params, touches } = swiper;
9
-
10
-  if (swiper.animating && params.preventInteractionOnTransition) {
11
-    return;
12
-  }
13
-  let e = event;
14
-  if (e.originalEvent) e = e.originalEvent;
15
-  const $targetEl = $(e.target);
16
-
17
-  if (params.touchEventsTarget === 'wrapper') {
18
-    if (!$targetEl.closest(swiper.wrapperEl).length) return;
19
-  }
20
-  data.isTouchEvent = e.type === 'touchstart';
21
-  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
22
-  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
23
-  if (data.isTouched && data.isMoved) return;
24
-  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
25
-    swiper.allowClick = true;
26
-    return;
27
-  }
28
-  if (params.swipeHandler) {
29
-    if (!$targetEl.closest(params.swipeHandler)[0]) return;
30
-  }
31
-
32
-  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
33
-  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
34
-  const startX = touches.currentX;
35
-  const startY = touches.currentY;
36
-
37
-  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
38
-
39
-  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
40
-  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
41
-  if (
42
-    edgeSwipeDetection
43
-    && ((startX <= edgeSwipeThreshold)
44
-    || (startX >= window.screen.width - edgeSwipeThreshold))
45
-  ) {
46
-    return;
47
-  }
48
-
49
-  Utils.extend(data, {
50
-    isTouched: true,
51
-    isMoved: false,
52
-    allowTouchCallbacks: true,
53
-    isScrolling: undefined,
54
-    startMoving: undefined,
55
-  });
56
-
57
-  touches.startX = startX;
58
-  touches.startY = startY;
59
-  data.touchStartTime = Utils.now();
60
-  swiper.allowClick = true;
61
-  swiper.updateSize();
62
-  swiper.swipeDirection = undefined;
63
-  if (params.threshold > 0) data.allowThresholdMove = false;
64
-  if (e.type !== 'touchstart') {
65
-    let preventDefault = true;
66
-    if ($targetEl.is(data.formElements)) preventDefault = false;
67
-    if (
68
-      document.activeElement
69
-      && $(document.activeElement).is(data.formElements)
70
-      && document.activeElement !== $targetEl[0]
71
-    ) {
72
-      document.activeElement.blur();
73
-    }
74
-
75
-    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
76
-    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
77
-      e.preventDefault();
78
-    }
79
-  }
80
-  swiper.emit('touchStart', e);
81
-}
82 0
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-import setGrabCursor from './setGrabCursor';
2
-import unsetGrabCursor from './unsetGrabCursor';
3
-
4
-export default {
5
-  setGrabCursor,
6
-  unsetGrabCursor,
7
-};
8 0
deleted file mode 100644
... ...
@@ -1,11 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function (moving) {
4
-  const swiper = this;
5
-  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
6
-  const el = swiper.el;
7
-  el.style.cursor = 'move';
8
-  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
9
-  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
10
-  el.style.cursor = moving ? 'grabbing' : 'grab';
11
-}
12 0
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function () {
4
-  const swiper = this;
5
-  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
6
-  swiper.el.style.cursor = '';
7
-}
8 0
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-import loadImage from './loadImage';
2
-import preloadImages from './preloadImages';
3
-
4
-export default {
5
-  loadImage,
6
-  preloadImages,
7
-};
8 0
deleted file mode 100644
... ...
@@ -1,32 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import $ from '../../../utils/dom';
3
-
4
-export default function (imageEl, src, srcset, sizes, checkForComplete, callback) {
5
-  let image;
6
-  function onReady() {
7
-    if (callback) callback();
8
-  }
9
-  const isPicture = $(imageEl).parent('picture')[0];
10
-
11
-  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
12
-    if (src) {
13
-      image = new window.Image();
14
-      image.onload = onReady;
15
-      image.onerror = onReady;
16
-      if (sizes) {
17
-        image.sizes = sizes;
18
-      }
19
-      if (srcset) {
20
-        image.srcset = srcset;
21
-      }
22
-      if (src) {
23
-        image.src = src;
24
-      }
25
-    } else {
26
-      onReady();
27
-    }
28
-  } else {
29
-    // image already loaded...
30
-    onReady();
31
-  }
32
-}
33 0
deleted file mode 100644
... ...
@@ -1,23 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-  swiper.imagesToLoad = swiper.$el.find('img');
4
-  function onReady() {
5
-    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
6
-    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
7
-    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
8
-      if (swiper.params.updateOnImagesReady) swiper.update();
9
-      swiper.emit('imagesReady');
10
-    }
11
-  }
12
-  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
13
-    const imageEl = swiper.imagesToLoad[i];
14
-    swiper.loadImage(
15
-      imageEl,
16
-      imageEl.currentSrc || imageEl.getAttribute('src'),
17
-      imageEl.srcset || imageEl.getAttribute('srcset'),
18
-      imageEl.sizes || imageEl.getAttribute('sizes'),
19
-      true,
20
-      onReady
21
-    );
22
-  }
23
-}
24 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-import loopCreate from './loopCreate';
2
-import loopFix from './loopFix';
3
-import loopDestroy from './loopDestroy';
4
-
5
-export default {
6
-  loopCreate,
7
-  loopFix,
8
-  loopDestroy,
9
-};
10 0
deleted file mode 100644
... ...
@@ -1,45 +0,0 @@
1
-import { document } from 'ssr-window';
2
-import $ from '../../../utils/dom';
3
-
4
-export default function () {
5
-  const swiper = this;
6
-  const { params, $wrapperEl } = swiper;
7
-  // Remove duplicated slides
8
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
9
-
10
-  let slides = $wrapperEl.children(`.${params.slideClass}`);
11
-
12
-  if (params.loopFillGroupWithBlank) {
13
-    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
14
-    if (blankSlidesNum !== params.slidesPerGroup) {
15
-      for (let i = 0; i < blankSlidesNum; i += 1) {
16
-        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
17
-        $wrapperEl.append(blankNode);
18
-      }
19
-      slides = $wrapperEl.children(`.${params.slideClass}`);
20
-    }
21
-  }
22
-
23
-  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
24
-
25
-  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
26
-  swiper.loopedSlides += params.loopAdditionalSlides;
27
-  if (swiper.loopedSlides > slides.length) {
28
-    swiper.loopedSlides = slides.length;
29
-  }
30
-
31
-  const prependSlides = [];
32
-  const appendSlides = [];
33
-  slides.each((index, el) => {
34
-    const slide = $(el);
35
-    if (index < swiper.loopedSlides) appendSlides.push(el);
36
-    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);
37
-    slide.attr('data-swiper-slide-index', index);
38
-  });
39
-  for (let i = 0; i < appendSlides.length; i += 1) {
40
-    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
41
-  }
42
-  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
43
-    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
44
-  }
45
-}
46 0
deleted file mode 100644
... ...
@@ -1,6 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-  const { $wrapperEl, params, slides } = swiper;
4
-  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
5
-  slides.removeAttr('data-swiper-slide-index');
6
-}
7 0
deleted file mode 100644
... ...
@@ -1,37 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-
4
-  swiper.emit('beforeLoopFix');
5
-
6
-  const {
7
-    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,
8
-  } = swiper;
9
-  let newIndex;
10
-  swiper.allowSlidePrev = true;
11
-  swiper.allowSlideNext = true;
12
-
13
-  const snapTranslate = -snapGrid[activeIndex];
14
-  const diff = snapTranslate - swiper.getTranslate();
15
-
16
-  // Fix For Negative Oversliding
17
-  if (activeIndex < loopedSlides) {
18
-    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
19
-    newIndex += loopedSlides;
20
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
21
-    if (slideChanged && diff !== 0) {
22
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
23
-    }
24
-  } else if (activeIndex >= slides.length - loopedSlides) {
25
-    // Fix For Positive Oversliding
26
-    newIndex = -slides.length + activeIndex + loopedSlides;
27
-    newIndex += loopedSlides;
28
-    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
29
-    if (slideChanged && diff !== 0) {
30
-      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
31
-    }
32
-  }
33
-  swiper.allowSlidePrev = allowSlidePrev;
34
-  swiper.allowSlideNext = allowSlideNext;
35
-
36
-  swiper.emit('loopFix');
37
-}
38 0
deleted file mode 100644
... ...
@@ -1,54 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function (index, slides) {
4
-  const swiper = this;
5
-  const { $wrapperEl, params, activeIndex } = swiper;
6
-  let activeIndexBuffer = activeIndex;
7
-  if (params.loop) {
8
-    activeIndexBuffer -= swiper.loopedSlides;
9
-    swiper.loopDestroy();
10
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
11
-  }
12
-  const baseLength = swiper.slides.length;
13
-  if (index <= 0) {
14
-    swiper.prependSlide(slides);
15
-    return;
16
-  }
17
-  if (index >= baseLength) {
18
-    swiper.appendSlide(slides);
19
-    return;
20
-  }
21
-  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
22
-
23
-  const slidesBuffer = [];
24
-  for (let i = baseLength - 1; i >= index; i -= 1) {
25
-    const currentSlide = swiper.slides.eq(i);
26
-    currentSlide.remove();
27
-    slidesBuffer.unshift(currentSlide);
28
-  }
29
-
30
-  if (typeof slides === 'object' && 'length' in slides) {
31
-    for (let i = 0; i < slides.length; i += 1) {
32
-      if (slides[i]) $wrapperEl.append(slides[i]);
33
-    }
34
-    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
35
-  } else {
36
-    $wrapperEl.append(slides);
37
-  }
38
-
39
-  for (let i = 0; i < slidesBuffer.length; i += 1) {
40
-    $wrapperEl.append(slidesBuffer[i]);
41
-  }
42
-
43
-  if (params.loop) {
44
-    swiper.loopCreate();
45
-  }
46
-  if (!(params.observer && Support.observer)) {
47
-    swiper.update();
48
-  }
49
-  if (params.loop) {
50
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
51
-  } else {
52
-    swiper.slideTo(newActiveIndex, 0, false);
53
-  }
54
-}
55 0
deleted file mode 100644
... ...
@@ -1,22 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function (slides) {
4
-  const swiper = this;
5
-  const { $wrapperEl, params } = swiper;
6
-  if (params.loop) {
7
-    swiper.loopDestroy();
8
-  }
9
-  if (typeof slides === 'object' && 'length' in slides) {
10
-    for (let i = 0; i < slides.length; i += 1) {
11
-      if (slides[i]) $wrapperEl.append(slides[i]);
12
-    }
13
-  } else {
14
-    $wrapperEl.append(slides);
15
-  }
16
-  if (params.loop) {
17
-    swiper.loopCreate();
18
-  }
19
-  if (!(params.observer && Support.observer)) {
20
-    swiper.update();
21
-  }
22
-}
23 0
deleted file mode 100644
... ...
@@ -1,13 +0,0 @@
1
-import appendSlide from './appendSlide';
2
-import prependSlide from './prependSlide';
3
-import addSlide from './addSlide';
4
-import removeSlide from './removeSlide';
5
-import removeAllSlides from './removeAllSlides';
6
-
7
-export default {
8
-  appendSlide,
9
-  prependSlide,
10
-  addSlide,
11
-  removeSlide,
12
-  removeAllSlides,
13
-};
14 0
deleted file mode 100644
... ...
@@ -1,26 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function (slides) {
4
-  const swiper = this;
5
-  const { params, $wrapperEl, activeIndex } = swiper;
6
-
7
-  if (params.loop) {
8
-    swiper.loopDestroy();
9
-  }
10
-  let newActiveIndex = activeIndex + 1;
11
-  if (typeof slides === 'object' && 'length' in slides) {
12
-    for (let i = 0; i < slides.length; i += 1) {
13
-      if (slides[i]) $wrapperEl.prepend(slides[i]);
14
-    }
15
-    newActiveIndex = activeIndex + slides.length;
16
-  } else {
17
-    $wrapperEl.prepend(slides);
18
-  }
19
-  if (params.loop) {
20
-    swiper.loopCreate();
21
-  }
22
-  if (!(params.observer && Support.observer)) {
23
-    swiper.update();
24
-  }
25
-  swiper.slideTo(newActiveIndex, 0, false);
26
-}
27 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-
4
-  const slidesIndexes = [];
5
-  for (let i = 0; i < swiper.slides.length; i += 1) {
6
-    slidesIndexes.push(i);
7
-  }
8
-  swiper.removeSlide(slidesIndexes);
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,42 +0,0 @@
1
-import Support from '../../../utils/support';
2
-
3
-export default function (slidesIndexes) {
4
-  const swiper = this;
5
-  const { params, $wrapperEl, activeIndex } = swiper;
6
-
7
-  let activeIndexBuffer = activeIndex;
8
-  if (params.loop) {
9
-    activeIndexBuffer -= swiper.loopedSlides;
10
-    swiper.loopDestroy();
11
-    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
12
-  }
13
-  let newActiveIndex = activeIndexBuffer;
14
-  let indexToRemove;
15
-
16
-  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
17
-    for (let i = 0; i < slidesIndexes.length; i += 1) {
18
-      indexToRemove = slidesIndexes[i];
19
-      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
20
-      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
21
-    }
22
-    newActiveIndex = Math.max(newActiveIndex, 0);
23
-  } else {
24
-    indexToRemove = slidesIndexes;
25
-    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
26
-    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
27
-    newActiveIndex = Math.max(newActiveIndex, 0);
28
-  }
29
-
30
-  if (params.loop) {
31
-    swiper.loopCreate();
32
-  }
33
-
34
-  if (!(params.observer && Support.observer)) {
35
-    swiper.update();
36
-  }
37
-  if (params.loop) {
38
-    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
39
-  } else {
40
-    swiper.slideTo(newActiveIndex, 0, false);
41
-  }
42
-}
43 0
deleted file mode 100644
... ...
@@ -1,17 +0,0 @@
1
-import slideTo from './slideTo';
2
-import slideToLoop from './slideToLoop';
3
-import slideNext from './slideNext';
4
-import slidePrev from './slidePrev';
5
-import slideReset from './slideReset';
6
-import slideToClosest from './slideToClosest';
7
-import slideToClickedSlide from './slideToClickedSlide';
8
-
9
-export default {
10
-  slideTo,
11
-  slideToLoop,
12
-  slideNext,
13
-  slidePrev,
14
-  slideReset,
15
-  slideToClosest,
16
-  slideToClickedSlide,
17
-};
18 0
deleted file mode 100644
... ...
@@ -1,13 +0,0 @@
1
-/* eslint no-unused-vars: "off" */
2
-export default function (speed = this.params.speed, runCallbacks = true, internal) {
3
-  const swiper = this;
4
-  const { params, animating } = swiper;
5
-  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
6
-  if (params.loop) {
7
-    if (animating) return false;
8
-    swiper.loopFix();
9
-    // eslint-disable-next-line
10
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
11
-  }
12
-  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
13
-}
14 0
deleted file mode 100644
... ...
@@ -1,36 +0,0 @@
1
-/* eslint no-unused-vars: "off" */
2
-export default function (speed = this.params.speed, runCallbacks = true, internal) {
3
-  const swiper = this;
4
-  const {
5
-    params, animating, snapGrid, slidesGrid, rtlTranslate,
6
-  } = swiper;
7
-
8
-  if (params.loop) {
9
-    if (animating) return false;
10
-    swiper.loopFix();
11
-    // eslint-disable-next-line
12
-    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
13
-  }
14
-  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
15
-  function normalize(val) {
16
-    if (val < 0) return -Math.floor(Math.abs(val));
17
-    return Math.floor(val);
18
-  }
19
-  const normalizedTranslate = normalize(translate);
20
-  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
21
-  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
22
-
23
-  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
24
-  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
25
-  if (typeof prevSnap === 'undefined' && params.cssMode) {
26
-    snapGrid.forEach((snap) => {
27
-      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
28
-    });
29
-  }
30
-  let prevIndex;
31
-  if (typeof prevSnap !== 'undefined') {
32
-    prevIndex = slidesGrid.indexOf(prevSnap);
33
-    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
34
-  }
35
-  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
36
-}
37 0
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-/* eslint no-unused-vars: "off" */
2
-export default function (speed = this.params.speed, runCallbacks = true, internal) {
3
-  const swiper = this;
4
-  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
5
-}
6 0
deleted file mode 100644
... ...
@@ -1,123 +0,0 @@
1
-export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
2
-  const swiper = this;
3
-  let slideIndex = index;
4
-  if (slideIndex < 0) slideIndex = 0;
5
-
6
-  const {
7
-    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,
8
-  } = swiper;
9
-  if (swiper.animating && params.preventInteractionOnTransition) {
10
-    return false;
11
-  }
12
-
13
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
14
-  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
15
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
16
-
17
-  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
18
-    swiper.emit('beforeSlideChangeStart');
19
-  }
20
-
21
-  const translate = -snapGrid[snapIndex];
22
-
23
-  // Update progress
24
-  swiper.updateProgress(translate);
25
-
26
-  // Normalize slideIndex
27
-  if (params.normalizeSlideIndex) {
28
-    for (let i = 0; i < slidesGrid.length; i += 1) {
29
-      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
30
-        slideIndex = i;
31
-      }
32
-    }
33
-  }
34
-  // Directions locks
35
-  if (swiper.initialized && slideIndex !== activeIndex) {
36
-    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
37
-      return false;
38
-    }
39
-    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
40
-      if ((activeIndex || 0) !== slideIndex) return false;
41
-    }
42
-  }
43
-
44
-  let direction;
45
-  if (slideIndex > activeIndex) direction = 'next';
46
-  else if (slideIndex < activeIndex) direction = 'prev';
47
-  else direction = 'reset';
48
-
49
-
50
-  // Update Index
51
-  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
52
-    swiper.updateActiveIndex(slideIndex);
53
-    // Update Height
54
-    if (params.autoHeight) {
55
-      swiper.updateAutoHeight();
56
-    }
57
-    swiper.updateSlidesClasses();
58
-    if (params.effect !== 'slide') {
59
-      swiper.setTranslate(translate);
60
-    }
61
-    if (direction !== 'reset') {
62
-      swiper.transitionStart(runCallbacks, direction);
63
-      swiper.transitionEnd(runCallbacks, direction);
64
-    }
65
-    return false;
66
-  }
67
-  if (params.cssMode) {
68
-    const isH = swiper.isHorizontal();
69
-    let t = -translate;
70
-    if (rtl) {
71
-      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
72
-    }
73
-    if (speed === 0) {
74
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
75
-    } else {
76
-      // eslint-disable-next-line
77
-      if (wrapperEl.scrollTo) {
78
-        wrapperEl.scrollTo({
79
-          [isH ? 'left' : 'top']: t,
80
-          behavior: 'smooth',
81
-        });
82
-      } else {
83
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
84
-      }
85
-    }
86
-    return true;
87
-  }
88
-
89
-  if (speed === 0) {
90
-    swiper.setTransition(0);
91
-    swiper.setTranslate(translate);
92
-    swiper.updateActiveIndex(slideIndex);
93
-    swiper.updateSlidesClasses();
94
-    swiper.emit('beforeTransitionStart', speed, internal);
95
-    swiper.transitionStart(runCallbacks, direction);
96
-    swiper.transitionEnd(runCallbacks, direction);
97
-  } else {
98
-    swiper.setTransition(speed);
99
-    swiper.setTranslate(translate);
100
-    swiper.updateActiveIndex(slideIndex);
101
-    swiper.updateSlidesClasses();
102
-    swiper.emit('beforeTransitionStart', speed, internal);
103
-    swiper.transitionStart(runCallbacks, direction);
104
-    if (!swiper.animating) {
105
-      swiper.animating = true;
106
-      if (!swiper.onSlideToWrapperTransitionEnd) {
107
-        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
108
-          if (!swiper || swiper.destroyed) return;
109
-          if (e.target !== this) return;
110
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
111
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
112
-          swiper.onSlideToWrapperTransitionEnd = null;
113
-          delete swiper.onSlideToWrapperTransitionEnd;
114
-          swiper.transitionEnd(runCallbacks, direction);
115
-        };
116
-      }
117
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
118
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
119
-    }
120
-  }
121
-
122
-  return true;
123
-}
124 0
deleted file mode 100644
... ...
@@ -1,47 +0,0 @@
1
-import $ from '../../../utils/dom';
2
-import Utils from '../../../utils/utils';
3
-
4
-export default function () {
5
-  const swiper = this;
6
-  const { params, $wrapperEl } = swiper;
7
-
8
-  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
9
-  let slideToIndex = swiper.clickedIndex;
10
-  let realIndex;
11
-  if (params.loop) {
12
-    if (swiper.animating) return;
13
-    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
14
-    if (params.centeredSlides) {
15
-      if (
16
-        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
17
-        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
18
-      ) {
19
-        swiper.loopFix();
20
-        slideToIndex = $wrapperEl
21
-          .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
22
-          .eq(0)
23
-          .index();
24
-
25
-        Utils.nextTick(() => {
26
-          swiper.slideTo(slideToIndex);
27
-        });
28
-      } else {
29
-        swiper.slideTo(slideToIndex);
30
-      }
31
-    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
32
-      swiper.loopFix();
33
-      slideToIndex = $wrapperEl
34
-        .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
35
-        .eq(0)
36
-        .index();
37
-
38
-      Utils.nextTick(() => {
39
-        swiper.slideTo(slideToIndex);
40
-      });
41
-    } else {
42
-      swiper.slideTo(slideToIndex);
43
-    }
44
-  } else {
45
-    swiper.slideTo(slideToIndex);
46
-  }
47
-}
48 0
deleted file mode 100644
... ...
@@ -1,31 +0,0 @@
1
-/* eslint no-unused-vars: "off" */
2
-export default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
3
-  const swiper = this;
4
-  let index = swiper.activeIndex;
5
-  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
6
-  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
7
-
8
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9
-
10
-  if (translate >= swiper.snapGrid[snapIndex]) {
11
-    // The current translate is on or after the current snap index, so the choice
12
-    // is between the current index and the one after it.
13
-    const currentSnap = swiper.snapGrid[snapIndex];
14
-    const nextSnap = swiper.snapGrid[snapIndex + 1];
15
-    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
16
-      index += swiper.params.slidesPerGroup;
17
-    }
18
-  } else {
19
-    // The current translate is before the current snap index, so the choice
20
-    // is between the current index and the one before it.
21
-    const prevSnap = swiper.snapGrid[snapIndex - 1];
22
-    const currentSnap = swiper.snapGrid[snapIndex];
23
-    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {
24
-      index -= swiper.params.slidesPerGroup;
25
-    }
26
-  }
27
-  index = Math.max(index, 0);
28
-  index = Math.min(index, swiper.slidesGrid.length - 1);
29
-
30
-  return swiper.slideTo(index, speed, runCallbacks, internal);
31
-}
32 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
2
-  const swiper = this;
3
-  let newIndex = index;
4
-  if (swiper.params.loop) {
5
-    newIndex += swiper.loopedSlides;
6
-  }
7
-
8
-  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-import setTransition from './setTransition';
2
-import transitionStart from './transitionStart';
3
-import transitionEnd from './transitionEnd';
4
-
5
-export default {
6
-  setTransition,
7
-  transitionStart,
8
-  transitionEnd,
9
-};
10 0
deleted file mode 100644
... ...
@@ -1,9 +0,0 @@
1
-export default function (duration, byController) {
2
-  const swiper = this;
3
-
4
-  if (!swiper.params.cssMode) {
5
-    swiper.$wrapperEl.transition(duration);
6
-  }
7
-
8
-  swiper.emit('setTransition', duration, byController);
9
-}
10 0
deleted file mode 100644
... ...
@@ -1,29 +0,0 @@
1
-export default function (runCallbacks = true, direction) {
2
-  const swiper = this;
3
-  const { activeIndex, previousIndex, params } = swiper;
4
-  swiper.animating = false;
5
-  if (params.cssMode) return;
6
-  swiper.setTransition(0);
7
-
8
-  let dir = direction;
9
-  if (!dir) {
10
-    if (activeIndex > previousIndex) dir = 'next';
11
-    else if (activeIndex < previousIndex) dir = 'prev';
12
-    else dir = 'reset';
13
-  }
14
-
15
-  swiper.emit('transitionEnd');
16
-
17
-  if (runCallbacks && activeIndex !== previousIndex) {
18
-    if (dir === 'reset') {
19
-      swiper.emit('slideResetTransitionEnd');
20
-      return;
21
-    }
22
-    swiper.emit('slideChangeTransitionEnd');
23
-    if (dir === 'next') {
24
-      swiper.emit('slideNextTransitionEnd');
25
-    } else {
26
-      swiper.emit('slidePrevTransitionEnd');
27
-    }
28
-  }
29
-}
30 0
deleted file mode 100644
... ...
@@ -1,30 +0,0 @@
1
-export default function (runCallbacks = true, direction) {
2
-  const swiper = this;
3
-  const { activeIndex, params, previousIndex } = swiper;
4
-  if (params.cssMode) return;
5
-  if (params.autoHeight) {
6
-    swiper.updateAutoHeight();
7
-  }
8
-
9
-  let dir = direction;
10
-  if (!dir) {
11
-    if (activeIndex > previousIndex) dir = 'next';
12
-    else if (activeIndex < previousIndex) dir = 'prev';
13
-    else dir = 'reset';
14
-  }
15
-
16
-  swiper.emit('transitionStart');
17
-
18
-  if (runCallbacks && activeIndex !== previousIndex) {
19
-    if (dir === 'reset') {
20
-      swiper.emit('slideResetTransitionStart');
21
-      return;
22
-    }
23
-    swiper.emit('slideChangeTransitionStart');
24
-    if (dir === 'next') {
25
-      swiper.emit('slideNextTransitionStart');
26
-    } else {
27
-      swiper.emit('slidePrevTransitionStart');
28
-    }
29
-  }
30
-}
31 0
deleted file mode 100644
... ...
@@ -1,21 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function (axis = this.isHorizontal() ? 'x' : 'y') {
4
-  const swiper = this;
5
-
6
-  const {
7
-    params, rtlTranslate: rtl, translate, $wrapperEl,
8
-  } = swiper;
9
-
10
-  if (params.virtualTranslate) {
11
-    return rtl ? -translate : translate;
12
-  }
13
-  if (params.cssMode) {
14
-    return translate;
15
-  }
16
-
17
-  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
18
-  if (rtl) currentTranslate = -currentTranslate;
19
-
20
-  return currentTranslate || 0;
21
-}
22 0
deleted file mode 100644
... ...
@@ -1,13 +0,0 @@
1
-import getTranslate from './getTranslate';
2
-import setTranslate from './setTranslate';
3
-import minTranslate from './minTranslate';
4
-import maxTranslate from './maxTranslate';
5
-import translateTo from './translateTo';
6
-
7
-export default {
8
-  getTranslate,
9
-  setTranslate,
10
-  minTranslate,
11
-  maxTranslate,
12
-  translateTo,
13
-};
14 0
deleted file mode 100644
... ...
@@ -1,3 +0,0 @@
1
-export default function () {
2
-  return (-this.snapGrid[this.snapGrid.length - 1]);
3
-}
4 0
deleted file mode 100644
... ...
@@ -1,3 +0,0 @@
1
-export default function () {
2
-  return (-this.snapGrid[0]);
3
-}
4 0
deleted file mode 100644
... ...
@@ -1,42 +0,0 @@
1
-export default function (translate, byController) {
2
-  const swiper = this;
3
-  const {
4
-    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,
5
-  } = swiper;
6
-  let x = 0;
7
-  let y = 0;
8
-  const z = 0;
9
-
10
-  if (swiper.isHorizontal()) {
11
-    x = rtl ? -translate : translate;
12
-  } else {
13
-    y = translate;
14
-  }
15
-
16
-  if (params.roundLengths) {
17
-    x = Math.floor(x);
18
-    y = Math.floor(y);
19
-  }
20
-
21
-  if (params.cssMode) {
22
-    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
23
-  } else if (!params.virtualTranslate) {
24
-    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
25
-  }
26
-  swiper.previousTranslate = swiper.translate;
27
-  swiper.translate = swiper.isHorizontal() ? x : y;
28
-
29
-  // Check if we need to update progress
30
-  let newProgress;
31
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
32
-  if (translatesDiff === 0) {
33
-    newProgress = 0;
34
-  } else {
35
-    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
36
-  }
37
-  if (newProgress !== progress) {
38
-    swiper.updateProgress(translate);
39
-  }
40
-
41
-  swiper.emit('setTranslate', swiper.translate, byController);
42
-}
43 0
deleted file mode 100644
... ...
@@ -1,76 +0,0 @@
1
-export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
2
-  const swiper = this;
3
-
4
-  const {
5
-    params,
6
-    wrapperEl,
7
-  } = swiper;
8
-
9
-  if (swiper.animating && params.preventInteractionOnTransition) {
10
-    return false;
11
-  }
12
-
13
-  const minTranslate = swiper.minTranslate();
14
-  const maxTranslate = swiper.maxTranslate();
15
-  let newTranslate;
16
-  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
17
-  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
18
-  else newTranslate = translate;
19
-
20
-  // Update progress
21
-  swiper.updateProgress(newTranslate);
22
-
23
-  if (params.cssMode) {
24
-    const isH = swiper.isHorizontal();
25
-    if (speed === 0) {
26
-      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
27
-    } else {
28
-      // eslint-disable-next-line
29
-      if (wrapperEl.scrollTo) {
30
-        wrapperEl.scrollTo({
31
-          [isH ? 'left' : 'top']: -newTranslate,
32
-          behavior: 'smooth',
33
-        });
34
-      } else {
35
-        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
36
-      }
37
-    }
38
-    return true;
39
-  }
40
-
41
-  if (speed === 0) {
42
-    swiper.setTransition(0);
43
-    swiper.setTranslate(newTranslate);
44
-    if (runCallbacks) {
45
-      swiper.emit('beforeTransitionStart', speed, internal);
46
-      swiper.emit('transitionEnd');
47
-    }
48
-  } else {
49
-    swiper.setTransition(speed);
50
-    swiper.setTranslate(newTranslate);
51
-    if (runCallbacks) {
52
-      swiper.emit('beforeTransitionStart', speed, internal);
53
-      swiper.emit('transitionStart');
54
-    }
55
-    if (!swiper.animating) {
56
-      swiper.animating = true;
57
-      if (!swiper.onTranslateToWrapperTransitionEnd) {
58
-        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
59
-          if (!swiper || swiper.destroyed) return;
60
-          if (e.target !== this) return;
61
-          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
62
-          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
63
-          swiper.onTranslateToWrapperTransitionEnd = null;
64
-          delete swiper.onTranslateToWrapperTransitionEnd;
65
-          if (runCallbacks) {
66
-            swiper.emit('transitionEnd');
67
-          }
68
-        };
69
-      }
70
-      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
71
-      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
72
-    }
73
-  }
74
-
75
-  return true;
76
-}
77 0
deleted file mode 100644
... ...
@@ -1,21 +0,0 @@
1
-import updateSize from './updateSize';
2
-import updateSlides from './updateSlides';
3
-import updateAutoHeight from './updateAutoHeight';
4
-import updateSlidesOffset from './updateSlidesOffset';
5
-import updateSlidesProgress from './updateSlidesProgress';
6
-import updateProgress from './updateProgress';
7
-import updateSlidesClasses from './updateSlidesClasses';
8
-import updateActiveIndex from './updateActiveIndex';
9
-import updateClickedSlide from './updateClickedSlide';
10
-
11
-export default {
12
-  updateSize,
13
-  updateSlides,
14
-  updateAutoHeight,
15
-  updateSlidesOffset,
16
-  updateSlidesProgress,
17
-  updateProgress,
18
-  updateSlidesClasses,
19
-  updateActiveIndex,
20
-  updateClickedSlide,
21
-};
22 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function (newActiveIndex) {
4
-  const swiper = this;
5
-  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
6
-  const {
7
-    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,
8
-  } = swiper;
9
-  let activeIndex = newActiveIndex;
10
-  let snapIndex;
11
-  if (typeof activeIndex === 'undefined') {
12
-    for (let i = 0; i < slidesGrid.length; i += 1) {
13
-      if (typeof slidesGrid[i + 1] !== 'undefined') {
14
-        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
15
-          activeIndex = i;
16
-        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
17
-          activeIndex = i + 1;
18
-        }
19
-      } else if (translate >= slidesGrid[i]) {
20
-        activeIndex = i;
21
-      }
22
-    }
23
-    // Normalize slideIndex
24
-    if (params.normalizeSlideIndex) {
25
-      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
26
-    }
27
-  }
28
-  if (snapGrid.indexOf(translate) >= 0) {
29
-    snapIndex = snapGrid.indexOf(translate);
30
-  } else {
31
-    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
32
-    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
33
-  }
34
-  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
35
-  if (activeIndex === previousIndex) {
36
-    if (snapIndex !== previousSnapIndex) {
37
-      swiper.snapIndex = snapIndex;
38
-      swiper.emit('snapIndexChange');
39
-    }
40
-    return;
41
-  }
42
-
43
-  // Get real index
44
-  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
45
-
46
-  Utils.extend(swiper, {
47
-    snapIndex,
48
-    realIndex,
49
-    previousIndex,
50
-    activeIndex,
51
-  });
52
-  swiper.emit('activeIndexChange');
53
-  swiper.emit('snapIndexChange');
54
-  if (previousRealIndex !== realIndex) {
55
-    swiper.emit('realIndexChange');
56
-  }
57
-  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
58
-    swiper.emit('slideChange');
59
-  }
60
-}
61 0
deleted file mode 100644
... ...
@@ -1,38 +0,0 @@
1
-export default function (speed) {
2
-  const swiper = this;
3
-  const activeSlides = [];
4
-  let newHeight = 0;
5
-  let i;
6
-  if (typeof speed === 'number') {
7
-    swiper.setTransition(speed);
8
-  } else if (speed === true) {
9
-    swiper.setTransition(swiper.params.speed);
10
-  }
11
-  // Find slides currently in view
12
-  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
13
-    if (swiper.params.centeredSlides) {
14
-      swiper.visibleSlides.each((index, slide) => {
15
-        activeSlides.push(slide);
16
-      });
17
-    } else {
18
-      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
19
-        const index = swiper.activeIndex + i;
20
-        if (index > swiper.slides.length) break;
21
-        activeSlides.push(swiper.slides.eq(index)[0]);
22
-      }
23
-    }
24
-  } else {
25
-    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
26
-  }
27
-
28
-  // Find new height from highest slide in view
29
-  for (i = 0; i < activeSlides.length; i += 1) {
30
-    if (typeof activeSlides[i] !== 'undefined') {
31
-      const height = activeSlides[i].offsetHeight;
32
-      newHeight = height > newHeight ? height : newHeight;
33
-    }
34
-  }
35
-
36
-  // Update Height
37
-  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);
38
-}
39 0
deleted file mode 100644
... ...
@@ -1,29 +0,0 @@
1
-import $ from '../../../utils/dom';
2
-
3
-export default function (e) {
4
-  const swiper = this;
5
-  const params = swiper.params;
6
-  const slide = $(e.target).closest(`.${params.slideClass}`)[0];
7
-  let slideFound = false;
8
-  if (slide) {
9
-    for (let i = 0; i < swiper.slides.length; i += 1) {
10
-      if (swiper.slides[i] === slide) slideFound = true;
11
-    }
12
-  }
13
-
14
-  if (slide && slideFound) {
15
-    swiper.clickedSlide = slide;
16
-    if (swiper.virtual && swiper.params.virtual.enabled) {
17
-      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
18
-    } else {
19
-      swiper.clickedIndex = $(slide).index();
20
-    }
21
-  } else {
22
-    swiper.clickedSlide = undefined;
23
-    swiper.clickedIndex = undefined;
24
-    return;
25
-  }
26
-  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
27
-    swiper.slideToClickedSlide();
28
-  }
29
-}
30 0
deleted file mode 100644
... ...
@@ -1,43 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function (translate) {
4
-  const swiper = this;
5
-  if (typeof translate === 'undefined') {
6
-    const multiplier = swiper.rtlTranslate ? -1 : 1;
7
-    // eslint-disable-next-line
8
-    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
9
-  }
10
-  const params = swiper.params;
11
-  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
12
-  let { progress, isBeginning, isEnd } = swiper;
13
-  const wasBeginning = isBeginning;
14
-  const wasEnd = isEnd;
15
-  if (translatesDiff === 0) {
16
-    progress = 0;
17
-    isBeginning = true;
18
-    isEnd = true;
19
-  } else {
20
-    progress = (translate - swiper.minTranslate()) / (translatesDiff);
21
-    isBeginning = progress <= 0;
22
-    isEnd = progress >= 1;
23
-  }
24
-  Utils.extend(swiper, {
25
-    progress,
26
-    isBeginning,
27
-    isEnd,
28
-  });
29
-
30
-  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);
31
-
32
-  if (isBeginning && !wasBeginning) {
33
-    swiper.emit('reachBeginning toEdge');
34
-  }
35
-  if (isEnd && !wasEnd) {
36
-    swiper.emit('reachEnd toEdge');
37
-  }
38
-  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
39
-    swiper.emit('fromEdge');
40
-  }
41
-
42
-  swiper.emit('progress', progress);
43
-}
44 0
deleted file mode 100644
... ...
@@ -1,31 +0,0 @@
1
-import Utils from '../../../utils/utils';
2
-
3
-export default function () {
4
-  const swiper = this;
5
-  let width;
6
-  let height;
7
-  const $el = swiper.$el;
8
-  if (typeof swiper.params.width !== 'undefined') {
9
-    width = swiper.params.width;
10
-  } else {
11
-    width = $el[0].clientWidth;
12
-  }
13
-  if (typeof swiper.params.height !== 'undefined') {
14
-    height = swiper.params.height;
15
-  } else {
16
-    height = $el[0].clientHeight;
17
-  }
18
-  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
19
-    return;
20
-  }
21
-
22
-  // Subtract paddings
23
-  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
24
-  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
25
-
26
-  Utils.extend(swiper, {
27
-    width,
28
-    height,
29
-    size: swiper.isHorizontal() ? width : height,
30
-  });
31
-}
32 0
deleted file mode 100644
... ...
@@ -1,313 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import Utils from '../../../utils/utils';
3
-
4
-export default function () {
5
-  const swiper = this;
6
-  const params = swiper.params;
7
-
8
-  const {
9
-    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
10
-  } = swiper;
11
-  const isVirtual = swiper.virtual && params.virtual.enabled;
12
-  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
13
-  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
14
-  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
15
-  let snapGrid = [];
16
-  const slidesGrid = [];
17
-  const slidesSizesGrid = [];
18
-
19
-  function slidesForMargin(slideIndex) {
20
-    if (!params.cssMode) return true;
21
-    if (slideIndex === slides.length - 1) {
22
-      return false;
23
-    }
24
-    return true;
25
-  }
26
-
27
-  let offsetBefore = params.slidesOffsetBefore;
28
-  if (typeof offsetBefore === 'function') {
29
-    offsetBefore = params.slidesOffsetBefore.call(swiper);
30
-  }
31
-
32
-  let offsetAfter = params.slidesOffsetAfter;
33
-  if (typeof offsetAfter === 'function') {
34
-    offsetAfter = params.slidesOffsetAfter.call(swiper);
35
-  }
36
-
37
-  const previousSnapGridLength = swiper.snapGrid.length;
38
-  const previousSlidesGridLength = swiper.snapGrid.length;
39
-
40
-  let spaceBetween = params.spaceBetween;
41
-  let slidePosition = -offsetBefore;
42
-  let prevSlideSize = 0;
43
-  let index = 0;
44
-  if (typeof swiperSize === 'undefined') {
45
-    return;
46
-  }
47
-  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
48
-    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
49
-  }
50
-
51
-  swiper.virtualSize = -spaceBetween;
52
-
53
-  // reset margins
54
-  if (rtl) slides.css({ marginLeft: '', marginTop: '' });
55
-  else slides.css({ marginRight: '', marginBottom: '' });
56
-
57
-  let slidesNumberEvenToRows;
58
-  if (params.slidesPerColumn > 1) {
59
-    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
60
-      slidesNumberEvenToRows = slidesLength;
61
-    } else {
62
-      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
63
-    }
64
-    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
65
-      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
66
-    }
67
-  }
68
-
69
-  // Calc slides
70
-  let slideSize;
71
-  const slidesPerColumn = params.slidesPerColumn;
72
-  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
73
-  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
74
-  for (let i = 0; i < slidesLength; i += 1) {
75
-    slideSize = 0;
76
-    const slide = slides.eq(i);
77
-    if (params.slidesPerColumn > 1) {
78
-      // Set slides order
79
-      let newSlideOrderIndex;
80
-      let column;
81
-      let row;
82
-      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
83
-        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
84
-        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
85
-        const columnsInGroup = groupIndex === 0
86
-          ? params.slidesPerGroup
87
-          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
88
-        row = Math.floor(slideIndexInGroup / columnsInGroup);
89
-        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
90
-
91
-        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
92
-        slide
93
-          .css({
94
-            '-webkit-box-ordinal-group': newSlideOrderIndex,
95
-            '-moz-box-ordinal-group': newSlideOrderIndex,
96
-            '-ms-flex-order': newSlideOrderIndex,
97
-            '-webkit-order': newSlideOrderIndex,
98
-            order: newSlideOrderIndex,
99
-          });
100
-      } else if (params.slidesPerColumnFill === 'column') {
101
-        column = Math.floor(i / slidesPerColumn);
102
-        row = i - (column * slidesPerColumn);
103
-        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
104
-          row += 1;
105
-          if (row >= slidesPerColumn) {
106
-            row = 0;
107
-            column += 1;
108
-          }
109
-        }
110
-      } else {
111
-        row = Math.floor(i / slidesPerRow);
112
-        column = i - (row * slidesPerRow);
113
-      }
114
-      slide.css(
115
-        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,
116
-        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)
117
-      );
118
-    }
119
-    if (slide.css('display') === 'none') continue; // eslint-disable-line
120
-
121
-    if (params.slidesPerView === 'auto') {
122
-      const slideStyles = window.getComputedStyle(slide[0], null);
123
-      const currentTransform = slide[0].style.transform;
124
-      const currentWebKitTransform = slide[0].style.webkitTransform;
125
-      if (currentTransform) {
126
-        slide[0].style.transform = 'none';
127
-      }
128
-      if (currentWebKitTransform) {
129
-        slide[0].style.webkitTransform = 'none';
130
-      }
131
-      if (params.roundLengths) {
132
-        slideSize = swiper.isHorizontal()
133
-          ? slide.outerWidth(true)
134
-          : slide.outerHeight(true);
135
-      } else {
136
-        // eslint-disable-next-line
137
-        if (swiper.isHorizontal()) {
138
-          const width = parseFloat(slideStyles.getPropertyValue('width'));
139
-          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
140
-          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
141
-          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
142
-          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
143
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
144
-          if (boxSizing && boxSizing === 'border-box') {
145
-            slideSize = width + marginLeft + marginRight;
146
-          } else {
147
-            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
148
-          }
149
-        } else {
150
-          const height = parseFloat(slideStyles.getPropertyValue('height'));
151
-          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
152
-          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
153
-          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
154
-          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
155
-          const boxSizing = slideStyles.getPropertyValue('box-sizing');
156
-          if (boxSizing && boxSizing === 'border-box') {
157
-            slideSize = height + marginTop + marginBottom;
158
-          } else {
159
-            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
160
-          }
161
-        }
162
-      }
163
-      if (currentTransform) {
164
-        slide[0].style.transform = currentTransform;
165
-      }
166
-      if (currentWebKitTransform) {
167
-        slide[0].style.webkitTransform = currentWebKitTransform;
168
-      }
169
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
170
-    } else {
171
-      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
172
-      if (params.roundLengths) slideSize = Math.floor(slideSize);
173
-
174
-      if (slides[i]) {
175
-        if (swiper.isHorizontal()) {
176
-          slides[i].style.width = `${slideSize}px`;
177
-        } else {
178
-          slides[i].style.height = `${slideSize}px`;
179
-        }
180
-      }
181
-    }
182
-    if (slides[i]) {
183
-      slides[i].swiperSlideSize = slideSize;
184
-    }
185
-    slidesSizesGrid.push(slideSize);
186
-
187
-
188
-    if (params.centeredSlides) {
189
-      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
190
-      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
191
-      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
192
-      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
193
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
194
-      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
195
-      slidesGrid.push(slidePosition);
196
-    } else {
197
-      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
198
-      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
199
-      slidesGrid.push(slidePosition);
200
-      slidePosition = slidePosition + slideSize + spaceBetween;
201
-    }
202
-
203
-    swiper.virtualSize += slideSize + spaceBetween;
204
-
205
-    prevSlideSize = slideSize;
206
-
207
-    index += 1;
208
-  }
209
-  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
210
-  let newSlidesGrid;
211
-
212
-  if (
213
-    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
214
-    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
215
-  }
216
-  if (params.setWrapperSize) {
217
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
218
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
219
-  }
220
-
221
-  if (params.slidesPerColumn > 1) {
222
-    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
223
-    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
224
-    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
225
-    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
226
-    if (params.centeredSlides) {
227
-      newSlidesGrid = [];
228
-      for (let i = 0; i < snapGrid.length; i += 1) {
229
-        let slidesGridItem = snapGrid[i];
230
-        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
231
-        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
232
-      }
233
-      snapGrid = newSlidesGrid;
234
-    }
235
-  }
236
-
237
-  // Remove last grid elements depending on width
238
-  if (!params.centeredSlides) {
239
-    newSlidesGrid = [];
240
-    for (let i = 0; i < snapGrid.length; i += 1) {
241
-      let slidesGridItem = snapGrid[i];
242
-      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
243
-      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
244
-        newSlidesGrid.push(slidesGridItem);
245
-      }
246
-    }
247
-    snapGrid = newSlidesGrid;
248
-    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
249
-      snapGrid.push(swiper.virtualSize - swiperSize);
250
-    }
251
-  }
252
-  if (snapGrid.length === 0) snapGrid = [0];
253
-
254
-  if (params.spaceBetween !== 0) {
255
-    if (swiper.isHorizontal()) {
256
-      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });
257
-      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });
258
-    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });
259
-  }
260
-
261
-  if (params.centeredSlides && params.centeredSlidesBounds) {
262
-    let allSlidesSize = 0;
263
-    slidesSizesGrid.forEach((slideSizeValue) => {
264
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
265
-    });
266
-    allSlidesSize -= params.spaceBetween;
267
-    const maxSnap = allSlidesSize - swiperSize;
268
-    snapGrid = snapGrid.map((snap) => {
269
-      if (snap < 0) return -offsetBefore;
270
-      if (snap > maxSnap) return maxSnap + offsetAfter;
271
-      return snap;
272
-    });
273
-  }
274
-
275
-  if (params.centerInsufficientSlides) {
276
-    let allSlidesSize = 0;
277
-    slidesSizesGrid.forEach((slideSizeValue) => {
278
-      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
279
-    });
280
-    allSlidesSize -= params.spaceBetween;
281
-    if (allSlidesSize < swiperSize) {
282
-      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
283
-      snapGrid.forEach((snap, snapIndex) => {
284
-        snapGrid[snapIndex] = snap - allSlidesOffset;
285
-      });
286
-      slidesGrid.forEach((snap, snapIndex) => {
287
-        slidesGrid[snapIndex] = snap + allSlidesOffset;
288
-      });
289
-    }
290
-  }
291
-
292
-  Utils.extend(swiper, {
293
-    slides,
294
-    snapGrid,
295
-    slidesGrid,
296
-    slidesSizesGrid,
297
-  });
298
-
299
-  if (slidesLength !== previousSlidesLength) {
300
-    swiper.emit('slidesLengthChange');
301
-  }
302
-  if (snapGrid.length !== previousSnapGridLength) {
303
-    if (swiper.params.watchOverflow) swiper.checkOverflow();
304
-    swiper.emit('snapGridLengthChange');
305
-  }
306
-  if (slidesGrid.length !== previousSlidesGridLength) {
307
-    swiper.emit('slidesGridLengthChange');
308
-  }
309
-
310
-  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
311
-    swiper.updateSlidesOffset();
312
-  }
313
-}
314 0
deleted file mode 100644
... ...
@@ -1,66 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-
4
-  const {
5
-    slides, params, $wrapperEl, activeIndex, realIndex,
6
-  } = swiper;
7
-  const isVirtual = swiper.virtual && params.virtual.enabled;
8
-
9
-  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
10
-
11
-  let activeSlide;
12
-  if (isVirtual) {
13
-    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
14
-  } else {
15
-    activeSlide = slides.eq(activeIndex);
16
-  }
17
-
18
-  // Active classes
19
-  activeSlide.addClass(params.slideActiveClass);
20
-
21
-  if (params.loop) {
22
-    // Duplicate to all looped slides
23
-    if (activeSlide.hasClass(params.slideDuplicateClass)) {
24
-      $wrapperEl
25
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`)
26
-        .addClass(params.slideDuplicateActiveClass);
27
-    } else {
28
-      $wrapperEl
29
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`)
30
-        .addClass(params.slideDuplicateActiveClass);
31
-    }
32
-  }
33
-  // Next Slide
34
-  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
35
-  if (params.loop && nextSlide.length === 0) {
36
-    nextSlide = slides.eq(0);
37
-    nextSlide.addClass(params.slideNextClass);
38
-  }
39
-  // Prev Slide
40
-  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
41
-  if (params.loop && prevSlide.length === 0) {
42
-    prevSlide = slides.eq(-1);
43
-    prevSlide.addClass(params.slidePrevClass);
44
-  }
45
-  if (params.loop) {
46
-    // Duplicate to all looped slides
47
-    if (nextSlide.hasClass(params.slideDuplicateClass)) {
48
-      $wrapperEl
49
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
50
-        .addClass(params.slideDuplicateNextClass);
51
-    } else {
52
-      $wrapperEl
53
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
54
-        .addClass(params.slideDuplicateNextClass);
55
-    }
56
-    if (prevSlide.hasClass(params.slideDuplicateClass)) {
57
-      $wrapperEl
58
-        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
59
-        .addClass(params.slideDuplicatePrevClass);
60
-    } else {
61
-      $wrapperEl
62
-        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
63
-        .addClass(params.slideDuplicatePrevClass);
64
-    }
65
-  }
66
-}
67 0
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-export default function () {
2
-  const swiper = this;
3
-  const slides = swiper.slides;
4
-  for (let i = 0; i < slides.length; i += 1) {
5
-    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
6
-  }
7
-}
8 0
deleted file mode 100644
... ...
@@ -1,41 +0,0 @@
1
-import $ from '../../../utils/dom';
2
-
3
-export default function (translate = (this && this.translate) || 0) {
4
-  const swiper = this;
5
-  const params = swiper.params;
6
-
7
-  const { slides, rtlTranslate: rtl } = swiper;
8
-
9
-  if (slides.length === 0) return;
10
-  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
11
-
12
-  let offsetCenter = -translate;
13
-  if (rtl) offsetCenter = translate;
14
-
15
-  // Visible Slides
16
-  slides.removeClass(params.slideVisibleClass);
17
-
18
-  swiper.visibleSlidesIndexes = [];
19
-  swiper.visibleSlides = [];
20
-
21
-  for (let i = 0; i < slides.length; i += 1) {
22
-    const slide = slides[i];
23
-    const slideProgress = (
24
-      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
25
-    ) / (slide.swiperSlideSize + params.spaceBetween);
26
-    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
27
-      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);
28
-      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
29
-      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
30
-                || (slideAfter > 1 && slideAfter <= swiper.size)
31
-                || (slideBefore <= 0 && slideAfter >= swiper.size);
32
-      if (isVisible) {
33
-        swiper.visibleSlides.push(slide);
34
-        swiper.visibleSlidesIndexes.push(i);
35
-        slides.eq(i).addClass(params.slideVisibleClass);
36
-      }
37
-    }
38
-    slide.progress = rtl ? -slideProgress : slideProgress;
39
-  }
40
-  swiper.visibleSlides = $(swiper.visibleSlides);
41
-}
42 0
deleted file mode 100644
... ...
@@ -1,122 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Support from '../../utils/support';
3
-import Utils from '../../utils/utils';
4
-
5
-const Coverflow = {
6
-  setTranslate() {
7
-    const swiper = this;
8
-    const {
9
-      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,
10
-    } = swiper;
11
-    const params = swiper.params.coverflowEffect;
12
-    const isHorizontal = swiper.isHorizontal();
13
-    const transform = swiper.translate;
14
-    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
15
-    const rotate = isHorizontal ? params.rotate : -params.rotate;
16
-    const translate = params.depth;
17
-    // Each slide offset from center
18
-    for (let i = 0, length = slides.length; i < length; i += 1) {
19
-      const $slideEl = slides.eq(i);
20
-      const slideSize = slidesSizesGrid[i];
21
-      const slideOffset = $slideEl[0].swiperSlideOffset;
22
-      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
23
-
24
-      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
25
-      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
26
-      // var rotateZ = 0
27
-      let translateZ = -translate * Math.abs(offsetMultiplier);
28
-
29
-      let stretch = params.stretch;
30
-      // Allow percentage to make a relative stretch for responsive sliders
31
-      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
32
-        stretch = ((parseFloat(params.stretch) / 100) * slideSize);
33
-      }
34
-      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
35
-      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
36
-
37
-      // Fix for ultra small values
38
-      if (Math.abs(translateX) < 0.001) translateX = 0;
39
-      if (Math.abs(translateY) < 0.001) translateY = 0;
40
-      if (Math.abs(translateZ) < 0.001) translateZ = 0;
41
-      if (Math.abs(rotateY) < 0.001) rotateY = 0;
42
-      if (Math.abs(rotateX) < 0.001) rotateX = 0;
43
-
44
-      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
45
-
46
-      $slideEl.transform(slideTransform);
47
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
48
-      if (params.slideShadows) {
49
-        // Set shadows
50
-        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
51
-        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
52
-        if ($shadowBeforeEl.length === 0) {
53
-          $shadowBeforeEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
54
-          $slideEl.append($shadowBeforeEl);
55
-        }
56
-        if ($shadowAfterEl.length === 0) {
57
-          $shadowAfterEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
58
-          $slideEl.append($shadowAfterEl);
59
-        }
60
-        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
61
-        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;
62
-      }
63
-    }
64
-
65
-    // Set correct perspective for IE10
66
-    if (Support.pointerEvents || Support.prefixedPointerEvents) {
67
-      const ws = $wrapperEl[0].style;
68
-      ws.perspectiveOrigin = `${center}px 50%`;
69
-    }
70
-  },
71
-  setTransition(duration) {
72
-    const swiper = this;
73
-    swiper.slides
74
-      .transition(duration)
75
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
76
-      .transition(duration);
77
-  },
78
-};
79
-
80
-export default {
81
-  name: 'effect-coverflow',
82
-  params: {
83
-    coverflowEffect: {
84
-      rotate: 50,
85
-      stretch: 0,
86
-      depth: 100,
87
-      modifier: 1,
88
-      slideShadows: true,
89
-    },
90
-  },
91
-  create() {
92
-    const swiper = this;
93
-    Utils.extend(swiper, {
94
-      coverflowEffect: {
95
-        setTranslate: Coverflow.setTranslate.bind(swiper),
96
-        setTransition: Coverflow.setTransition.bind(swiper),
97
-      },
98
-    });
99
-  },
100
-  on: {
101
-    beforeInit() {
102
-      const swiper = this;
103
-      if (swiper.params.effect !== 'coverflow') return;
104
-
105
-      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);
106
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
107
-
108
-      swiper.params.watchSlidesProgress = true;
109
-      swiper.originalParams.watchSlidesProgress = true;
110
-    },
111
-    setTranslate() {
112
-      const swiper = this;
113
-      if (swiper.params.effect !== 'coverflow') return;
114
-      swiper.coverflowEffect.setTranslate();
115
-    },
116
-    setTransition(duration) {
117
-      const swiper = this;
118
-      if (swiper.params.effect !== 'coverflow') return;
119
-      swiper.coverflowEffect.setTransition(duration);
120
-    },
121
-  },
122
-};
123 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-.swiper-container-coverflow {}
2 0
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-.swiper-container-coverflow {}
2 0
deleted file mode 100644
... ...
@@ -1,180 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-import Browser from '../../utils/browser';
4
-
5
-const Cube = {
6
-  setTranslate() {
7
-    const swiper = this;
8
-    const {
9
-      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,
10
-    } = swiper;
11
-    const params = swiper.params.cubeEffect;
12
-    const isHorizontal = swiper.isHorizontal();
13
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
14
-    let wrapperRotate = 0;
15
-    let $cubeShadowEl;
16
-    if (params.shadow) {
17
-      if (isHorizontal) {
18
-        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
19
-        if ($cubeShadowEl.length === 0) {
20
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
21
-          $wrapperEl.append($cubeShadowEl);
22
-        }
23
-        $cubeShadowEl.css({ height: `${swiperWidth}px` });
24
-      } else {
25
-        $cubeShadowEl = $el.find('.swiper-cube-shadow');
26
-        if ($cubeShadowEl.length === 0) {
27
-          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
28
-          $el.append($cubeShadowEl);
29
-        }
30
-      }
31
-    }
32
-    for (let i = 0; i < slides.length; i += 1) {
33
-      const $slideEl = slides.eq(i);
34
-      let slideIndex = i;
35
-      if (isVirtual) {
36
-        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
37
-      }
38
-      let slideAngle = slideIndex * 90;
39
-      let round = Math.floor(slideAngle / 360);
40
-      if (rtl) {
41
-        slideAngle = -slideAngle;
42
-        round = Math.floor(-slideAngle / 360);
43
-      }
44
-      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
45
-      let tx = 0;
46
-      let ty = 0;
47
-      let tz = 0;
48
-      if (slideIndex % 4 === 0) {
49
-        tx = -round * 4 * swiperSize;
50
-        tz = 0;
51
-      } else if ((slideIndex - 1) % 4 === 0) {
52
-        tx = 0;
53
-        tz = -round * 4 * swiperSize;
54
-      } else if ((slideIndex - 2) % 4 === 0) {
55
-        tx = swiperSize + (round * 4 * swiperSize);
56
-        tz = swiperSize;
57
-      } else if ((slideIndex - 3) % 4 === 0) {
58
-        tx = -swiperSize;
59
-        tz = (3 * swiperSize) + (swiperSize * 4 * round);
60
-      }
61
-      if (rtl) {
62
-        tx = -tx;
63
-      }
64
-
65
-      if (!isHorizontal) {
66
-        ty = tx;
67
-        tx = 0;
68
-      }
69
-
70
-      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
71
-      if (progress <= 1 && progress > -1) {
72
-        wrapperRotate = (slideIndex * 90) + (progress * 90);
73
-        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);
74
-      }
75
-      $slideEl.transform(transform);
76
-      if (params.slideShadows) {
77
-        // Set shadows
78
-        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
79
-        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
80
-        if (shadowBefore.length === 0) {
81
-          shadowBefore = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
82
-          $slideEl.append(shadowBefore);
83
-        }
84
-        if (shadowAfter.length === 0) {
85
-          shadowAfter = $(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
86
-          $slideEl.append(shadowAfter);
87
-        }
88
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
89
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
90
-      }
91
-    }
92
-    $wrapperEl.css({
93
-      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
94
-      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,
95
-      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,
96
-      'transform-origin': `50% 50% -${swiperSize / 2}px`,
97
-    });
98
-
99
-    if (params.shadow) {
100
-      if (isHorizontal) {
101
-        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
102
-      } else {
103
-        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
104
-        const multiplier = 1.5 - (
105
-          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
106
-          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
107
-        );
108
-        const scale1 = params.shadowScale;
109
-        const scale2 = params.shadowScale / multiplier;
110
-        const offset = params.shadowOffset;
111
-        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
112
-      }
113
-    }
114
-    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
115
-    $wrapperEl
116
-      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
117
-  },
118
-  setTransition(duration) {
119
-    const swiper = this;
120
-    const { $el, slides } = swiper;
121
-    slides
122
-      .transition(duration)
123
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
124
-      .transition(duration);
125
-    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
126
-      $el.find('.swiper-cube-shadow').transition(duration);
127
-    }
128
-  },
129
-};
130
-
131
-export default {
132
-  name: 'effect-cube',
133
-  params: {
134
-    cubeEffect: {
135
-      slideShadows: true,
136
-      shadow: true,
137
-      shadowOffset: 20,
138
-      shadowScale: 0.94,
139
-    },
140
-  },
141
-  create() {
142
-    const swiper = this;
143
-    Utils.extend(swiper, {
144
-      cubeEffect: {
145
-        setTranslate: Cube.setTranslate.bind(swiper),
146
-        setTransition: Cube.setTransition.bind(swiper),
147
-      },
148
-    });
149
-  },
150
-  on: {
151
-    beforeInit() {
152
-      const swiper = this;
153
-      if (swiper.params.effect !== 'cube') return;
154
-      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);
155
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
156
-      const overwriteParams = {
157
-        slidesPerView: 1,
158
-        slidesPerColumn: 1,
159
-        slidesPerGroup: 1,
160
-        watchSlidesProgress: true,
161
-        resistanceRatio: 0,
162
-        spaceBetween: 0,
163
-        centeredSlides: false,
164
-        virtualTranslate: true,
165
-      };
166
-      Utils.extend(swiper.params, overwriteParams);
167
-      Utils.extend(swiper.originalParams, overwriteParams);
168
-    },
169
-    setTranslate() {
170
-      const swiper = this;
171
-      if (swiper.params.effect !== 'cube') return;
172
-      swiper.cubeEffect.setTranslate();
173
-    },
174
-    setTransition(duration) {
175
-      const swiper = this;
176
-      if (swiper.params.effect !== 'cube') return;
177
-      swiper.cubeEffect.setTransition(duration);
178
-    },
179
-  },
180
-};
181 0
deleted file mode 100644
... ...
@@ -1,43 +0,0 @@
1
-.swiper-container-cube {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    visibility: hidden;
8
-    transform-origin: 0 0;
9
-    width: 100%;
10
-    height: 100%;
11
-    .swiper-slide {
12
-      pointer-events: none;
13
-    }
14
-  }
15
-  &.swiper-container-rtl .swiper-slide {
16
-    transform-origin: 100% 0;
17
-  }
18
-  .swiper-slide-active {
19
-    &, & .swiper-slide-active {
20
-      pointer-events: auto;
21
-    }
22
-  }
23
-  .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide {
24
-    pointer-events: auto;
25
-    visibility: visible;
26
-  }
27
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
28
-    z-index: 0;
29
-    backface-visibility: hidden;
30
-  }
31
-  .swiper-cube-shadow {
32
-    position: absolute;
33
-    left: 0;
34
-    bottom: 0px;
35
-    width: 100%;
36
-    height: 100%;
37
-    background: #000;
38
-    opacity: 0.6;
39
-    -webkit-filter: blur(50px);
40
-    filter: blur(50px);
41
-    z-index: 0;
42
-  }
43
-}
44 0
deleted file mode 100644
... ...
@@ -1,43 +0,0 @@
1
-.swiper-container-cube {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    visibility: hidden;
8
-    transform-origin: 0 0;
9
-    width: 100%;
10
-    height: 100%;
11
-    .swiper-slide {
12
-      pointer-events: none;
13
-    }
14
-  }
15
-  &.swiper-container-rtl .swiper-slide {
16
-    transform-origin: 100% 0;
17
-  }
18
-  .swiper-slide-active {
19
-    &, & .swiper-slide-active {
20
-      pointer-events: auto;
21
-    }
22
-  }
23
-  .swiper-slide-active, .swiper-slide-next, .swiper-slide-prev, .swiper-slide-next + .swiper-slide {
24
-    pointer-events: auto;
25
-    visibility: visible;
26
-  }
27
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
28
-    z-index: 0;
29
-    backface-visibility: hidden;
30
-  }
31
-  .swiper-cube-shadow {
32
-    position: absolute;
33
-    left: 0;
34
-    bottom: 0px;
35
-    width: 100%;
36
-    height: 100%;
37
-    background: #000;
38
-    opacity: 0.6;
39
-    -webkit-filter: blur(50px);
40
-    filter: blur(50px);
41
-    z-index: 0;
42
-  }
43
-}
44 0
deleted file mode 100644
... ...
@@ -1,90 +0,0 @@
1
-import Utils from '../../utils/utils';
2
-
3
-const Fade = {
4
-  setTranslate() {
5
-    const swiper = this;
6
-    const { slides } = swiper;
7
-    for (let i = 0; i < slides.length; i += 1) {
8
-      const $slideEl = swiper.slides.eq(i);
9
-      const offset = $slideEl[0].swiperSlideOffset;
10
-      let tx = -offset;
11
-      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
12
-      let ty = 0;
13
-      if (!swiper.isHorizontal()) {
14
-        ty = tx;
15
-        tx = 0;
16
-      }
17
-      const slideOpacity = swiper.params.fadeEffect.crossFade
18
-        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
19
-        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
20
-      $slideEl
21
-        .css({
22
-          opacity: slideOpacity,
23
-        })
24
-        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);
25
-    }
26
-  },
27
-  setTransition(duration) {
28
-    const swiper = this;
29
-    const { slides, $wrapperEl } = swiper;
30
-    slides.transition(duration);
31
-    if (swiper.params.virtualTranslate && duration !== 0) {
32
-      let eventTriggered = false;
33
-      slides.transitionEnd(() => {
34
-        if (eventTriggered) return;
35
-        if (!swiper || swiper.destroyed) return;
36
-        eventTriggered = true;
37
-        swiper.animating = false;
38
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
39
-        for (let i = 0; i < triggerEvents.length; i += 1) {
40
-          $wrapperEl.trigger(triggerEvents[i]);
41
-        }
42
-      });
43
-    }
44
-  },
45
-};
46
-
47
-export default {
48
-  name: 'effect-fade',
49
-  params: {
50
-    fadeEffect: {
51
-      crossFade: false,
52
-    },
53
-  },
54
-  create() {
55
-    const swiper = this;
56
-    Utils.extend(swiper, {
57
-      fadeEffect: {
58
-        setTranslate: Fade.setTranslate.bind(swiper),
59
-        setTransition: Fade.setTransition.bind(swiper),
60
-      },
61
-    });
62
-  },
63
-  on: {
64
-    beforeInit() {
65
-      const swiper = this;
66
-      if (swiper.params.effect !== 'fade') return;
67
-      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);
68
-      const overwriteParams = {
69
-        slidesPerView: 1,
70
-        slidesPerColumn: 1,
71
-        slidesPerGroup: 1,
72
-        watchSlidesProgress: true,
73
-        spaceBetween: 0,
74
-        virtualTranslate: true,
75
-      };
76
-      Utils.extend(swiper.params, overwriteParams);
77
-      Utils.extend(swiper.originalParams, overwriteParams);
78
-    },
79
-    setTranslate() {
80
-      const swiper = this;
81
-      if (swiper.params.effect !== 'fade') return;
82
-      swiper.fadeEffect.setTranslate();
83
-    },
84
-    setTransition(duration) {
85
-      const swiper = this;
86
-      if (swiper.params.effect !== 'fade') return;
87
-      swiper.fadeEffect.setTransition(duration);
88
-    },
89
-  },
90
-};
91 0
deleted file mode 100644
... ...
@@ -1,19 +0,0 @@
1
-.swiper-container-fade {
2
-  &.swiper-container-free-mode {
3
-    .swiper-slide {
4
-      transition-timing-function: ease-out;
5
-    }
6
-  }
7
-  .swiper-slide {
8
-    pointer-events: none;
9
-    transition-property: opacity;
10
-    .swiper-slide {
11
-      pointer-events: none;
12
-    }
13
-  }
14
-  .swiper-slide-active {
15
-    &, & .swiper-slide-active {
16
-      pointer-events: auto;
17
-    }
18
-  }
19
-}
20 0
deleted file mode 100644
... ...
@@ -1,19 +0,0 @@
1
-.swiper-container-fade {
2
-  &.swiper-container-free-mode {
3
-    .swiper-slide {
4
-      transition-timing-function: ease-out;
5
-    }
6
-  }
7
-  .swiper-slide {
8
-    pointer-events: none;
9
-    transition-property: opacity;
10
-    .swiper-slide {
11
-      pointer-events: none;
12
-    }
13
-  }
14
-  .swiper-slide-active {
15
-    &, & .swiper-slide-active {
16
-      pointer-events: auto;
17
-    }
18
-  }
19
-}
20 0
deleted file mode 100644
... ...
@@ -1,120 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Flip = {
5
-  setTranslate() {
6
-    const swiper = this;
7
-    const { slides, rtlTranslate: rtl } = swiper;
8
-    for (let i = 0; i < slides.length; i += 1) {
9
-      const $slideEl = slides.eq(i);
10
-      let progress = $slideEl[0].progress;
11
-      if (swiper.params.flipEffect.limitRotation) {
12
-        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
13
-      }
14
-      const offset = $slideEl[0].swiperSlideOffset;
15
-      const rotate = -180 * progress;
16
-      let rotateY = rotate;
17
-      let rotateX = 0;
18
-      let tx = -offset;
19
-      let ty = 0;
20
-      if (!swiper.isHorizontal()) {
21
-        ty = tx;
22
-        tx = 0;
23
-        rotateX = -rotateY;
24
-        rotateY = 0;
25
-      } else if (rtl) {
26
-        rotateY = -rotateY;
27
-      }
28
-
29
-      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
30
-
31
-      if (swiper.params.flipEffect.slideShadows) {
32
-        // Set shadows
33
-        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
34
-        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
35
-        if (shadowBefore.length === 0) {
36
-          shadowBefore = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}"></div>`);
37
-          $slideEl.append(shadowBefore);
38
-        }
39
-        if (shadowAfter.length === 0) {
40
-          shadowAfter = $(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}"></div>`);
41
-          $slideEl.append(shadowAfter);
42
-        }
43
-        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
44
-        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
45
-      }
46
-      $slideEl
47
-        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
48
-    }
49
-  },
50
-  setTransition(duration) {
51
-    const swiper = this;
52
-    const { slides, activeIndex, $wrapperEl } = swiper;
53
-    slides
54
-      .transition(duration)
55
-      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
56
-      .transition(duration);
57
-    if (swiper.params.virtualTranslate && duration !== 0) {
58
-      let eventTriggered = false;
59
-      // eslint-disable-next-line
60
-      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
61
-        if (eventTriggered) return;
62
-        if (!swiper || swiper.destroyed) return;
63
-        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
64
-        eventTriggered = true;
65
-        swiper.animating = false;
66
-        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
67
-        for (let i = 0; i < triggerEvents.length; i += 1) {
68
-          $wrapperEl.trigger(triggerEvents[i]);
69
-        }
70
-      });
71
-    }
72
-  },
73
-};
74
-
75
-export default {
76
-  name: 'effect-flip',
77
-  params: {
78
-    flipEffect: {
79
-      slideShadows: true,
80
-      limitRotation: true,
81
-    },
82
-  },
83
-  create() {
84
-    const swiper = this;
85
-    Utils.extend(swiper, {
86
-      flipEffect: {
87
-        setTranslate: Flip.setTranslate.bind(swiper),
88
-        setTransition: Flip.setTransition.bind(swiper),
89
-      },
90
-    });
91
-  },
92
-  on: {
93
-    beforeInit() {
94
-      const swiper = this;
95
-      if (swiper.params.effect !== 'flip') return;
96
-      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);
97
-      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
98
-      const overwriteParams = {
99
-        slidesPerView: 1,
100
-        slidesPerColumn: 1,
101
-        slidesPerGroup: 1,
102
-        watchSlidesProgress: true,
103
-        spaceBetween: 0,
104
-        virtualTranslate: true,
105
-      };
106
-      Utils.extend(swiper.params, overwriteParams);
107
-      Utils.extend(swiper.originalParams, overwriteParams);
108
-    },
109
-    setTranslate() {
110
-      const swiper = this;
111
-      if (swiper.params.effect !== 'flip') return;
112
-      swiper.flipEffect.setTranslate();
113
-    },
114
-    setTransition(duration) {
115
-      const swiper = this;
116
-      if (swiper.params.effect !== 'flip') return;
117
-      swiper.flipEffect.setTransition(duration);
118
-    },
119
-  },
120
-};
121 0
deleted file mode 100644
... ...
@@ -1,20 +0,0 @@
1
-.swiper-container-flip {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    .swiper-slide {
8
-      pointer-events: none;
9
-    }
10
-  }
11
-  .swiper-slide-active {
12
-    &, & .swiper-slide-active {
13
-      pointer-events: auto;
14
-    }
15
-  }
16
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
17
-    z-index: 0;
18
-    backface-visibility: hidden;
19
-  }
20
-}
21 0
deleted file mode 100644
... ...
@@ -1,20 +0,0 @@
1
-.swiper-container-flip {
2
-  overflow: visible;
3
-  .swiper-slide {
4
-    pointer-events: none;
5
-    backface-visibility: hidden;
6
-    z-index: 1;
7
-    .swiper-slide {
8
-      pointer-events: none;
9
-    }
10
-  }
11
-  .swiper-slide-active {
12
-    &, & .swiper-slide-active {
13
-      pointer-events: auto;
14
-    }
15
-  }
16
-  .swiper-slide-shadow-top, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left, .swiper-slide-shadow-right {
17
-    z-index: 0;
18
-    backface-visibility: hidden;
19
-  }
20
-}
21 0
deleted file mode 100644
... ...
@@ -1,104 +0,0 @@
1
-import { window, document } from 'ssr-window';
2
-import $ from '../../utils/dom';
3
-import Utils from '../../utils/utils';
4
-
5
-const HashNavigation = {
6
-  onHashCange() {
7
-    const swiper = this;
8
-    swiper.emit('hashChange');
9
-    const newHash = document.location.hash.replace('#', '');
10
-    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
11
-    if (newHash !== activeSlideHash) {
12
-      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
13
-      if (typeof newIndex === 'undefined') return;
14
-      swiper.slideTo(newIndex);
15
-    }
16
-  },
17
-  setHash() {
18
-    const swiper = this;
19
-    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
20
-    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
21
-      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));
22
-      swiper.emit('hashSet');
23
-    } else {
24
-      const slide = swiper.slides.eq(swiper.activeIndex);
25
-      const hash = slide.attr('data-hash') || slide.attr('data-history');
26
-      document.location.hash = hash || '';
27
-      swiper.emit('hashSet');
28
-    }
29
-  },
30
-  init() {
31
-    const swiper = this;
32
-    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;
33
-    swiper.hashNavigation.initialized = true;
34
-    const hash = document.location.hash.replace('#', '');
35
-    if (hash) {
36
-      const speed = 0;
37
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
38
-        const slide = swiper.slides.eq(i);
39
-        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
40
-        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
41
-          const index = slide.index();
42
-          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
43
-        }
44
-      }
45
-    }
46
-    if (swiper.params.hashNavigation.watchState) {
47
-      $(window).on('hashchange', swiper.hashNavigation.onHashCange);
48
-    }
49
-  },
50
-  destroy() {
51
-    const swiper = this;
52
-    if (swiper.params.hashNavigation.watchState) {
53
-      $(window).off('hashchange', swiper.hashNavigation.onHashCange);
54
-    }
55
-  },
56
-};
57
-export default {
58
-  name: 'hash-navigation',
59
-  params: {
60
-    hashNavigation: {
61
-      enabled: false,
62
-      replaceState: false,
63
-      watchState: false,
64
-    },
65
-  },
66
-  create() {
67
-    const swiper = this;
68
-    Utils.extend(swiper, {
69
-      hashNavigation: {
70
-        initialized: false,
71
-        init: HashNavigation.init.bind(swiper),
72
-        destroy: HashNavigation.destroy.bind(swiper),
73
-        setHash: HashNavigation.setHash.bind(swiper),
74
-        onHashCange: HashNavigation.onHashCange.bind(swiper),
75
-      },
76
-    });
77
-  },
78
-  on: {
79
-    init() {
80
-      const swiper = this;
81
-      if (swiper.params.hashNavigation.enabled) {
82
-        swiper.hashNavigation.init();
83
-      }
84
-    },
85
-    destroy() {
86
-      const swiper = this;
87
-      if (swiper.params.hashNavigation.enabled) {
88
-        swiper.hashNavigation.destroy();
89
-      }
90
-    },
91
-    transitionEnd() {
92
-      const swiper = this;
93
-      if (swiper.hashNavigation.initialized) {
94
-        swiper.hashNavigation.setHash();
95
-      }
96
-    },
97
-    slideChange() {
98
-      const swiper = this;
99
-      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
100
-        swiper.hashNavigation.setHash();
101
-      }
102
-    },
103
-  },
104
-};
105 0
deleted file mode 100644
... ...
@@ -1,130 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import Utils from '../../utils/utils';
3
-
4
-const History = {
5
-  init() {
6
-    const swiper = this;
7
-    if (!swiper.params.history) return;
8
-    if (!window.history || !window.history.pushState) {
9
-      swiper.params.history.enabled = false;
10
-      swiper.params.hashNavigation.enabled = true;
11
-      return;
12
-    }
13
-    const history = swiper.history;
14
-    history.initialized = true;
15
-    history.paths = History.getPathValues();
16
-    if (!history.paths.key && !history.paths.value) return;
17
-    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
18
-    if (!swiper.params.history.replaceState) {
19
-      window.addEventListener('popstate', swiper.history.setHistoryPopState);
20
-    }
21
-  },
22
-  destroy() {
23
-    const swiper = this;
24
-    if (!swiper.params.history.replaceState) {
25
-      window.removeEventListener('popstate', swiper.history.setHistoryPopState);
26
-    }
27
-  },
28
-  setHistoryPopState() {
29
-    const swiper = this;
30
-    swiper.history.paths = History.getPathValues();
31
-    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
32
-  },
33
-  getPathValues() {
34
-    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');
35
-    const total = pathArray.length;
36
-    const key = pathArray[total - 2];
37
-    const value = pathArray[total - 1];
38
-    return { key, value };
39
-  },
40
-  setHistory(key, index) {
41
-    const swiper = this;
42
-    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
43
-    const slide = swiper.slides.eq(index);
44
-    let value = History.slugify(slide.attr('data-history'));
45
-    if (!window.location.pathname.includes(key)) {
46
-      value = `${key}/${value}`;
47
-    }
48
-    const currentState = window.history.state;
49
-    if (currentState && currentState.value === value) {
50
-      return;
51
-    }
52
-    if (swiper.params.history.replaceState) {
53
-      window.history.replaceState({ value }, null, value);
54
-    } else {
55
-      window.history.pushState({ value }, null, value);
56
-    }
57
-  },
58
-  slugify(text) {
59
-    return text.toString()
60
-      .replace(/\s+/g, '-')
61
-      .replace(/[^\w-]+/g, '')
62
-      .replace(/--+/g, '-')
63
-      .replace(/^-+/, '')
64
-      .replace(/-+$/, '');
65
-  },
66
-  scrollToSlide(speed, value, runCallbacks) {
67
-    const swiper = this;
68
-    if (value) {
69
-      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
70
-        const slide = swiper.slides.eq(i);
71
-        const slideHistory = History.slugify(slide.attr('data-history'));
72
-        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
73
-          const index = slide.index();
74
-          swiper.slideTo(index, speed, runCallbacks);
75
-        }
76
-      }
77
-    } else {
78
-      swiper.slideTo(0, speed, runCallbacks);
79
-    }
80
-  },
81
-};
82
-
83
-export default {
84
-  name: 'history',
85
-  params: {
86
-    history: {
87
-      enabled: false,
88
-      replaceState: false,
89
-      key: 'slides',
90
-    },
91
-  },
92
-  create() {
93
-    const swiper = this;
94
-    Utils.extend(swiper, {
95
-      history: {
96
-        init: History.init.bind(swiper),
97
-        setHistory: History.setHistory.bind(swiper),
98
-        setHistoryPopState: History.setHistoryPopState.bind(swiper),
99
-        scrollToSlide: History.scrollToSlide.bind(swiper),
100
-        destroy: History.destroy.bind(swiper),
101
-      },
102
-    });
103
-  },
104
-  on: {
105
-    init() {
106
-      const swiper = this;
107
-      if (swiper.params.history.enabled) {
108
-        swiper.history.init();
109
-      }
110
-    },
111
-    destroy() {
112
-      const swiper = this;
113
-      if (swiper.params.history.enabled) {
114
-        swiper.history.destroy();
115
-      }
116
-    },
117
-    transitionEnd() {
118
-      const swiper = this;
119
-      if (swiper.history.initialized) {
120
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
121
-      }
122
-    },
123
-    slideChange() {
124
-      const swiper = this;
125
-      if (swiper.history.initialized && swiper.params.cssMode) {
126
-        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
127
-      }
128
-    },
129
-  },
130
-};
131 0
deleted file mode 100644
... ...
@@ -1,117 +0,0 @@
1
-import { window, document } from 'ssr-window';
2
-import $ from '../../utils/dom';
3
-import Utils from '../../utils/utils';
4
-
5
-const Keyboard = {
6
-  handle(event) {
7
-    const swiper = this;
8
-    const { rtlTranslate: rtl } = swiper;
9
-    let e = event;
10
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
11
-    const kc = e.keyCode || e.charCode;
12
-    // Directions locks
13
-    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
14
-      return false;
15
-    }
16
-    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
17
-      return false;
18
-    }
19
-    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
20
-      return undefined;
21
-    }
22
-    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
23
-      return undefined;
24
-    }
25
-    if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
26
-      let inView = false;
27
-      // Check that swiper should be inside of visible area of window
28
-      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
29
-        return undefined;
30
-      }
31
-      const windowWidth = window.innerWidth;
32
-      const windowHeight = window.innerHeight;
33
-      const swiperOffset = swiper.$el.offset();
34
-      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
35
-      const swiperCoord = [
36
-        [swiperOffset.left, swiperOffset.top],
37
-        [swiperOffset.left + swiper.width, swiperOffset.top],
38
-        [swiperOffset.left, swiperOffset.top + swiper.height],
39
-        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],
40
-      ];
41
-      for (let i = 0; i < swiperCoord.length; i += 1) {
42
-        const point = swiperCoord[i];
43
-        if (
44
-          point[0] >= 0 && point[0] <= windowWidth
45
-          && point[1] >= 0 && point[1] <= windowHeight
46
-        ) {
47
-          inView = true;
48
-        }
49
-      }
50
-      if (!inView) return undefined;
51
-    }
52
-    if (swiper.isHorizontal()) {
53
-      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
54
-        if (e.preventDefault) e.preventDefault();
55
-        else e.returnValue = false;
56
-      }
57
-      if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();
58
-      if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();
59
-    } else {
60
-      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
61
-        if (e.preventDefault) e.preventDefault();
62
-        else e.returnValue = false;
63
-      }
64
-      if (kc === 34 || kc === 40) swiper.slideNext();
65
-      if (kc === 33 || kc === 38) swiper.slidePrev();
66
-    }
67
-    swiper.emit('keyPress', kc);
68
-    return undefined;
69
-  },
70
-  enable() {
71
-    const swiper = this;
72
-    if (swiper.keyboard.enabled) return;
73
-    $(document).on('keydown', swiper.keyboard.handle);
74
-    swiper.keyboard.enabled = true;
75
-  },
76
-  disable() {
77
-    const swiper = this;
78
-    if (!swiper.keyboard.enabled) return;
79
-    $(document).off('keydown', swiper.keyboard.handle);
80
-    swiper.keyboard.enabled = false;
81
-  },
82
-};
83
-
84
-export default {
85
-  name: 'keyboard',
86
-  params: {
87
-    keyboard: {
88
-      enabled: false,
89
-      onlyInViewport: true,
90
-    },
91
-  },
92
-  create() {
93
-    const swiper = this;
94
-    Utils.extend(swiper, {
95
-      keyboard: {
96
-        enabled: false,
97
-        enable: Keyboard.enable.bind(swiper),
98
-        disable: Keyboard.disable.bind(swiper),
99
-        handle: Keyboard.handle.bind(swiper),
100
-      },
101
-    });
102
-  },
103
-  on: {
104
-    init() {
105
-      const swiper = this;
106
-      if (swiper.params.keyboard.enabled) {
107
-        swiper.keyboard.enable();
108
-      }
109
-    },
110
-    destroy() {
111
-      const swiper = this;
112
-      if (swiper.keyboard.enabled) {
113
-        swiper.keyboard.disable();
114
-      }
115
-    },
116
-  },
117
-};
118 0
deleted file mode 100644
... ...
@@ -1,227 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Lazy = {
5
-  loadInSlide(index, loadInDuplicate = true) {
6
-    const swiper = this;
7
-    const params = swiper.params.lazy;
8
-    if (typeof index === 'undefined') return;
9
-    if (swiper.slides.length === 0) return;
10
-    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
11
-
12
-    const $slideEl = isVirtual
13
-      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`)
14
-      : swiper.slides.eq(index);
15
-
16
-    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
17
-    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
18
-      $images = $images.add($slideEl[0]);
19
-    }
20
-    if ($images.length === 0) return;
21
-
22
-    $images.each((imageIndex, imageEl) => {
23
-      const $imageEl = $(imageEl);
24
-      $imageEl.addClass(params.loadingClass);
25
-
26
-      const background = $imageEl.attr('data-background');
27
-      const src = $imageEl.attr('data-src');
28
-      const srcset = $imageEl.attr('data-srcset');
29
-      const sizes = $imageEl.attr('data-sizes');
30
-      const $pictureEl = $imageEl.parent('picture');
31
-
32
-      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {
33
-        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;
34
-        if (background) {
35
-          $imageEl.css('background-image', `url("${background}")`);
36
-          $imageEl.removeAttr('data-background');
37
-        } else {
38
-          if (srcset) {
39
-            $imageEl.attr('srcset', srcset);
40
-            $imageEl.removeAttr('data-srcset');
41
-          }
42
-          if (sizes) {
43
-            $imageEl.attr('sizes', sizes);
44
-            $imageEl.removeAttr('data-sizes');
45
-          }
46
-          if ($pictureEl.length) {
47
-            $pictureEl.children('source').each((sourceIndex, sourceEl) => {
48
-              const $source = $(sourceEl);
49
-
50
-              if ($source.attr('data-srcset')) {
51
-                $source.attr('srcset', $source.attr('data-srcset'));
52
-                $source.removeAttr('data-srcset');
53
-              }
54
-            });
55
-          }
56
-          if (src) {
57
-            $imageEl.attr('src', src);
58
-            $imageEl.removeAttr('data-src');
59
-          }
60
-        }
61
-
62
-        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
63
-        $slideEl.find(`.${params.preloaderClass}`).remove();
64
-        if (swiper.params.loop && loadInDuplicate) {
65
-          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
66
-          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
67
-            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
68
-            swiper.lazy.loadInSlide(originalSlide.index(), false);
69
-          } else {
70
-            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
71
-            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
72
-          }
73
-        }
74
-        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
75
-        if (swiper.params.autoHeight) {
76
-          swiper.updateAutoHeight();
77
-        }
78
-      });
79
-
80
-      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
81
-    });
82
-  },
83
-  load() {
84
-    const swiper = this;
85
-    const {
86
-      $wrapperEl, params: swiperParams, slides, activeIndex,
87
-    } = swiper;
88
-    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
89
-    const params = swiperParams.lazy;
90
-
91
-    let slidesPerView = swiperParams.slidesPerView;
92
-    if (slidesPerView === 'auto') {
93
-      slidesPerView = 0;
94
-    }
95
-
96
-    function slideExist(index) {
97
-      if (isVirtual) {
98
-        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
99
-          return true;
100
-        }
101
-      } else if (slides[index]) return true;
102
-      return false;
103
-    }
104
-
105
-    function slideIndex(slideEl) {
106
-      if (isVirtual) {
107
-        return $(slideEl).attr('data-swiper-slide-index');
108
-      }
109
-      return $(slideEl).index();
110
-    }
111
-
112
-    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
113
-    if (swiper.params.watchSlidesVisibility) {
114
-      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
115
-        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
116
-        swiper.lazy.loadInSlide(index);
117
-      });
118
-    } else if (slidesPerView > 1) {
119
-      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
120
-        if (slideExist(i)) swiper.lazy.loadInSlide(i);
121
-      }
122
-    } else {
123
-      swiper.lazy.loadInSlide(activeIndex);
124
-    }
125
-    if (params.loadPrevNext) {
126
-      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
127
-        const amount = params.loadPrevNextAmount;
128
-        const spv = slidesPerView;
129
-        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
130
-        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
131
-        // Next Slides
132
-        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
133
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
134
-        }
135
-        // Prev Slides
136
-        for (let i = minIndex; i < activeIndex; i += 1) {
137
-          if (slideExist(i)) swiper.lazy.loadInSlide(i);
138
-        }
139
-      } else {
140
-        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
141
-        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
142
-
143
-        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
144
-        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
145
-      }
146
-    }
147
-  },
148
-};
149
-
150
-export default {
151
-  name: 'lazy',
152
-  params: {
153
-    lazy: {
154
-      enabled: false,
155
-      loadPrevNext: false,
156
-      loadPrevNextAmount: 1,
157
-      loadOnTransitionStart: false,
158
-
159
-      elementClass: 'swiper-lazy',
160
-      loadingClass: 'swiper-lazy-loading',
161
-      loadedClass: 'swiper-lazy-loaded',
162
-      preloaderClass: 'swiper-lazy-preloader',
163
-    },
164
-  },
165
-  create() {
166
-    const swiper = this;
167
-    Utils.extend(swiper, {
168
-      lazy: {
169
-        initialImageLoaded: false,
170
-        load: Lazy.load.bind(swiper),
171
-        loadInSlide: Lazy.loadInSlide.bind(swiper),
172
-      },
173
-    });
174
-  },
175
-  on: {
176
-    beforeInit() {
177
-      const swiper = this;
178
-      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
179
-        swiper.params.preloadImages = false;
180
-      }
181
-    },
182
-    init() {
183
-      const swiper = this;
184
-      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
185
-        swiper.lazy.load();
186
-      }
187
-    },
188
-    scroll() {
189
-      const swiper = this;
190
-      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
191
-        swiper.lazy.load();
192
-      }
193
-    },
194
-    resize() {
195
-      const swiper = this;
196
-      if (swiper.params.lazy.enabled) {
197
-        swiper.lazy.load();
198
-      }
199
-    },
200
-    scrollbarDragMove() {
201
-      const swiper = this;
202
-      if (swiper.params.lazy.enabled) {
203
-        swiper.lazy.load();
204
-      }
205
-    },
206
-    transitionStart() {
207
-      const swiper = this;
208
-      if (swiper.params.lazy.enabled) {
209
-        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
210
-          swiper.lazy.load();
211
-        }
212
-      }
213
-    },
214
-    transitionEnd() {
215
-      const swiper = this;
216
-      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
217
-        swiper.lazy.load();
218
-      }
219
-    },
220
-    slideChange() {
221
-      const swiper = this;
222
-      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
223
-        swiper.lazy.load();
224
-      }
225
-    },
226
-  },
227
-};
228 0
deleted file mode 100644
... ...
@@ -1,34 +0,0 @@
1
-/* Preloader */
2
-:root {
3
-  /*
4
-  --swiper-preloader-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-lazy-preloader {
8
-  width: 42px;
9
-  height: 42px;
10
-  position: absolute;
11
-  left: 50%;
12
-  top: 50%;
13
-  margin-left: -21px;
14
-  margin-top: -21px;
15
-  z-index: 10;
16
-  transform-origin: 50%;
17
-  animation: swiper-preloader-spin 1s infinite linear;
18
-  box-sizing: border-box;
19
-  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
-  border-radius: 50%;
21
-  border-top-color: transparent;
22
-}
23
-
24
-.swiper-lazy-preloader-white {
25
-  --swiper-preloader-color: #fff;
26
-}
27
-.swiper-lazy-preloader-black {
28
-  --swiper-preloader-color: #000;
29
-}
30
-@keyframes swiper-preloader-spin {
31
-  100% {
32
-    transform: rotate(360deg);
33
-  }
34
-}
35 0
deleted file mode 100644
... ...
@@ -1,34 +0,0 @@
1
-/* Preloader */
2
-:root {
3
-  /*
4
-  --swiper-preloader-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-lazy-preloader {
8
-  width: 42px;
9
-  height: 42px;
10
-  position: absolute;
11
-  left: 50%;
12
-  top: 50%;
13
-  margin-left: -21px;
14
-  margin-top: -21px;
15
-  z-index: 10;
16
-  transform-origin: 50%;
17
-  animation: swiper-preloader-spin 1s infinite linear;
18
-  box-sizing: border-box;
19
-  border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
20
-  border-radius: 50%;
21
-  border-top-color: transparent;
22
-}
23
-
24
-.swiper-lazy-preloader-white {
25
-  --swiper-preloader-color: #fff;
26
-}
27
-.swiper-lazy-preloader-black {
28
-  --swiper-preloader-color: #000;
29
-}
30
-@keyframes swiper-preloader-spin {
31
-  100% {
32
-    transform: rotate(360deg);
33
-  }
34
-}
35 0
deleted file mode 100644
... ...
@@ -1,424 +0,0 @@
1
-import { window, document } from 'ssr-window';
2
-import $ from '../../utils/dom';
3
-import Utils from '../../utils/utils';
4
-
5
-function isEventSupported() {
6
-  const eventName = 'onwheel';
7
-  let isSupported = eventName in document;
8
-
9
-  if (!isSupported) {
10
-    const element = document.createElement('div');
11
-    element.setAttribute(eventName, 'return;');
12
-    isSupported = typeof element[eventName] === 'function';
13
-  }
14
-
15
-  if (!isSupported
16
-    && document.implementation
17
-    && document.implementation.hasFeature
18
-    // always returns true in newer browsers as per the standard.
19
-    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
20
-    && document.implementation.hasFeature('', '') !== true
21
-  ) {
22
-    // This is the only way to test support for the `wheel` event in IE9+.
23
-    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
24
-  }
25
-
26
-  return isSupported;
27
-}
28
-const Mousewheel = {
29
-  lastScrollTime: Utils.now(),
30
-  lastEventBeforeSnap: undefined,
31
-  recentWheelEvents: [],
32
-  event() {
33
-    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
34
-    return isEventSupported() ? 'wheel' : 'mousewheel';
35
-  },
36
-  normalize(e) {
37
-    // Reasonable defaults
38
-    const PIXEL_STEP = 10;
39
-    const LINE_HEIGHT = 40;
40
-    const PAGE_HEIGHT = 800;
41
-
42
-    let sX = 0;
43
-    let sY = 0; // spinX, spinY
44
-    let pX = 0;
45
-    let pY = 0; // pixelX, pixelY
46
-
47
-    // Legacy
48
-    if ('detail' in e) {
49
-      sY = e.detail;
50
-    }
51
-    if ('wheelDelta' in e) {
52
-      sY = -e.wheelDelta / 120;
53
-    }
54
-    if ('wheelDeltaY' in e) {
55
-      sY = -e.wheelDeltaY / 120;
56
-    }
57
-    if ('wheelDeltaX' in e) {
58
-      sX = -e.wheelDeltaX / 120;
59
-    }
60
-
61
-    // side scrolling on FF with DOMMouseScroll
62
-    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
63
-      sX = sY;
64
-      sY = 0;
65
-    }
66
-
67
-    pX = sX * PIXEL_STEP;
68
-    pY = sY * PIXEL_STEP;
69
-
70
-    if ('deltaY' in e) {
71
-      pY = e.deltaY;
72
-    }
73
-    if ('deltaX' in e) {
74
-      pX = e.deltaX;
75
-    }
76
-
77
-    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
78
-      pX = pY;
79
-      pY = 0;
80
-    }
81
-
82
-    if ((pX || pY) && e.deltaMode) {
83
-      if (e.deltaMode === 1) { // delta in LINE units
84
-        pX *= LINE_HEIGHT;
85
-        pY *= LINE_HEIGHT;
86
-      } else { // delta in PAGE units
87
-        pX *= PAGE_HEIGHT;
88
-        pY *= PAGE_HEIGHT;
89
-      }
90
-    }
91
-
92
-    // Fall-back if spin cannot be determined
93
-    if (pX && !sX) {
94
-      sX = (pX < 1) ? -1 : 1;
95
-    }
96
-    if (pY && !sY) {
97
-      sY = (pY < 1) ? -1 : 1;
98
-    }
99
-
100
-    return {
101
-      spinX: sX,
102
-      spinY: sY,
103
-      pixelX: pX,
104
-      pixelY: pY,
105
-    };
106
-  },
107
-  handleMouseEnter() {
108
-    const swiper = this;
109
-    swiper.mouseEntered = true;
110
-  },
111
-  handleMouseLeave() {
112
-    const swiper = this;
113
-    swiper.mouseEntered = false;
114
-  },
115
-  handle(event) {
116
-    let e = event;
117
-    const swiper = this;
118
-    const params = swiper.params.mousewheel;
119
-
120
-    if (swiper.params.cssMode) {
121
-      e.preventDefault();
122
-    }
123
-
124
-    let target = swiper.$el;
125
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
126
-      target = $(swiper.params.mousewheel.eventsTarged);
127
-    }
128
-    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
129
-
130
-    if (e.originalEvent) e = e.originalEvent; // jquery fix
131
-    let delta = 0;
132
-    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
133
-
134
-    const data = Mousewheel.normalize(e);
135
-
136
-    if (params.forceToAxis) {
137
-      if (swiper.isHorizontal()) {
138
-        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;
139
-        else return true;
140
-      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;
141
-      else return true;
142
-    } else {
143
-      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
144
-    }
145
-
146
-    if (delta === 0) return true;
147
-
148
-    if (params.invert) delta = -delta;
149
-
150
-    if (!swiper.params.freeMode) {
151
-      // Register the new event in a variable which stores the relevant data
152
-      const newEvent = {
153
-        time: Utils.now(),
154
-        delta: Math.abs(delta),
155
-        direction: Math.sign(delta),
156
-        raw: event,
157
-      };
158
-
159
-      // Keep the most recent events
160
-      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
161
-      if (recentWheelEvents.length >= 2) {
162
-        recentWheelEvents.shift(); // only store the last N events
163
-      }
164
-      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
165
-      recentWheelEvents.push(newEvent);
166
-
167
-      // If there is at least one previous recorded event:
168
-      //   If direction has changed or
169
-      //   if the scroll is quicker than the previous one:
170
-      //     Animate the slider.
171
-      // Else (this is the first time the wheel is moved):
172
-      //     Animate the slider.
173
-      if (prevEvent) {
174
-        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
175
-          swiper.mousewheel.animateSlider(newEvent);
176
-        }
177
-      } else {
178
-        swiper.mousewheel.animateSlider(newEvent);
179
-      }
180
-
181
-      // If it's time to release the scroll:
182
-      //   Return now so you don't hit the preventDefault.
183
-      if (swiper.mousewheel.releaseScroll(newEvent)) {
184
-        return true;
185
-      }
186
-    } else {
187
-      // Freemode or scrollContainer:
188
-
189
-      // If we recently snapped after a momentum scroll, then ignore wheel events
190
-      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
191
-      // or if it's a new scroll (larger delta or inverse sign as last event before
192
-      // an end-of-momentum snap).
193
-      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
194
-      const { lastEventBeforeSnap } = swiper.mousewheel;
195
-      const ignoreWheelEvents = lastEventBeforeSnap
196
-        && newEvent.time < lastEventBeforeSnap.time + 500
197
-        && newEvent.delta <= lastEventBeforeSnap.delta
198
-        && newEvent.direction === lastEventBeforeSnap.direction;
199
-      if (!ignoreWheelEvents) {
200
-        swiper.mousewheel.lastEventBeforeSnap = undefined;
201
-
202
-        if (swiper.params.loop) {
203
-          swiper.loopFix();
204
-        }
205
-        let position = swiper.getTranslate() + (delta * params.sensitivity);
206
-        const wasBeginning = swiper.isBeginning;
207
-        const wasEnd = swiper.isEnd;
208
-
209
-        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
210
-        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
211
-
212
-        swiper.setTransition(0);
213
-        swiper.setTranslate(position);
214
-        swiper.updateProgress();
215
-        swiper.updateActiveIndex();
216
-        swiper.updateSlidesClasses();
217
-
218
-        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
219
-          swiper.updateSlidesClasses();
220
-        }
221
-
222
-        if (swiper.params.freeModeSticky) {
223
-          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
224
-          // the end of a momentum scroll by storing recent (N=15?) wheel events.
225
-          // 1. do all N events have decreasing or same (absolute value) delta?
226
-          // 2. did all N events arrive in the last M (M=500?) msecs?
227
-          // 3. does the earliest event have an (absolute value) delta that's
228
-          //    at least P (P=1?) larger than the most recent event's delta?
229
-          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
230
-          // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
231
-          // Snap immediately and ignore remaining wheel events in this scroll.
232
-          // See comment above for "remaining wheel events in this scroll" determination.
233
-          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
234
-          clearTimeout(swiper.mousewheel.timeout);
235
-          swiper.mousewheel.timeout = undefined;
236
-          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
237
-          if (recentWheelEvents.length >= 15) {
238
-            recentWheelEvents.shift(); // only store the last N events
239
-          }
240
-          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
241
-          const firstEvent = recentWheelEvents[0];
242
-          recentWheelEvents.push(newEvent);
243
-          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
244
-            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
245
-            recentWheelEvents.splice(0);
246
-          } else if (recentWheelEvents.length >= 15
247
-              && newEvent.time - firstEvent.time < 500
248
-              && firstEvent.delta - newEvent.delta >= 1
249
-              && newEvent.delta <= 6
250
-          ) {
251
-            // We're at the end of the deceleration of a momentum scroll, so there's no need
252
-            // to wait for more events. Snap ASAP on the next tick.
253
-            // Also, because there's some remaining momentum we'll bias the snap in the
254
-            // direction of the ongoing scroll because it's better UX for the scroll to snap
255
-            // in the same direction as the scroll instead of reversing to snap.  Therefore,
256
-            // if it's already scrolled more than 20% in the current direction, keep going.
257
-            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
258
-            swiper.mousewheel.lastEventBeforeSnap = newEvent;
259
-            recentWheelEvents.splice(0);
260
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
261
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
262
-            }, 0); // no delay; move on next tick
263
-          }
264
-          if (!swiper.mousewheel.timeout) {
265
-            // if we get here, then we haven't detected the end of a momentum scroll, so
266
-            // we'll consider a scroll "complete" when there haven't been any wheel events
267
-            // for 500ms.
268
-            swiper.mousewheel.timeout = Utils.nextTick(() => {
269
-              const snapToThreshold = 0.5;
270
-              swiper.mousewheel.lastEventBeforeSnap = newEvent;
271
-              recentWheelEvents.splice(0);
272
-              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
273
-            }, 500);
274
-          }
275
-        }
276
-
277
-        // Emit event
278
-        if (!ignoreWheelEvents) swiper.emit('scroll', e);
279
-
280
-        // Stop autoplay
281
-        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
282
-        // Return page scroll on edge positions
283
-        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
284
-      }
285
-    }
286
-
287
-    if (e.preventDefault) e.preventDefault();
288
-    else e.returnValue = false;
289
-    return false;
290
-  },
291
-  animateSlider(newEvent) {
292
-    const swiper = this;
293
-    // If the movement is NOT big enough and
294
-    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
295
-    //   Don't go any further (avoid insignificant scroll movement).
296
-    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
297
-      // Return false as a default
298
-      return true;
299
-    }
300
-    // If user is scrolling towards the end:
301
-    //   If the slider hasn't hit the latest slide or
302
-    //   if the slider is a loop and
303
-    //   if the slider isn't moving right now:
304
-    //     Go to next slide and
305
-    //     emit a scroll event.
306
-    // Else (the user is scrolling towards the beginning) and
307
-    // if the slider hasn't hit the first slide or
308
-    // if the slider is a loop and
309
-    // if the slider isn't moving right now:
310
-    //   Go to prev slide and
311
-    //   emit a scroll event.
312
-    if (newEvent.direction < 0) {
313
-      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
314
-        swiper.slideNext();
315
-        swiper.emit('scroll', newEvent.raw);
316
-      }
317
-    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
318
-      swiper.slidePrev();
319
-      swiper.emit('scroll', newEvent.raw);
320
-    }
321
-    // If you got here is because an animation has been triggered so store the current time
322
-    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();
323
-    // Return false as a default
324
-    return false;
325
-  },
326
-  releaseScroll(newEvent) {
327
-    const swiper = this;
328
-    const params = swiper.params.mousewheel;
329
-    if (newEvent.direction < 0) {
330
-      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
331
-        // Return true to animate scroll on edges
332
-        return true;
333
-      }
334
-    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
335
-      // Return true to animate scroll on edges
336
-      return true;
337
-    }
338
-    return false;
339
-  },
340
-  enable() {
341
-    const swiper = this;
342
-    const event = Mousewheel.event();
343
-    if (swiper.params.cssMode) {
344
-      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
345
-      return true;
346
-    }
347
-    if (!event) return false;
348
-    if (swiper.mousewheel.enabled) return false;
349
-    let target = swiper.$el;
350
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
351
-      target = $(swiper.params.mousewheel.eventsTarged);
352
-    }
353
-    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
354
-    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
355
-    target.on(event, swiper.mousewheel.handle);
356
-    swiper.mousewheel.enabled = true;
357
-    return true;
358
-  },
359
-  disable() {
360
-    const swiper = this;
361
-    const event = Mousewheel.event();
362
-    if (swiper.params.cssMode) {
363
-      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
364
-      return true;
365
-    }
366
-    if (!event) return false;
367
-    if (!swiper.mousewheel.enabled) return false;
368
-    let target = swiper.$el;
369
-    if (swiper.params.mousewheel.eventsTarged !== 'container') {
370
-      target = $(swiper.params.mousewheel.eventsTarged);
371
-    }
372
-    target.off(event, swiper.mousewheel.handle);
373
-    swiper.mousewheel.enabled = false;
374
-    return true;
375
-  },
376
-};
377
-
378
-export default {
379
-  name: 'mousewheel',
380
-  params: {
381
-    mousewheel: {
382
-      enabled: false,
383
-      releaseOnEdges: false,
384
-      invert: false,
385
-      forceToAxis: false,
386
-      sensitivity: 1,
387
-      eventsTarged: 'container',
388
-    },
389
-  },
390
-  create() {
391
-    const swiper = this;
392
-    Utils.extend(swiper, {
393
-      mousewheel: {
394
-        enabled: false,
395
-        enable: Mousewheel.enable.bind(swiper),
396
-        disable: Mousewheel.disable.bind(swiper),
397
-        handle: Mousewheel.handle.bind(swiper),
398
-        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
399
-        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
400
-        animateSlider: Mousewheel.animateSlider.bind(swiper),
401
-        releaseScroll: Mousewheel.releaseScroll.bind(swiper),
402
-        lastScrollTime: Utils.now(),
403
-        lastEventBeforeSnap: undefined,
404
-        recentWheelEvents: [],
405
-      },
406
-    });
407
-  },
408
-  on: {
409
-    init() {
410
-      const swiper = this;
411
-      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
412
-        swiper.mousewheel.disable();
413
-      }
414
-      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
415
-    },
416
-    destroy() {
417
-      const swiper = this;
418
-      if (swiper.params.cssMode) {
419
-        swiper.mousewheel.enable();
420
-      }
421
-      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
422
-    },
423
-  },
424
-};
425 0
deleted file mode 100644
... ...
@@ -1,171 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Navigation = {
5
-  update() {
6
-    // Update Navigation Buttons
7
-    const swiper = this;
8
-    const params = swiper.params.navigation;
9
-
10
-    if (swiper.params.loop) return;
11
-    const { $nextEl, $prevEl } = swiper.navigation;
12
-
13
-    if ($prevEl && $prevEl.length > 0) {
14
-      if (swiper.isBeginning) {
15
-        $prevEl.addClass(params.disabledClass);
16
-      } else {
17
-        $prevEl.removeClass(params.disabledClass);
18
-      }
19
-      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
20
-    }
21
-    if ($nextEl && $nextEl.length > 0) {
22
-      if (swiper.isEnd) {
23
-        $nextEl.addClass(params.disabledClass);
24
-      } else {
25
-        $nextEl.removeClass(params.disabledClass);
26
-      }
27
-      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
28
-    }
29
-  },
30
-  onPrevClick(e) {
31
-    const swiper = this;
32
-    e.preventDefault();
33
-    if (swiper.isBeginning && !swiper.params.loop) return;
34
-    swiper.slidePrev();
35
-  },
36
-  onNextClick(e) {
37
-    const swiper = this;
38
-    e.preventDefault();
39
-    if (swiper.isEnd && !swiper.params.loop) return;
40
-    swiper.slideNext();
41
-  },
42
-  init() {
43
-    const swiper = this;
44
-    const params = swiper.params.navigation;
45
-    if (!(params.nextEl || params.prevEl)) return;
46
-
47
-    let $nextEl;
48
-    let $prevEl;
49
-    if (params.nextEl) {
50
-      $nextEl = $(params.nextEl);
51
-      if (
52
-        swiper.params.uniqueNavElements
53
-        && typeof params.nextEl === 'string'
54
-        && $nextEl.length > 1
55
-        && swiper.$el.find(params.nextEl).length === 1
56
-      ) {
57
-        $nextEl = swiper.$el.find(params.nextEl);
58
-      }
59
-    }
60
-    if (params.prevEl) {
61
-      $prevEl = $(params.prevEl);
62
-      if (
63
-        swiper.params.uniqueNavElements
64
-        && typeof params.prevEl === 'string'
65
-        && $prevEl.length > 1
66
-        && swiper.$el.find(params.prevEl).length === 1
67
-      ) {
68
-        $prevEl = swiper.$el.find(params.prevEl);
69
-      }
70
-    }
71
-
72
-    if ($nextEl && $nextEl.length > 0) {
73
-      $nextEl.on('click', swiper.navigation.onNextClick);
74
-    }
75
-    if ($prevEl && $prevEl.length > 0) {
76
-      $prevEl.on('click', swiper.navigation.onPrevClick);
77
-    }
78
-
79
-    Utils.extend(swiper.navigation, {
80
-      $nextEl,
81
-      nextEl: $nextEl && $nextEl[0],
82
-      $prevEl,
83
-      prevEl: $prevEl && $prevEl[0],
84
-    });
85
-  },
86
-  destroy() {
87
-    const swiper = this;
88
-    const { $nextEl, $prevEl } = swiper.navigation;
89
-    if ($nextEl && $nextEl.length) {
90
-      $nextEl.off('click', swiper.navigation.onNextClick);
91
-      $nextEl.removeClass(swiper.params.navigation.disabledClass);
92
-    }
93
-    if ($prevEl && $prevEl.length) {
94
-      $prevEl.off('click', swiper.navigation.onPrevClick);
95
-      $prevEl.removeClass(swiper.params.navigation.disabledClass);
96
-    }
97
-  },
98
-};
99
-
100
-export default {
101
-  name: 'navigation',
102
-  params: {
103
-    navigation: {
104
-      nextEl: null,
105
-      prevEl: null,
106
-
107
-      hideOnClick: false,
108
-      disabledClass: 'swiper-button-disabled',
109
-      hiddenClass: 'swiper-button-hidden',
110
-      lockClass: 'swiper-button-lock',
111
-    },
112
-  },
113
-  create() {
114
-    const swiper = this;
115
-    Utils.extend(swiper, {
116
-      navigation: {
117
-        init: Navigation.init.bind(swiper),
118
-        update: Navigation.update.bind(swiper),
119
-        destroy: Navigation.destroy.bind(swiper),
120
-        onNextClick: Navigation.onNextClick.bind(swiper),
121
-        onPrevClick: Navigation.onPrevClick.bind(swiper),
122
-      },
123
-    });
124
-  },
125
-  on: {
126
-    init() {
127
-      const swiper = this;
128
-      swiper.navigation.init();
129
-      swiper.navigation.update();
130
-    },
131
-    toEdge() {
132
-      const swiper = this;
133
-      swiper.navigation.update();
134
-    },
135
-    fromEdge() {
136
-      const swiper = this;
137
-      swiper.navigation.update();
138
-    },
139
-    destroy() {
140
-      const swiper = this;
141
-      swiper.navigation.destroy();
142
-    },
143
-    click(e) {
144
-      const swiper = this;
145
-      const { $nextEl, $prevEl } = swiper.navigation;
146
-      if (
147
-        swiper.params.navigation.hideOnClick
148
-        && !$(e.target).is($prevEl)
149
-        && !$(e.target).is($nextEl)
150
-      ) {
151
-        let isHidden;
152
-        if ($nextEl) {
153
-          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
154
-        } else if ($prevEl) {
155
-          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
156
-        }
157
-        if (isHidden === true) {
158
-          swiper.emit('navigationShow', swiper);
159
-        } else {
160
-          swiper.emit('navigationHide', swiper);
161
-        }
162
-        if ($nextEl) {
163
-          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
164
-        }
165
-        if ($prevEl) {
166
-          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
167
-        }
168
-      }
169
-    },
170
-  },
171
-};
172 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-:root {
2
-  --swiper-navigation-size: 44px;
3
-  /*
4
-  --swiper-navigation-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-button-prev, .swiper-button-next {
8
-  position: absolute;
9
-  top: 50%;
10
-  width: calc(var(--swiper-navigation-size) / 44 * 27);
11
-  height: var(--swiper-navigation-size);
12
-  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
13
-  z-index: 10;
14
-  cursor: pointer;
15
-  display: flex;
16
-  align-items: center;
17
-  justify-content: center;
18
-  color: var(--swiper-navigation-color, var(--swiper-theme-color));
19
-  &.swiper-button-disabled {
20
-    opacity: 0.35;
21
-    cursor: auto;
22
-    pointer-events: none;
23
-  }
24
-  &:after {
25
-    font-family: swiper-icons;
26
-    font-size: var(--swiper-navigation-size);
27
-    text-transform: none !important;
28
-    letter-spacing: 0;
29
-    text-transform: none;
30
-    font-variant: initial;
31
-    line-height: 1;
32
-  }
33
-}
34
-.swiper-button-prev,
35
-.swiper-container-rtl .swiper-button-next {
36
-  &:after {
37
-    content: 'prev';
38
-  }
39
-  left: 10px;
40
-  right: auto;
41
-}
42
-.swiper-button-next,
43
-.swiper-container-rtl .swiper-button-prev {
44
-  &:after {
45
-    content: 'next';
46
-  }
47
-  right: 10px;
48
-  left: auto;
49
-}
50
-.navigation-color-loop({
51
-  .swiper-button-prev,
52
-  .swiper-button-next {
53
-    &.swiper-button-@{navColorName} {
54
-      --swiper-navigation-color: @navColorValue;
55
-    }
56
-  }
57
-});
58
-.swiper-button-lock {
59
-  display: none;
60
-}
61 0
deleted file mode 100644
... ...
@@ -1,61 +0,0 @@
1
-:root {
2
-  --swiper-navigation-size: 44px;
3
-  /*
4
-  --swiper-navigation-color: var(--swiper-theme-color);
5
-  */
6
-}
7
-.swiper-button-prev, .swiper-button-next {
8
-  position: absolute;
9
-  top: 50%;
10
-  width: calc(var(--swiper-navigation-size) / 44 * 27);
11
-  height: var(--swiper-navigation-size);
12
-  margin-top: calc(-1 * var(--swiper-navigation-size) / 2);
13
-  z-index: 10;
14
-  cursor: pointer;
15
-  display: flex;
16
-  align-items: center;
17
-  justify-content: center;
18
-  color: var(--swiper-navigation-color, var(--swiper-theme-color));
19
-  &.swiper-button-disabled {
20
-    opacity: 0.35;
21
-    cursor: auto;
22
-    pointer-events: none;
23
-  }
24
-  &:after {
25
-    font-family: swiper-icons;
26
-    font-size: var(--swiper-navigation-size);
27
-    text-transform: none !important;
28
-    letter-spacing: 0;
29
-    text-transform: none;
30
-    font-variant: initial;
31
-    line-height: 1;
32
-  }
33
-}
34
-.swiper-button-prev,
35
-.swiper-container-rtl .swiper-button-next {
36
-  &:after {
37
-    content: 'prev';
38
-  }
39
-  left: 10px;
40
-  right: auto;
41
-}
42
-.swiper-button-next,
43
-.swiper-container-rtl .swiper-button-prev {
44
-  &:after {
45
-    content: 'next';
46
-  }
47
-  right: 10px;
48
-  left: auto;
49
-}
50
-
51
-@each $navColorName, $navColorValue in $colors {
52
-  .swiper-button-prev,
53
-  .swiper-button-next {
54
-    &.swiper-button-#{$navColorName} {
55
-      --swiper-navigation-color: #{$navColorValue};
56
-    }
57
-  }
58
-}
59
-.swiper-button-lock {
60
-  display: none;
61
-}
62 0
deleted file mode 100644
... ...
@@ -1,360 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Pagination = {
5
-  update() {
6
-    // Render || Update Pagination bullets/items
7
-    const swiper = this;
8
-    const rtl = swiper.rtl;
9
-    const params = swiper.params.pagination;
10
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
11
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
12
-    const $el = swiper.pagination.$el;
13
-    // Current/Total
14
-    let current;
15
-    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
16
-    if (swiper.params.loop) {
17
-      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
18
-      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
19
-        current -= (slidesLength - (swiper.loopedSlides * 2));
20
-      }
21
-      if (current > total - 1) current -= total;
22
-      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
23
-    } else if (typeof swiper.snapIndex !== 'undefined') {
24
-      current = swiper.snapIndex;
25
-    } else {
26
-      current = swiper.activeIndex || 0;
27
-    }
28
-    // Types
29
-    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
30
-      const bullets = swiper.pagination.bullets;
31
-      let firstIndex;
32
-      let lastIndex;
33
-      let midIndex;
34
-      if (params.dynamicBullets) {
35
-        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
36
-        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
37
-        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
38
-          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
39
-          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
40
-            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
41
-          } else if (swiper.pagination.dynamicBulletIndex < 0) {
42
-            swiper.pagination.dynamicBulletIndex = 0;
43
-          }
44
-        }
45
-        firstIndex = current - swiper.pagination.dynamicBulletIndex;
46
-        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
47
-        midIndex = (lastIndex + firstIndex) / 2;
48
-      }
49
-      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
50
-      if ($el.length > 1) {
51
-        bullets.each((index, bullet) => {
52
-          const $bullet = $(bullet);
53
-          const bulletIndex = $bullet.index();
54
-          if (bulletIndex === current) {
55
-            $bullet.addClass(params.bulletActiveClass);
56
-          }
57
-          if (params.dynamicBullets) {
58
-            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
59
-              $bullet.addClass(`${params.bulletActiveClass}-main`);
60
-            }
61
-            if (bulletIndex === firstIndex) {
62
-              $bullet
63
-                .prev()
64
-                .addClass(`${params.bulletActiveClass}-prev`)
65
-                .prev()
66
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
67
-            }
68
-            if (bulletIndex === lastIndex) {
69
-              $bullet
70
-                .next()
71
-                .addClass(`${params.bulletActiveClass}-next`)
72
-                .next()
73
-                .addClass(`${params.bulletActiveClass}-next-next`);
74
-            }
75
-          }
76
-        });
77
-      } else {
78
-        const $bullet = bullets.eq(current);
79
-        const bulletIndex = $bullet.index();
80
-        $bullet.addClass(params.bulletActiveClass);
81
-        if (params.dynamicBullets) {
82
-          const $firstDisplayedBullet = bullets.eq(firstIndex);
83
-          const $lastDisplayedBullet = bullets.eq(lastIndex);
84
-          for (let i = firstIndex; i <= lastIndex; i += 1) {
85
-            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
86
-          }
87
-          if (swiper.params.loop) {
88
-            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
89
-              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
90
-                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
91
-              }
92
-              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
93
-            } else {
94
-              $firstDisplayedBullet
95
-                .prev()
96
-                .addClass(`${params.bulletActiveClass}-prev`)
97
-                .prev()
98
-                .addClass(`${params.bulletActiveClass}-prev-prev`);
99
-              $lastDisplayedBullet
100
-                .next()
101
-                .addClass(`${params.bulletActiveClass}-next`)
102
-                .next()
103
-                .addClass(`${params.bulletActiveClass}-next-next`);
104
-            }
105
-          } else {
106
-            $firstDisplayedBullet
107
-              .prev()
108
-              .addClass(`${params.bulletActiveClass}-prev`)
109
-              .prev()
110
-              .addClass(`${params.bulletActiveClass}-prev-prev`);
111
-            $lastDisplayedBullet
112
-              .next()
113
-              .addClass(`${params.bulletActiveClass}-next`)
114
-              .next()
115
-              .addClass(`${params.bulletActiveClass}-next-next`);
116
-          }
117
-        }
118
-      }
119
-      if (params.dynamicBullets) {
120
-        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
121
-        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
122
-        const offsetProp = rtl ? 'right' : 'left';
123
-        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
124
-      }
125
-    }
126
-    if (params.type === 'fraction') {
127
-      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
128
-      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
129
-    }
130
-    if (params.type === 'progressbar') {
131
-      let progressbarDirection;
132
-      if (params.progressbarOpposite) {
133
-        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
134
-      } else {
135
-        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
136
-      }
137
-      const scale = (current + 1) / total;
138
-      let scaleX = 1;
139
-      let scaleY = 1;
140
-      if (progressbarDirection === 'horizontal') {
141
-        scaleX = scale;
142
-      } else {
143
-        scaleY = scale;
144
-      }
145
-      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
146
-    }
147
-    if (params.type === 'custom' && params.renderCustom) {
148
-      $el.html(params.renderCustom(swiper, current + 1, total));
149
-      swiper.emit('paginationRender', swiper, $el[0]);
150
-    } else {
151
-      swiper.emit('paginationUpdate', swiper, $el[0]);
152
-    }
153
-    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
154
-  },
155
-  render() {
156
-    // Render Container
157
-    const swiper = this;
158
-    const params = swiper.params.pagination;
159
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
160
-    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
161
-
162
-    const $el = swiper.pagination.$el;
163
-    let paginationHTML = '';
164
-    if (params.type === 'bullets') {
165
-      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
166
-      for (let i = 0; i < numberOfBullets; i += 1) {
167
-        if (params.renderBullet) {
168
-          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
169
-        } else {
170
-          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
171
-        }
172
-      }
173
-      $el.html(paginationHTML);
174
-      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);
175
-    }
176
-    if (params.type === 'fraction') {
177
-      if (params.renderFraction) {
178
-        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
179
-      } else {
180
-        paginationHTML = `<span class="${params.currentClass}"></span>`
181
-        + ' / '
182
-        + `<span class="${params.totalClass}"></span>`;
183
-      }
184
-      $el.html(paginationHTML);
185
-    }
186
-    if (params.type === 'progressbar') {
187
-      if (params.renderProgressbar) {
188
-        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
189
-      } else {
190
-        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
191
-      }
192
-      $el.html(paginationHTML);
193
-    }
194
-    if (params.type !== 'custom') {
195
-      swiper.emit('paginationRender', swiper.pagination.$el[0]);
196
-    }
197
-  },
198
-  init() {
199
-    const swiper = this;
200
-    const params = swiper.params.pagination;
201
-    if (!params.el) return;
202
-
203
-    let $el = $(params.el);
204
-    if ($el.length === 0) return;
205
-
206
-    if (
207
-      swiper.params.uniqueNavElements
208
-      && typeof params.el === 'string'
209
-      && $el.length > 1
210
-      && swiper.$el.find(params.el).length === 1
211
-    ) {
212
-      $el = swiper.$el.find(params.el);
213
-    }
214
-
215
-    if (params.type === 'bullets' && params.clickable) {
216
-      $el.addClass(params.clickableClass);
217
-    }
218
-
219
-    $el.addClass(params.modifierClass + params.type);
220
-
221
-    if (params.type === 'bullets' && params.dynamicBullets) {
222
-      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
223
-      swiper.pagination.dynamicBulletIndex = 0;
224
-      if (params.dynamicMainBullets < 1) {
225
-        params.dynamicMainBullets = 1;
226
-      }
227
-    }
228
-    if (params.type === 'progressbar' && params.progressbarOpposite) {
229
-      $el.addClass(params.progressbarOppositeClass);
230
-    }
231
-
232
-    if (params.clickable) {
233
-      $el.on('click', `.${params.bulletClass}`, function onClick(e) {
234
-        e.preventDefault();
235
-        let index = $(this).index() * swiper.params.slidesPerGroup;
236
-        if (swiper.params.loop) index += swiper.loopedSlides;
237
-        swiper.slideTo(index);
238
-      });
239
-    }
240
-
241
-    Utils.extend(swiper.pagination, {
242
-      $el,
243
-      el: $el[0],
244
-    });
245
-  },
246
-  destroy() {
247
-    const swiper = this;
248
-    const params = swiper.params.pagination;
249
-    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
250
-    const $el = swiper.pagination.$el;
251
-
252
-    $el.removeClass(params.hiddenClass);
253
-    $el.removeClass(params.modifierClass + params.type);
254
-    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
255
-    if (params.clickable) {
256
-      $el.off('click', `.${params.bulletClass}`);
257
-    }
258
-  },
259
-};
260
-
261
-export default {
262
-  name: 'pagination',
263
-  params: {
264
-    pagination: {
265
-      el: null,
266
-      bulletElement: 'span',
267
-      clickable: false,
268
-      hideOnClick: false,
269
-      renderBullet: null,
270
-      renderProgressbar: null,
271
-      renderFraction: null,
272
-      renderCustom: null,
273
-      progressbarOpposite: false,
274
-      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
275
-      dynamicBullets: false,
276
-      dynamicMainBullets: 1,
277
-      formatFractionCurrent: (number) => number,
278
-      formatFractionTotal: (number) => number,
279
-      bulletClass: 'swiper-pagination-bullet',
280
-      bulletActiveClass: 'swiper-pagination-bullet-active',
281
-      modifierClass: 'swiper-pagination-', // NEW
282
-      currentClass: 'swiper-pagination-current',
283
-      totalClass: 'swiper-pagination-total',
284
-      hiddenClass: 'swiper-pagination-hidden',
285
-      progressbarFillClass: 'swiper-pagination-progressbar-fill',
286
-      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
287
-      clickableClass: 'swiper-pagination-clickable', // NEW
288
-      lockClass: 'swiper-pagination-lock',
289
-    },
290
-  },
291
-  create() {
292
-    const swiper = this;
293
-    Utils.extend(swiper, {
294
-      pagination: {
295
-        init: Pagination.init.bind(swiper),
296
-        render: Pagination.render.bind(swiper),
297
-        update: Pagination.update.bind(swiper),
298
-        destroy: Pagination.destroy.bind(swiper),
299
-        dynamicBulletIndex: 0,
300
-      },
301
-    });
302
-  },
303
-  on: {
304
-    init() {
305
-      const swiper = this;
306
-      swiper.pagination.init();
307
-      swiper.pagination.render();
308
-      swiper.pagination.update();
309
-    },
310
-    activeIndexChange() {
311
-      const swiper = this;
312
-      if (swiper.params.loop) {
313
-        swiper.pagination.update();
314
-      } else if (typeof swiper.snapIndex === 'undefined') {
315
-        swiper.pagination.update();
316
-      }
317
-    },
318
-    snapIndexChange() {
319
-      const swiper = this;
320
-      if (!swiper.params.loop) {
321
-        swiper.pagination.update();
322
-      }
323
-    },
324
-    slidesLengthChange() {
325
-      const swiper = this;
326
-      if (swiper.params.loop) {
327
-        swiper.pagination.render();
328
-        swiper.pagination.update();
329
-      }
330
-    },
331
-    snapGridLengthChange() {
332
-      const swiper = this;
333
-      if (!swiper.params.loop) {
334
-        swiper.pagination.render();
335
-        swiper.pagination.update();
336
-      }
337
-    },
338
-    destroy() {
339
-      const swiper = this;
340
-      swiper.pagination.destroy();
341
-    },
342
-    click(e) {
343
-      const swiper = this;
344
-      if (
345
-        swiper.params.pagination.el
346
-        && swiper.params.pagination.hideOnClick
347
-        && swiper.pagination.$el.length > 0
348
-        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
349
-      ) {
350
-        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
351
-        if (isHidden === true) {
352
-          swiper.emit('paginationShow', swiper);
353
-        } else {
354
-          swiper.emit('paginationHide', swiper);
355
-        }
356
-        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
357
-      }
358
-    },
359
-  },
360
-};
361 0
deleted file mode 100644
... ...
@@ -1,149 +0,0 @@
1
-:root {
2
-  /*
3
-  --swiper-pagination-color: var(--swiper-theme-color);
4
-  */
5
-}
6
-.swiper-pagination {
7
-  position: absolute;
8
-  text-align: center;
9
-  transition: 300ms opacity;
10
-  transform: translate3d(0,0,0);
11
-  z-index: 10;
12
-  &.swiper-pagination-hidden {
13
-    opacity: 0;
14
-  }
15
-}
16
-/* Common Styles */
17
-.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{
18
-  bottom: 10px;
19
-  left: 0;
20
-  width: 100%;
21
-}
22
-/* Bullets */
23
-.swiper-pagination-bullets-dynamic {
24
-  overflow: hidden;
25
-  font-size: 0;
26
-  .swiper-pagination-bullet {
27
-    transform: scale(0.33);
28
-    position: relative;
29
-  }
30
-  .swiper-pagination-bullet-active {
31
-    transform: scale(1);
32
-  }
33
-  .swiper-pagination-bullet-active-main {
34
-    transform: scale(1);
35
-  }
36
-  .swiper-pagination-bullet-active-prev {
37
-    transform: scale(0.66);
38
-  }
39
-  .swiper-pagination-bullet-active-prev-prev {
40
-    transform: scale(0.33);
41
-  }
42
-  .swiper-pagination-bullet-active-next {
43
-    transform: scale(0.66);
44
-  }
45
-  .swiper-pagination-bullet-active-next-next {
46
-    transform: scale(0.33);
47
-  }
48
-}
49
-.swiper-pagination-bullet {
50
-  width: 8px;
51
-  height: 8px;
52
-  display: inline-block;
53
-  border-radius: 100%;
54
-  background: #000;
55
-  opacity: 0.2;
56
-  button& {
57
-    border: none;
58
-    margin: 0;
59
-    padding: 0;
60
-    box-shadow: none;
61
-    appearance: none;
62
-  }
63
-  .swiper-pagination-clickable & {
64
-    cursor: pointer;
65
-  }
66
-}
67
-.swiper-pagination-bullet-active {
68
-  opacity: 1;
69
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
70
-}
71
-
72
-.swiper-container-vertical {
73
-  > .swiper-pagination-bullets {
74
-    right: 10px;
75
-    top: 50%;
76
-    transform:translate3d(0px,-50%,0);
77
-    .swiper-pagination-bullet {
78
-      margin: 6px 0;
79
-      display: block;
80
-    }
81
-    &.swiper-pagination-bullets-dynamic {
82
-      top: 50%;
83
-      transform: translateY(-50%);
84
-      width: 8px;
85
-      .swiper-pagination-bullet {
86
-        display: inline-block;
87
-        transition: 200ms transform, 200ms top;
88
-      }
89
-    }
90
-  }
91
-}
92
-.swiper-container-horizontal {
93
-  > .swiper-pagination-bullets {
94
-    .swiper-pagination-bullet {
95
-      margin: 0 4px;
96
-    }
97
-    &.swiper-pagination-bullets-dynamic {
98
-      left: 50%;
99
-      transform: translateX(-50%);
100
-      white-space: nowrap;
101
-      .swiper-pagination-bullet {
102
-        transition: 200ms transform, 200ms left;
103
-      }
104
-    }
105
-  }
106
-  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
107
-    transition: 200ms transform, 200ms right;
108
-  }
109
-}
110
-/* Progress */
111
-.swiper-pagination-progressbar {
112
-  background: rgba(0,0,0,0.25);
113
-  position: absolute;
114
-  .swiper-pagination-progressbar-fill {
115
-    background: var(--swiper-pagination-color, var(--swiper-theme-color));
116
-    position: absolute;
117
-    left: 0;
118
-    top: 0;
119
-    width: 100%;
120
-    height: 100%;
121
-    transform: scale(0);
122
-    transform-origin: left top;
123
-  }
124
-  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
125
-    transform-origin: right top;
126
-  }
127
-  .swiper-container-horizontal > &,
128
-  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
129
-    width: 100%;
130
-    height: 4px;
131
-    left: 0;
132
-    top: 0;
133
-  }
134
-  .swiper-container-vertical > &,
135
-  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
136
-    width: 4px;
137
-    height: 100%;
138
-    left: 0;
139
-    top: 0;
140
-  }
141
-}
142
-.pagination-color-loop({
143
-  .swiper-pagination-@{paginationColorName} {
144
-    --swiper-pagination-color: @paginationColorValue;
145
-  }
146
-});
147
-.swiper-pagination-lock {
148
-  display: none;
149
-}
150 0
deleted file mode 100644
... ...
@@ -1,149 +0,0 @@
1
-:root {
2
-  /*
3
-  --swiper-pagination-color: var(--swiper-theme-color);
4
-  */
5
-}
6
-.swiper-pagination {
7
-  position: absolute;
8
-  text-align: center;
9
-  transition: 300ms opacity;
10
-  transform: translate3d(0,0,0);
11
-  z-index: 10;
12
-  &.swiper-pagination-hidden {
13
-    opacity: 0;
14
-  }
15
-}
16
-/* Common Styles */
17
-.swiper-pagination-fraction, .swiper-pagination-custom, .swiper-container-horizontal > .swiper-pagination-bullets{
18
-  bottom: 10px;
19
-  left: 0;
20
-  width: 100%;
21
-}
22
-/* Bullets */
23
-.swiper-pagination-bullets-dynamic {
24
-  overflow: hidden;
25
-  font-size: 0;
26
-  .swiper-pagination-bullet {
27
-    transform: scale(0.33);
28
-    position: relative;
29
-  }
30
-  .swiper-pagination-bullet-active {
31
-    transform: scale(1);
32
-  }
33
-  .swiper-pagination-bullet-active-main {
34
-    transform: scale(1);
35
-  }
36
-  .swiper-pagination-bullet-active-prev {
37
-    transform: scale(0.66);
38
-  }
39
-  .swiper-pagination-bullet-active-prev-prev {
40
-    transform: scale(0.33);
41
-  }
42
-  .swiper-pagination-bullet-active-next {
43
-    transform: scale(0.66);
44
-  }
45
-  .swiper-pagination-bullet-active-next-next {
46
-    transform: scale(0.33);
47
-  }
48
-}
49
-.swiper-pagination-bullet {
50
-  width: 8px;
51
-  height: 8px;
52
-  display: inline-block;
53
-  border-radius: 100%;
54
-  background: #000;
55
-  opacity: 0.2;
56
-  @at-root button#{&} {
57
-    border: none;
58
-    margin: 0;
59
-    padding: 0;
60
-    box-shadow: none;
61
-    appearance: none;
62
-  }
63
-  .swiper-pagination-clickable & {
64
-    cursor: pointer;
65
-  }
66
-}
67
-.swiper-pagination-bullet-active {
68
-  opacity: 1;
69
-  background: var(--swiper-pagination-color, var(--swiper-theme-color));
70
-}
71
-
72
-.swiper-container-vertical {
73
-  > .swiper-pagination-bullets {
74
-    right: 10px;
75
-    top: 50%;
76
-    transform:translate3d(0px,-50%,0);
77
-    .swiper-pagination-bullet {
78
-      margin: 6px 0;
79
-      display: block;
80
-    }
81
-    &.swiper-pagination-bullets-dynamic {
82
-      top: 50%;
83
-      transform: translateY(-50%);
84
-      width: 8px;
85
-      .swiper-pagination-bullet {
86
-        display: inline-block;
87
-        transition: 200ms transform, 200ms top;
88
-      }
89
-    }
90
-  }
91
-}
92
-.swiper-container-horizontal {
93
-  > .swiper-pagination-bullets {
94
-    .swiper-pagination-bullet {
95
-      margin: 0 4px;
96
-    }
97
-    &.swiper-pagination-bullets-dynamic {
98
-      left: 50%;
99
-      transform: translateX(-50%);
100
-      white-space: nowrap;
101
-      .swiper-pagination-bullet {
102
-        transition: 200ms transform, 200ms left;
103
-      }
104
-    }
105
-  }
106
-  &.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
107
-    transition: 200ms transform, 200ms right;
108
-  }
109
-}
110
-/* Progress */
111
-.swiper-pagination-progressbar {
112
-  background: rgba(0,0,0,0.25);
113
-  position: absolute;
114
-  .swiper-pagination-progressbar-fill {
115
-    background: var(--swiper-pagination-color, var(--swiper-theme-color));
116
-    position: absolute;
117
-    left: 0;
118
-    top: 0;
119
-    width: 100%;
120
-    height: 100%;
121
-    transform: scale(0);
122
-    transform-origin: left top;
123
-  }
124
-  .swiper-container-rtl & .swiper-pagination-progressbar-fill {
125
-    transform-origin: right top;
126
-  }
127
-  .swiper-container-horizontal > &,
128
-  .swiper-container-vertical > &.swiper-pagination-progressbar-opposite {
129
-    width: 100%;
130
-    height: 4px;
131
-    left: 0;
132
-    top: 0;
133
-  }
134
-  .swiper-container-vertical > &,
135
-  .swiper-container-horizontal > &.swiper-pagination-progressbar-opposite {
136
-    width: 4px;
137
-    height: 100%;
138
-    left: 0;
139
-    top: 0;
140
-  }
141
-}
142
-@each $paginationColorName, $paginationColorValue in $colors {
143
-  .swiper-pagination-#{$paginationColorName} {
144
-    --swiper-pagination-color: #{$paginationColorValue};
145
-  }
146
-}
147
-.swiper-pagination-lock {
148
-  display: none;
149
-}
150 0
deleted file mode 100644
... ...
@@ -1,125 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Parallax = {
5
-  setTransform(el, progress) {
6
-    const swiper = this;
7
-    const { rtl } = swiper;
8
-
9
-    const $el = $(el);
10
-    const rtlFactor = rtl ? -1 : 1;
11
-
12
-    const p = $el.attr('data-swiper-parallax') || '0';
13
-    let x = $el.attr('data-swiper-parallax-x');
14
-    let y = $el.attr('data-swiper-parallax-y');
15
-    const scale = $el.attr('data-swiper-parallax-scale');
16
-    const opacity = $el.attr('data-swiper-parallax-opacity');
17
-
18
-    if (x || y) {
19
-      x = x || '0';
20
-      y = y || '0';
21
-    } else if (swiper.isHorizontal()) {
22
-      x = p;
23
-      y = '0';
24
-    } else {
25
-      y = p;
26
-      x = '0';
27
-    }
28
-
29
-    if ((x).indexOf('%') >= 0) {
30
-      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
31
-    } else {
32
-      x = `${x * progress * rtlFactor}px`;
33
-    }
34
-    if ((y).indexOf('%') >= 0) {
35
-      y = `${parseInt(y, 10) * progress}%`;
36
-    } else {
37
-      y = `${y * progress}px`;
38
-    }
39
-
40
-    if (typeof opacity !== 'undefined' && opacity !== null) {
41
-      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
42
-      $el[0].style.opacity = currentOpacity;
43
-    }
44
-    if (typeof scale === 'undefined' || scale === null) {
45
-      $el.transform(`translate3d(${x}, ${y}, 0px)`);
46
-    } else {
47
-      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
48
-      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
49
-    }
50
-  },
51
-  setTranslate() {
52
-    const swiper = this;
53
-    const {
54
-      $el, slides, progress, snapGrid,
55
-    } = swiper;
56
-    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
57
-      .each((index, el) => {
58
-        swiper.parallax.setTransform(el, progress);
59
-      });
60
-    slides.each((slideIndex, slideEl) => {
61
-      let slideProgress = slideEl.progress;
62
-      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
63
-        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
64
-      }
65
-      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
66
-      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
67
-        .each((index, el) => {
68
-          swiper.parallax.setTransform(el, slideProgress);
69
-        });
70
-    });
71
-  },
72
-  setTransition(duration = this.params.speed) {
73
-    const swiper = this;
74
-    const { $el } = swiper;
75
-    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
76
-      .each((index, parallaxEl) => {
77
-        const $parallaxEl = $(parallaxEl);
78
-        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
79
-        if (duration === 0) parallaxDuration = 0;
80
-        $parallaxEl.transition(parallaxDuration);
81
-      });
82
-  },
83
-};
84
-
85
-export default {
86
-  name: 'parallax',
87
-  params: {
88
-    parallax: {
89
-      enabled: false,
90
-    },
91
-  },
92
-  create() {
93
-    const swiper = this;
94
-    Utils.extend(swiper, {
95
-      parallax: {
96
-        setTransform: Parallax.setTransform.bind(swiper),
97
-        setTranslate: Parallax.setTranslate.bind(swiper),
98
-        setTransition: Parallax.setTransition.bind(swiper),
99
-      },
100
-    });
101
-  },
102
-  on: {
103
-    beforeInit() {
104
-      const swiper = this;
105
-      if (!swiper.params.parallax.enabled) return;
106
-      swiper.params.watchSlidesProgress = true;
107
-      swiper.originalParams.watchSlidesProgress = true;
108
-    },
109
-    init() {
110
-      const swiper = this;
111
-      if (!swiper.params.parallax.enabled) return;
112
-      swiper.parallax.setTranslate();
113
-    },
114
-    setTranslate() {
115
-      const swiper = this;
116
-      if (!swiper.params.parallax.enabled) return;
117
-      swiper.parallax.setTranslate();
118
-    },
119
-    setTransition(duration) {
120
-      const swiper = this;
121
-      if (!swiper.params.parallax.enabled) return;
122
-      swiper.parallax.setTransition(duration);
123
-    },
124
-  },
125
-};
126 0
deleted file mode 100644
... ...
@@ -1,333 +0,0 @@
1
-import { document } from 'ssr-window';
2
-import $ from '../../utils/dom';
3
-import Utils from '../../utils/utils';
4
-import Support from '../../utils/support';
5
-
6
-const Scrollbar = {
7
-  setTranslate() {
8
-    const swiper = this;
9
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10
-    const { scrollbar, rtlTranslate: rtl, progress } = swiper;
11
-    const {
12
-      dragSize, trackSize, $dragEl, $el,
13
-    } = scrollbar;
14
-    const params = swiper.params.scrollbar;
15
-
16
-    let newSize = dragSize;
17
-    let newPos = (trackSize - dragSize) * progress;
18
-    if (rtl) {
19
-      newPos = -newPos;
20
-      if (newPos > 0) {
21
-        newSize = dragSize - newPos;
22
-        newPos = 0;
23
-      } else if (-newPos + dragSize > trackSize) {
24
-        newSize = trackSize + newPos;
25
-      }
26
-    } else if (newPos < 0) {
27
-      newSize = dragSize + newPos;
28
-      newPos = 0;
29
-    } else if (newPos + dragSize > trackSize) {
30
-      newSize = trackSize - newPos;
31
-    }
32
-    if (swiper.isHorizontal()) {
33
-      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
34
-      $dragEl[0].style.width = `${newSize}px`;
35
-    } else {
36
-      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
37
-      $dragEl[0].style.height = `${newSize}px`;
38
-    }
39
-    if (params.hide) {
40
-      clearTimeout(swiper.scrollbar.timeout);
41
-      $el[0].style.opacity = 1;
42
-      swiper.scrollbar.timeout = setTimeout(() => {
43
-        $el[0].style.opacity = 0;
44
-        $el.transition(400);
45
-      }, 1000);
46
-    }
47
-  },
48
-  setTransition(duration) {
49
-    const swiper = this;
50
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
51
-    swiper.scrollbar.$dragEl.transition(duration);
52
-  },
53
-  updateSize() {
54
-    const swiper = this;
55
-    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
56
-
57
-    const { scrollbar } = swiper;
58
-    const { $dragEl, $el } = scrollbar;
59
-
60
-    $dragEl[0].style.width = '';
61
-    $dragEl[0].style.height = '';
62
-    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
63
-
64
-    const divider = swiper.size / swiper.virtualSize;
65
-    const moveDivider = divider * (trackSize / swiper.size);
66
-    let dragSize;
67
-    if (swiper.params.scrollbar.dragSize === 'auto') {
68
-      dragSize = trackSize * divider;
69
-    } else {
70
-      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
71
-    }
72
-
73
-    if (swiper.isHorizontal()) {
74
-      $dragEl[0].style.width = `${dragSize}px`;
75
-    } else {
76
-      $dragEl[0].style.height = `${dragSize}px`;
77
-    }
78
-
79
-    if (divider >= 1) {
80
-      $el[0].style.display = 'none';
81
-    } else {
82
-      $el[0].style.display = '';
83
-    }
84
-    if (swiper.params.scrollbar.hide) {
85
-      $el[0].style.opacity = 0;
86
-    }
87
-    Utils.extend(scrollbar, {
88
-      trackSize,
89
-      divider,
90
-      moveDivider,
91
-      dragSize,
92
-    });
93
-    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
94
-  },
95
-  getPointerPosition(e) {
96
-    const swiper = this;
97
-    if (swiper.isHorizontal()) {
98
-      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
99
-    }
100
-    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
101
-  },
102
-  setDragPosition(e) {
103
-    const swiper = this;
104
-    const { scrollbar, rtlTranslate: rtl } = swiper;
105
-    const {
106
-      $el,
107
-      dragSize,
108
-      trackSize,
109
-      dragStartPos,
110
-    } = scrollbar;
111
-
112
-    let positionRatio;
113
-    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
114
-      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
115
-    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
116
-    if (rtl) {
117
-      positionRatio = 1 - positionRatio;
118
-    }
119
-
120
-    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
121
-
122
-    swiper.updateProgress(position);
123
-    swiper.setTranslate(position);
124
-    swiper.updateActiveIndex();
125
-    swiper.updateSlidesClasses();
126
-  },
127
-  onDragStart(e) {
128
-    const swiper = this;
129
-    const params = swiper.params.scrollbar;
130
-    const { scrollbar, $wrapperEl } = swiper;
131
-    const { $el, $dragEl } = scrollbar;
132
-    swiper.scrollbar.isTouched = true;
133
-    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
134
-      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
135
-    e.preventDefault();
136
-    e.stopPropagation();
137
-
138
-    $wrapperEl.transition(100);
139
-    $dragEl.transition(100);
140
-    scrollbar.setDragPosition(e);
141
-
142
-    clearTimeout(swiper.scrollbar.dragTimeout);
143
-
144
-    $el.transition(0);
145
-    if (params.hide) {
146
-      $el.css('opacity', 1);
147
-    }
148
-    if (swiper.params.cssMode) {
149
-      swiper.$wrapperEl.css('scroll-snap-type', 'none');
150
-    }
151
-    swiper.emit('scrollbarDragStart', e);
152
-  },
153
-  onDragMove(e) {
154
-    const swiper = this;
155
-    const { scrollbar, $wrapperEl } = swiper;
156
-    const { $el, $dragEl } = scrollbar;
157
-
158
-    if (!swiper.scrollbar.isTouched) return;
159
-    if (e.preventDefault) e.preventDefault();
160
-    else e.returnValue = false;
161
-    scrollbar.setDragPosition(e);
162
-    $wrapperEl.transition(0);
163
-    $el.transition(0);
164
-    $dragEl.transition(0);
165
-    swiper.emit('scrollbarDragMove', e);
166
-  },
167
-  onDragEnd(e) {
168
-    const swiper = this;
169
-
170
-    const params = swiper.params.scrollbar;
171
-    const { scrollbar, $wrapperEl } = swiper;
172
-    const { $el } = scrollbar;
173
-
174
-    if (!swiper.scrollbar.isTouched) return;
175
-    swiper.scrollbar.isTouched = false;
176
-    if (swiper.params.cssMode) {
177
-      swiper.$wrapperEl.css('scroll-snap-type', '');
178
-      $wrapperEl.transition('');
179
-    }
180
-    if (params.hide) {
181
-      clearTimeout(swiper.scrollbar.dragTimeout);
182
-      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {
183
-        $el.css('opacity', 0);
184
-        $el.transition(400);
185
-      }, 1000);
186
-    }
187
-    swiper.emit('scrollbarDragEnd', e);
188
-    if (params.snapOnRelease) {
189
-      swiper.slideToClosest();
190
-    }
191
-  },
192
-  enableDraggable() {
193
-    const swiper = this;
194
-    if (!swiper.params.scrollbar.el) return;
195
-    const {
196
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
197
-    } = swiper;
198
-    const $el = scrollbar.$el;
199
-    const target = $el[0];
200
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
201
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
202
-    if (!Support.touch) {
203
-      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
204
-      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
205
-      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
206
-    } else {
207
-      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
208
-      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
209
-      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
210
-    }
211
-  },
212
-  disableDraggable() {
213
-    const swiper = this;
214
-    if (!swiper.params.scrollbar.el) return;
215
-    const {
216
-      scrollbar, touchEventsTouch, touchEventsDesktop, params,
217
-    } = swiper;
218
-    const $el = scrollbar.$el;
219
-    const target = $el[0];
220
-    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
221
-    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
222
-    if (!Support.touch) {
223
-      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
224
-      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
225
-      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
226
-    } else {
227
-      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
228
-      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
229
-      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
230
-    }
231
-  },
232
-  init() {
233
-    const swiper = this;
234
-    if (!swiper.params.scrollbar.el) return;
235
-    const { scrollbar, $el: $swiperEl } = swiper;
236
-    const params = swiper.params.scrollbar;
237
-
238
-    let $el = $(params.el);
239
-    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
240
-      $el = $swiperEl.find(params.el);
241
-    }
242
-
243
-    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
244
-    if ($dragEl.length === 0) {
245
-      $dragEl = $(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
246
-      $el.append($dragEl);
247
-    }
248
-
249
-    Utils.extend(scrollbar, {
250
-      $el,
251
-      el: $el[0],
252
-      $dragEl,
253
-      dragEl: $dragEl[0],
254
-    });
255
-
256
-    if (params.draggable) {
257
-      scrollbar.enableDraggable();
258
-    }
259
-  },
260
-  destroy() {
261
-    const swiper = this;
262
-    swiper.scrollbar.disableDraggable();
263
-  },
264
-};
265
-
266
-export default {
267
-  name: 'scrollbar',
268
-  params: {
269
-    scrollbar: {
270
-      el: null,
271
-      dragSize: 'auto',
272
-      hide: false,
273
-      draggable: false,
274
-      snapOnRelease: true,
275
-      lockClass: 'swiper-scrollbar-lock',
276
-      dragClass: 'swiper-scrollbar-drag',
277
-    },
278
-  },
279
-  create() {
280
-    const swiper = this;
281
-    Utils.extend(swiper, {
282
-      scrollbar: {
283
-        init: Scrollbar.init.bind(swiper),
284
-        destroy: Scrollbar.destroy.bind(swiper),
285
-        updateSize: Scrollbar.updateSize.bind(swiper),
286
-        setTranslate: Scrollbar.setTranslate.bind(swiper),
287
-        setTransition: Scrollbar.setTransition.bind(swiper),
288
-        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
289
-        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
290
-        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
291
-        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
292
-        onDragStart: Scrollbar.onDragStart.bind(swiper),
293
-        onDragMove: Scrollbar.onDragMove.bind(swiper),
294
-        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
295
-        isTouched: false,
296
-        timeout: null,
297
-        dragTimeout: null,
298
-      },
299
-    });
300
-  },
301
-  on: {
302
-    init() {
303
-      const swiper = this;
304
-      swiper.scrollbar.init();
305
-      swiper.scrollbar.updateSize();
306
-      swiper.scrollbar.setTranslate();
307
-    },
308
-    update() {
309
-      const swiper = this;
310
-      swiper.scrollbar.updateSize();
311
-    },
312
-    resize() {
313
-      const swiper = this;
314
-      swiper.scrollbar.updateSize();
315
-    },
316
-    observerUpdate() {
317
-      const swiper = this;
318
-      swiper.scrollbar.updateSize();
319
-    },
320
-    setTranslate() {
321
-      const swiper = this;
322
-      swiper.scrollbar.setTranslate();
323
-    },
324
-    setTransition(duration) {
325
-      const swiper = this;
326
-      swiper.scrollbar.setTransition(duration);
327
-    },
328
-    destroy() {
329
-      const swiper = this;
330
-      swiper.scrollbar.destroy();
331
-    },
332
-  },
333
-};
334 0
deleted file mode 100644
... ...
@@ -1,38 +0,0 @@
1
-/* Scrollbar */
2
-.swiper-scrollbar {
3
-  border-radius: 10px;
4
-  position: relative;
5
-  -ms-touch-action: none;
6
-  background: rgba(0,0,0,0.1);
7
-  .swiper-container-horizontal > & {
8
-    position: absolute;
9
-    left: 1%;
10
-    bottom: 3px;
11
-    z-index: 50;
12
-    height: 5px;
13
-    width: 98%;
14
-  }
15
-  .swiper-container-vertical > & {
16
-    position: absolute;
17
-    right: 3px;
18
-    top: 1%;
19
-    z-index: 50;
20
-    width: 5px;
21
-    height: 98%;
22
-  }
23
-}
24
-.swiper-scrollbar-drag {
25
-  height: 100%;
26
-  width: 100%;
27
-  position: relative;
28
-  background: rgba(0,0,0,0.5);
29
-  border-radius: 10px;
30
-  left: 0;
31
-  top: 0;
32
-}
33
-.swiper-scrollbar-cursor-drag {
34
-  cursor: move;
35
-}
36
-.swiper-scrollbar-lock {
37
-  display: none;
38
-}
39 0
\ No newline at end of file
40 1
deleted file mode 100644
... ...
@@ -1,38 +0,0 @@
1
-/* Scrollbar */
2
-.swiper-scrollbar {
3
-  border-radius: 10px;
4
-  position: relative;
5
-  -ms-touch-action: none;
6
-  background: rgba(0,0,0,0.1);
7
-  .swiper-container-horizontal > & {
8
-    position: absolute;
9
-    left: 1%;
10
-    bottom: 3px;
11
-    z-index: 50;
12
-    height: 5px;
13
-    width: 98%;
14
-  }
15
-  .swiper-container-vertical > & {
16
-    position: absolute;
17
-    right: 3px;
18
-    top: 1%;
19
-    z-index: 50;
20
-    width: 5px;
21
-    height: 98%;
22
-  }
23
-}
24
-.swiper-scrollbar-drag {
25
-  height: 100%;
26
-  width: 100%;
27
-  position: relative;
28
-  background: rgba(0,0,0,0.5);
29
-  border-radius: 10px;
30
-  left: 0;
31
-  top: 0;
32
-}
33
-.swiper-scrollbar-cursor-drag {
34
-  cursor: move;
35
-}
36
-.swiper-scrollbar-lock {
37
-  display: none;
38
-}
39 0
\ No newline at end of file
40 1
deleted file mode 100644
... ...
@@ -1,211 +0,0 @@
1
-import Utils from '../../utils/utils';
2
-import $ from '../../utils/dom';
3
-
4
-const Thumbs = {
5
-  init() {
6
-    const swiper = this;
7
-    const { thumbs: thumbsParams } = swiper.params;
8
-    const SwiperClass = swiper.constructor;
9
-    if (thumbsParams.swiper instanceof SwiperClass) {
10
-      swiper.thumbs.swiper = thumbsParams.swiper;
11
-      Utils.extend(swiper.thumbs.swiper.originalParams, {
12
-        watchSlidesProgress: true,
13
-        slideToClickedSlide: false,
14
-      });
15
-      Utils.extend(swiper.thumbs.swiper.params, {
16
-        watchSlidesProgress: true,
17
-        slideToClickedSlide: false,
18
-      });
19
-    } else if (Utils.isObject(thumbsParams.swiper)) {
20
-      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
21
-        watchSlidesVisibility: true,
22
-        watchSlidesProgress: true,
23
-        slideToClickedSlide: false,
24
-      }));
25
-      swiper.thumbs.swiperCreated = true;
26
-    }
27
-    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
28
-    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
29
-  },
30
-  onThumbClick() {
31
-    const swiper = this;
32
-    const thumbsSwiper = swiper.thumbs.swiper;
33
-    if (!thumbsSwiper) return;
34
-    const clickedIndex = thumbsSwiper.clickedIndex;
35
-    const clickedSlide = thumbsSwiper.clickedSlide;
36
-    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
37
-    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
38
-    let slideToIndex;
39
-    if (thumbsSwiper.params.loop) {
40
-      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
41
-    } else {
42
-      slideToIndex = clickedIndex;
43
-    }
44
-    if (swiper.params.loop) {
45
-      let currentIndex = swiper.activeIndex;
46
-      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
47
-        swiper.loopFix();
48
-        // eslint-disable-next-line
49
-        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
50
-        currentIndex = swiper.activeIndex;
51
-      }
52
-      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
53
-      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
54
-      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;
55
-      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;
56
-      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;
57
-      else slideToIndex = prevIndex;
58
-    }
59
-    swiper.slideTo(slideToIndex);
60
-  },
61
-  update(initial) {
62
-    const swiper = this;
63
-    const thumbsSwiper = swiper.thumbs.swiper;
64
-    if (!thumbsSwiper) return;
65
-
66
-    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
67
-      ? thumbsSwiper.slidesPerViewDynamic()
68
-      : thumbsSwiper.params.slidesPerView;
69
-
70
-    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
71
-    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
72
-    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
73
-      let currentThumbsIndex = thumbsSwiper.activeIndex;
74
-      let newThumbsIndex;
75
-      let direction;
76
-      if (thumbsSwiper.params.loop) {
77
-        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
78
-          thumbsSwiper.loopFix();
79
-          // eslint-disable-next-line
80
-          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
81
-          currentThumbsIndex = thumbsSwiper.activeIndex;
82
-        }
83
-        // Find actual thumbs index to slide to
84
-        const prevThumbsIndex = thumbsSwiper.slides
85
-          .eq(currentThumbsIndex)
86
-          .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
87
-          .index();
88
-        const nextThumbsIndex = thumbsSwiper.slides
89
-          .eq(currentThumbsIndex)
90
-          .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
91
-          .index();
92
-        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;
93
-        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;
94
-        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;
95
-        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;
96
-        else newThumbsIndex = prevThumbsIndex;
97
-        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
98
-      } else {
99
-        newThumbsIndex = swiper.realIndex;
100
-        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
101
-      }
102
-      if (useOffset) {
103
-        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
104
-      }
105
-
106
-      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
107
-        if (thumbsSwiper.params.centeredSlides) {
108
-          if (newThumbsIndex > currentThumbsIndex) {
109
-            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
110
-          } else {
111
-            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
112
-          }
113
-        } else if (newThumbsIndex > currentThumbsIndex) {
114
-          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
115
-        }
116
-        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
117
-      }
118
-    }
119
-
120
-    // Activate thumbs
121
-    let thumbsToActivate = 1;
122
-    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
123
-
124
-    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
125
-      thumbsToActivate = swiper.params.slidesPerView;
126
-    }
127
-
128
-    if (!swiper.params.thumbs.multipleActiveThumbs) {
129
-      thumbsToActivate = 1;
130
-    }
131
-
132
-    thumbsToActivate = Math.floor(thumbsToActivate);
133
-
134
-    thumbsSwiper.slides.removeClass(thumbActiveClass);
135
-    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
136
-      for (let i = 0; i < thumbsToActivate; i += 1) {
137
-        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
138
-      }
139
-    } else {
140
-      for (let i = 0; i < thumbsToActivate; i += 1) {
141
-        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
142
-      }
143
-    }
144
-  },
145
-};
146
-export default {
147
-  name: 'thumbs',
148
-  params: {
149
-    thumbs: {
150
-      swiper: null,
151
-      multipleActiveThumbs: true,
152
-      autoScrollOffset: 0,
153
-      slideThumbActiveClass: 'swiper-slide-thumb-active',
154
-      thumbsContainerClass: 'swiper-container-thumbs',
155
-    },
156
-  },
157
-  create() {
158
-    const swiper = this;
159
-    Utils.extend(swiper, {
160
-      thumbs: {
161
-        swiper: null,
162
-        init: Thumbs.init.bind(swiper),
163
-        update: Thumbs.update.bind(swiper),
164
-        onThumbClick: Thumbs.onThumbClick.bind(swiper),
165
-      },
166
-    });
167
-  },
168
-  on: {
169
-    beforeInit() {
170
-      const swiper = this;
171
-      const { thumbs } = swiper.params;
172
-      if (!thumbs || !thumbs.swiper) return;
173
-      swiper.thumbs.init();
174
-      swiper.thumbs.update(true);
175
-    },
176
-    slideChange() {
177
-      const swiper = this;
178
-      if (!swiper.thumbs.swiper) return;
179
-      swiper.thumbs.update();
180
-    },
181
-    update() {
182
-      const swiper = this;
183
-      if (!swiper.thumbs.swiper) return;
184
-      swiper.thumbs.update();
185
-    },
186
-    resize() {
187
-      const swiper = this;
188
-      if (!swiper.thumbs.swiper) return;
189
-      swiper.thumbs.update();
190
-    },
191
-    observerUpdate() {
192
-      const swiper = this;
193
-      if (!swiper.thumbs.swiper) return;
194
-      swiper.thumbs.update();
195
-    },
196
-    setTransition(duration) {
197
-      const swiper = this;
198
-      const thumbsSwiper = swiper.thumbs.swiper;
199
-      if (!thumbsSwiper) return;
200
-      thumbsSwiper.setTransition(duration);
201
-    },
202
-    beforeDestroy() {
203
-      const swiper = this;
204
-      const thumbsSwiper = swiper.thumbs.swiper;
205
-      if (!thumbsSwiper) return;
206
-      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
207
-        thumbsSwiper.destroy();
208
-      }
209
-    },
210
-  },
211
-};
212 0
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-.swiper-container-thumbs {
2
-  .swiper-slide-thumb-active {
3
-    // Styles for active thumb slide
4
-  }
5
-}
6 0
\ No newline at end of file
7 1
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-.swiper-container-thumbs {
2
-  .swiper-slide-thumb-active {
3
-    // Styles for active thumb slide
4
-  }
5
-}
6 0
\ No newline at end of file
7 1
deleted file mode 100644
... ...
@@ -1,245 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-
4
-const Virtual = {
5
-  update(force) {
6
-    const swiper = this;
7
-    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
8
-    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
9
-    const {
10
-      from: previousFrom,
11
-      to: previousTo,
12
-      slides,
13
-      slidesGrid: previousSlidesGrid,
14
-      renderSlide,
15
-      offset: previousOffset,
16
-    } = swiper.virtual;
17
-    swiper.updateActiveIndex();
18
-    const activeIndex = swiper.activeIndex || 0;
19
-
20
-    let offsetProp;
21
-    if (swiper.rtlTranslate) offsetProp = 'right';
22
-    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
23
-
24
-    let slidesAfter;
25
-    let slidesBefore;
26
-    if (centeredSlides) {
27
-      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
28
-      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
29
-    } else {
30
-      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
31
-      slidesBefore = slidesPerGroup + addSlidesAfter;
32
-    }
33
-    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
34
-    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
35
-    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
36
-
37
-    Utils.extend(swiper.virtual, {
38
-      from,
39
-      to,
40
-      offset,
41
-      slidesGrid: swiper.slidesGrid,
42
-    });
43
-
44
-    function onRendered() {
45
-      swiper.updateSlides();
46
-      swiper.updateProgress();
47
-      swiper.updateSlidesClasses();
48
-      if (swiper.lazy && swiper.params.lazy.enabled) {
49
-        swiper.lazy.load();
50
-      }
51
-    }
52
-
53
-    if (previousFrom === from && previousTo === to && !force) {
54
-      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
55
-        swiper.slides.css(offsetProp, `${offset}px`);
56
-      }
57
-      swiper.updateProgress();
58
-      return;
59
-    }
60
-    if (swiper.params.virtual.renderExternal) {
61
-      swiper.params.virtual.renderExternal.call(swiper, {
62
-        offset,
63
-        from,
64
-        to,
65
-        slides: (function getSlides() {
66
-          const slidesToRender = [];
67
-          for (let i = from; i <= to; i += 1) {
68
-            slidesToRender.push(slides[i]);
69
-          }
70
-          return slidesToRender;
71
-        }()),
72
-      });
73
-      onRendered();
74
-      return;
75
-    }
76
-    const prependIndexes = [];
77
-    const appendIndexes = [];
78
-    if (force) {
79
-      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
80
-    } else {
81
-      for (let i = previousFrom; i <= previousTo; i += 1) {
82
-        if (i < from || i > to) {
83
-          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
84
-        }
85
-      }
86
-    }
87
-    for (let i = 0; i < slides.length; i += 1) {
88
-      if (i >= from && i <= to) {
89
-        if (typeof previousTo === 'undefined' || force) {
90
-          appendIndexes.push(i);
91
-        } else {
92
-          if (i > previousTo) appendIndexes.push(i);
93
-          if (i < previousFrom) prependIndexes.push(i);
94
-        }
95
-      }
96
-    }
97
-    appendIndexes.forEach((index) => {
98
-      swiper.$wrapperEl.append(renderSlide(slides[index], index));
99
-    });
100
-    prependIndexes.sort((a, b) => b - a).forEach((index) => {
101
-      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
102
-    });
103
-    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
104
-    onRendered();
105
-  },
106
-  renderSlide(slide, index) {
107
-    const swiper = this;
108
-    const params = swiper.params.virtual;
109
-    if (params.cache && swiper.virtual.cache[index]) {
110
-      return swiper.virtual.cache[index];
111
-    }
112
-    const $slideEl = params.renderSlide
113
-      ? $(params.renderSlide.call(swiper, slide, index))
114
-      : $(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
115
-    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
116
-    if (params.cache) swiper.virtual.cache[index] = $slideEl;
117
-    return $slideEl;
118
-  },
119
-  appendSlide(slides) {
120
-    const swiper = this;
121
-    if (typeof slides === 'object' && 'length' in slides) {
122
-      for (let i = 0; i < slides.length; i += 1) {
123
-        if (slides[i]) swiper.virtual.slides.push(slides[i]);
124
-      }
125
-    } else {
126
-      swiper.virtual.slides.push(slides);
127
-    }
128
-    swiper.virtual.update(true);
129
-  },
130
-  prependSlide(slides) {
131
-    const swiper = this;
132
-    const activeIndex = swiper.activeIndex;
133
-    let newActiveIndex = activeIndex + 1;
134
-    let numberOfNewSlides = 1;
135
-
136
-    if (Array.isArray(slides)) {
137
-      for (let i = 0; i < slides.length; i += 1) {
138
-        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
139
-      }
140
-      newActiveIndex = activeIndex + slides.length;
141
-      numberOfNewSlides = slides.length;
142
-    } else {
143
-      swiper.virtual.slides.unshift(slides);
144
-    }
145
-    if (swiper.params.virtual.cache) {
146
-      const cache = swiper.virtual.cache;
147
-      const newCache = {};
148
-      Object.keys(cache).forEach((cachedIndex) => {
149
-        const $cachedEl = cache[cachedIndex];
150
-        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
151
-        if (cachedElIndex) {
152
-          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
153
-        }
154
-        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
155
-      });
156
-      swiper.virtual.cache = newCache;
157
-    }
158
-    swiper.virtual.update(true);
159
-    swiper.slideTo(newActiveIndex, 0);
160
-  },
161
-  removeSlide(slidesIndexes) {
162
-    const swiper = this;
163
-    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
164
-    let activeIndex = swiper.activeIndex;
165
-    if (Array.isArray(slidesIndexes)) {
166
-      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
167
-        swiper.virtual.slides.splice(slidesIndexes[i], 1);
168
-        if (swiper.params.virtual.cache) {
169
-          delete swiper.virtual.cache[slidesIndexes[i]];
170
-        }
171
-        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
172
-        activeIndex = Math.max(activeIndex, 0);
173
-      }
174
-    } else {
175
-      swiper.virtual.slides.splice(slidesIndexes, 1);
176
-      if (swiper.params.virtual.cache) {
177
-        delete swiper.virtual.cache[slidesIndexes];
178
-      }
179
-      if (slidesIndexes < activeIndex) activeIndex -= 1;
180
-      activeIndex = Math.max(activeIndex, 0);
181
-    }
182
-    swiper.virtual.update(true);
183
-    swiper.slideTo(activeIndex, 0);
184
-  },
185
-  removeAllSlides() {
186
-    const swiper = this;
187
-    swiper.virtual.slides = [];
188
-    if (swiper.params.virtual.cache) {
189
-      swiper.virtual.cache = {};
190
-    }
191
-    swiper.virtual.update(true);
192
-    swiper.slideTo(0, 0);
193
-  },
194
-};
195
-
196
-export default {
197
-  name: 'virtual',
198
-  params: {
199
-    virtual: {
200
-      enabled: false,
201
-      slides: [],
202
-      cache: true,
203
-      renderSlide: null,
204
-      renderExternal: null,
205
-      addSlidesBefore: 0,
206
-      addSlidesAfter: 0,
207
-    },
208
-  },
209
-  create() {
210
-    const swiper = this;
211
-    Utils.extend(swiper, {
212
-      virtual: {
213
-        update: Virtual.update.bind(swiper),
214
-        appendSlide: Virtual.appendSlide.bind(swiper),
215
-        prependSlide: Virtual.prependSlide.bind(swiper),
216
-        removeSlide: Virtual.removeSlide.bind(swiper),
217
-        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
218
-        renderSlide: Virtual.renderSlide.bind(swiper),
219
-        slides: swiper.params.virtual.slides,
220
-        cache: {},
221
-      },
222
-    });
223
-  },
224
-  on: {
225
-    beforeInit() {
226
-      const swiper = this;
227
-      if (!swiper.params.virtual.enabled) return;
228
-      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
229
-      const overwriteParams = {
230
-        watchSlidesProgress: true,
231
-      };
232
-      Utils.extend(swiper.params, overwriteParams);
233
-      Utils.extend(swiper.originalParams, overwriteParams);
234
-
235
-      if (!swiper.params.initialSlide) {
236
-        swiper.virtual.update();
237
-      }
238
-    },
239
-    setTranslate() {
240
-      const swiper = this;
241
-      if (!swiper.params.virtual.enabled) return;
242
-      swiper.virtual.update();
243
-    },
244
-  },
245
-};
246 0
deleted file mode 100644
... ...
@@ -1,561 +0,0 @@
1
-import $ from '../../utils/dom';
2
-import Utils from '../../utils/utils';
3
-import Device from '../../utils/device';
4
-import Support from '../../utils/support';
5
-
6
-const Zoom = {
7
-  // Calc Scale From Multi-touches
8
-  getDistanceBetweenTouches(e) {
9
-    if (e.targetTouches.length < 2) return 1;
10
-    const x1 = e.targetTouches[0].pageX;
11
-    const y1 = e.targetTouches[0].pageY;
12
-    const x2 = e.targetTouches[1].pageX;
13
-    const y2 = e.targetTouches[1].pageY;
14
-    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));
15
-    return distance;
16
-  },
17
-  // Events
18
-  onGestureStart(e) {
19
-    const swiper = this;
20
-    const params = swiper.params.zoom;
21
-    const zoom = swiper.zoom;
22
-    const { gesture } = zoom;
23
-    zoom.fakeGestureTouched = false;
24
-    zoom.fakeGestureMoved = false;
25
-    if (!Support.gestures) {
26
-      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
27
-        return;
28
-      }
29
-      zoom.fakeGestureTouched = true;
30
-      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
31
-    }
32
-    if (!gesture.$slideEl || !gesture.$slideEl.length) {
33
-      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);
34
-      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
35
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
36
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
37
-      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
38
-      if (gesture.$imageWrapEl.length === 0) {
39
-        gesture.$imageEl = undefined;
40
-        return;
41
-      }
42
-    }
43
-    if (gesture.$imageEl) {
44
-      gesture.$imageEl.transition(0);
45
-    }
46
-    swiper.zoom.isScaling = true;
47
-  },
48
-  onGestureChange(e) {
49
-    const swiper = this;
50
-    const params = swiper.params.zoom;
51
-    const zoom = swiper.zoom;
52
-    const { gesture } = zoom;
53
-    if (!Support.gestures) {
54
-      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
55
-        return;
56
-      }
57
-      zoom.fakeGestureMoved = true;
58
-      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
59
-    }
60
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
61
-    if (Support.gestures) {
62
-      zoom.scale = e.scale * zoom.currentScale;
63
-    } else {
64
-      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
65
-    }
66
-    if (zoom.scale > gesture.maxRatio) {
67
-      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);
68
-    }
69
-    if (zoom.scale < params.minRatio) {
70
-      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);
71
-    }
72
-    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
73
-  },
74
-  onGestureEnd(e) {
75
-    const swiper = this;
76
-    const params = swiper.params.zoom;
77
-    const zoom = swiper.zoom;
78
-    const { gesture } = zoom;
79
-    if (!Support.gestures) {
80
-      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
81
-        return;
82
-      }
83
-      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
84
-        return;
85
-      }
86
-      zoom.fakeGestureTouched = false;
87
-      zoom.fakeGestureMoved = false;
88
-    }
89
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
90
-    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
91
-    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
92
-    zoom.currentScale = zoom.scale;
93
-    zoom.isScaling = false;
94
-    if (zoom.scale === 1) gesture.$slideEl = undefined;
95
-  },
96
-  onTouchStart(e) {
97
-    const swiper = this;
98
-    const zoom = swiper.zoom;
99
-    const { gesture, image } = zoom;
100
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
101
-    if (image.isTouched) return;
102
-    if (Device.android && e.cancelable) e.preventDefault();
103
-    image.isTouched = true;
104
-    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
105
-    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
106
-  },
107
-  onTouchMove(e) {
108
-    const swiper = this;
109
-    const zoom = swiper.zoom;
110
-    const { gesture, image, velocity } = zoom;
111
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
112
-    swiper.allowClick = false;
113
-    if (!image.isTouched || !gesture.$slideEl) return;
114
-
115
-    if (!image.isMoved) {
116
-      image.width = gesture.$imageEl[0].offsetWidth;
117
-      image.height = gesture.$imageEl[0].offsetHeight;
118
-      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
119
-      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
120
-      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
121
-      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
122
-      gesture.$imageWrapEl.transition(0);
123
-      if (swiper.rtl) {
124
-        image.startX = -image.startX;
125
-        image.startY = -image.startY;
126
-      }
127
-    }
128
-    // Define if we need image drag
129
-    const scaledWidth = image.width * zoom.scale;
130
-    const scaledHeight = image.height * zoom.scale;
131
-
132
-    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
133
-
134
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
135
-    image.maxX = -image.minX;
136
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
137
-    image.maxY = -image.minY;
138
-
139
-    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
140
-    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
141
-
142
-    if (!image.isMoved && !zoom.isScaling) {
143
-      if (
144
-        swiper.isHorizontal()
145
-        && (
146
-          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
147
-          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
148
-        )
149
-      ) {
150
-        image.isTouched = false;
151
-        return;
152
-      } if (
153
-        !swiper.isHorizontal()
154
-        && (
155
-          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
156
-          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
157
-        )
158
-      ) {
159
-        image.isTouched = false;
160
-        return;
161
-      }
162
-    }
163
-    if (e.cancelable) {
164
-      e.preventDefault();
165
-    }
166
-    e.stopPropagation();
167
-
168
-    image.isMoved = true;
169
-    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
170
-    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
171
-
172
-    if (image.currentX < image.minX) {
173
-      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);
174
-    }
175
-    if (image.currentX > image.maxX) {
176
-      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);
177
-    }
178
-
179
-    if (image.currentY < image.minY) {
180
-      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);
181
-    }
182
-    if (image.currentY > image.maxY) {
183
-      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);
184
-    }
185
-
186
-    // Velocity
187
-    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
188
-    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
189
-    if (!velocity.prevTime) velocity.prevTime = Date.now();
190
-    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
191
-    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
192
-    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
193
-    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
194
-    velocity.prevPositionX = image.touchesCurrent.x;
195
-    velocity.prevPositionY = image.touchesCurrent.y;
196
-    velocity.prevTime = Date.now();
197
-
198
-    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
199
-  },
200
-  onTouchEnd() {
201
-    const swiper = this;
202
-    const zoom = swiper.zoom;
203
-    const { gesture, image, velocity } = zoom;
204
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
205
-    if (!image.isTouched || !image.isMoved) {
206
-      image.isTouched = false;
207
-      image.isMoved = false;
208
-      return;
209
-    }
210
-    image.isTouched = false;
211
-    image.isMoved = false;
212
-    let momentumDurationX = 300;
213
-    let momentumDurationY = 300;
214
-    const momentumDistanceX = velocity.x * momentumDurationX;
215
-    const newPositionX = image.currentX + momentumDistanceX;
216
-    const momentumDistanceY = velocity.y * momentumDurationY;
217
-    const newPositionY = image.currentY + momentumDistanceY;
218
-
219
-    // Fix duration
220
-    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
221
-    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
222
-    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
223
-
224
-    image.currentX = newPositionX;
225
-    image.currentY = newPositionY;
226
-
227
-    // Define if we need image drag
228
-    const scaledWidth = image.width * zoom.scale;
229
-    const scaledHeight = image.height * zoom.scale;
230
-    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
231
-    image.maxX = -image.minX;
232
-    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
233
-    image.maxY = -image.minY;
234
-    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
235
-    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
236
-
237
-    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
238
-  },
239
-  onTransitionEnd() {
240
-    const swiper = this;
241
-    const zoom = swiper.zoom;
242
-    const { gesture } = zoom;
243
-    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
244
-      if (gesture.$imageEl) {
245
-        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
246
-      }
247
-      if (gesture.$imageWrapEl) {
248
-        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
249
-      }
250
-
251
-      zoom.scale = 1;
252
-      zoom.currentScale = 1;
253
-
254
-      gesture.$slideEl = undefined;
255
-      gesture.$imageEl = undefined;
256
-      gesture.$imageWrapEl = undefined;
257
-    }
258
-  },
259
-  // Toggle Zoom
260
-  toggle(e) {
261
-    const swiper = this;
262
-    const zoom = swiper.zoom;
263
-
264
-    if (zoom.scale && zoom.scale !== 1) {
265
-      // Zoom Out
266
-      zoom.out();
267
-    } else {
268
-      // Zoom In
269
-      zoom.in(e);
270
-    }
271
-  },
272
-  in(e) {
273
-    const swiper = this;
274
-
275
-    const zoom = swiper.zoom;
276
-    const params = swiper.params.zoom;
277
-    const { gesture, image } = zoom;
278
-
279
-    if (!gesture.$slideEl) {
280
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
281
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
282
-      } else {
283
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
284
-      }
285
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
286
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
287
-    }
288
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
289
-
290
-    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
291
-
292
-    let touchX;
293
-    let touchY;
294
-    let offsetX;
295
-    let offsetY;
296
-    let diffX;
297
-    let diffY;
298
-    let translateX;
299
-    let translateY;
300
-    let imageWidth;
301
-    let imageHeight;
302
-    let scaledWidth;
303
-    let scaledHeight;
304
-    let translateMinX;
305
-    let translateMinY;
306
-    let translateMaxX;
307
-    let translateMaxY;
308
-    let slideWidth;
309
-    let slideHeight;
310
-
311
-    if (typeof image.touchesStart.x === 'undefined' && e) {
312
-      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
313
-      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
314
-    } else {
315
-      touchX = image.touchesStart.x;
316
-      touchY = image.touchesStart.y;
317
-    }
318
-
319
-    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
320
-    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
321
-    if (e) {
322
-      slideWidth = gesture.$slideEl[0].offsetWidth;
323
-      slideHeight = gesture.$slideEl[0].offsetHeight;
324
-      offsetX = gesture.$slideEl.offset().left;
325
-      offsetY = gesture.$slideEl.offset().top;
326
-      diffX = (offsetX + (slideWidth / 2)) - touchX;
327
-      diffY = (offsetY + (slideHeight / 2)) - touchY;
328
-
329
-      imageWidth = gesture.$imageEl[0].offsetWidth;
330
-      imageHeight = gesture.$imageEl[0].offsetHeight;
331
-      scaledWidth = imageWidth * zoom.scale;
332
-      scaledHeight = imageHeight * zoom.scale;
333
-
334
-      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
335
-      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
336
-      translateMaxX = -translateMinX;
337
-      translateMaxY = -translateMinY;
338
-
339
-      translateX = diffX * zoom.scale;
340
-      translateY = diffY * zoom.scale;
341
-
342
-      if (translateX < translateMinX) {
343
-        translateX = translateMinX;
344
-      }
345
-      if (translateX > translateMaxX) {
346
-        translateX = translateMaxX;
347
-      }
348
-
349
-      if (translateY < translateMinY) {
350
-        translateY = translateMinY;
351
-      }
352
-      if (translateY > translateMaxY) {
353
-        translateY = translateMaxY;
354
-      }
355
-    } else {
356
-      translateX = 0;
357
-      translateY = 0;
358
-    }
359
-    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
360
-    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
361
-  },
362
-  out() {
363
-    const swiper = this;
364
-
365
-    const zoom = swiper.zoom;
366
-    const params = swiper.params.zoom;
367
-    const { gesture } = zoom;
368
-
369
-    if (!gesture.$slideEl) {
370
-      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
371
-        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
372
-      } else {
373
-        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
374
-      }
375
-      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
376
-      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
377
-    }
378
-    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
379
-
380
-    zoom.scale = 1;
381
-    zoom.currentScale = 1;
382
-    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
383
-    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
384
-    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
385
-    gesture.$slideEl = undefined;
386
-  },
387
-  // Attach/Detach Events
388
-  enable() {
389
-    const swiper = this;
390
-    const zoom = swiper.zoom;
391
-    if (zoom.enabled) return;
392
-    zoom.enabled = true;
393
-
394
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
395
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
396
-
397
-    const slideSelector = `.${swiper.params.slideClass}`;
398
-
399
-    // Scale image
400
-    if (Support.gestures) {
401
-      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
402
-      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
403
-      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
404
-    } else if (swiper.touchEvents.start === 'touchstart') {
405
-      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
406
-      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
407
-      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
408
-      if (swiper.touchEvents.cancel) {
409
-        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
410
-      }
411
-    }
412
-
413
-    // Move image
414
-    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
415
-  },
416
-  disable() {
417
-    const swiper = this;
418
-    const zoom = swiper.zoom;
419
-    if (!zoom.enabled) return;
420
-
421
-    swiper.zoom.enabled = false;
422
-
423
-    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
424
-    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
425
-
426
-    const slideSelector = `.${swiper.params.slideClass}`;
427
-
428
-    // Scale image
429
-    if (Support.gestures) {
430
-      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
431
-      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
432
-      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
433
-    } else if (swiper.touchEvents.start === 'touchstart') {
434
-      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
435
-      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
436
-      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
437
-      if (swiper.touchEvents.cancel) {
438
-        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
439
-      }
440
-    }
441
-
442
-    // Move image
443
-    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
444
-  },
445
-};
446
-
447
-export default {
448
-  name: 'zoom',
449
-  params: {
450
-    zoom: {
451
-      enabled: false,
452
-      maxRatio: 3,
453
-      minRatio: 1,
454
-      toggle: true,
455
-      containerClass: 'swiper-zoom-container',
456
-      zoomedSlideClass: 'swiper-slide-zoomed',
457
-    },
458
-  },
459
-  create() {
460
-    const swiper = this;
461
-    const zoom = {
462
-      enabled: false,
463
-      scale: 1,
464
-      currentScale: 1,
465
-      isScaling: false,
466
-      gesture: {
467
-        $slideEl: undefined,
468
-        slideWidth: undefined,
469
-        slideHeight: undefined,
470
-        $imageEl: undefined,
471
-        $imageWrapEl: undefined,
472
-        maxRatio: 3,
473
-      },
474
-      image: {
475
-        isTouched: undefined,
476
-        isMoved: undefined,
477
-        currentX: undefined,
478
-        currentY: undefined,
479
-        minX: undefined,
480
-        minY: undefined,
481
-        maxX: undefined,
482
-        maxY: undefined,
483
-        width: undefined,
484
-        height: undefined,
485
-        startX: undefined,
486
-        startY: undefined,
487
-        touchesStart: {},
488
-        touchesCurrent: {},
489
-      },
490
-      velocity: {
491
-        x: undefined,
492
-        y: undefined,
493
-        prevPositionX: undefined,
494
-        prevPositionY: undefined,
495
-        prevTime: undefined,
496
-      },
497
-    };
498
-
499
-    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {
500
-      zoom[methodName] = Zoom[methodName].bind(swiper);
501
-    });
502
-    Utils.extend(swiper, {
503
-      zoom,
504
-    });
505
-
506
-    let scale = 1;
507
-    Object.defineProperty(swiper.zoom, 'scale', {
508
-      get() {
509
-        return scale;
510
-      },
511
-      set(value) {
512
-        if (scale !== value) {
513
-          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
514
-          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
515
-          swiper.emit('zoomChange', value, imageEl, slideEl);
516
-        }
517
-        scale = value;
518
-      },
519
-    });
520
-  },
521
-  on: {
522
-    init() {
523
-      const swiper = this;
524
-      if (swiper.params.zoom.enabled) {
525
-        swiper.zoom.enable();
526
-      }
527
-    },
528
-    destroy() {
529
-      const swiper = this;
530
-      swiper.zoom.disable();
531
-    },
532
-    touchStart(e) {
533
-      const swiper = this;
534
-      if (!swiper.zoom.enabled) return;
535
-      swiper.zoom.onTouchStart(e);
536
-    },
537
-    touchEnd(e) {
538
-      const swiper = this;
539
-      if (!swiper.zoom.enabled) return;
540
-      swiper.zoom.onTouchEnd(e);
541
-    },
542
-    doubleTap(e) {
543
-      const swiper = this;
544
-      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
545
-        swiper.zoom.toggle(e);
546
-      }
547
-    },
548
-    transitionEnd() {
549
-      const swiper = this;
550
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
551
-        swiper.zoom.onTransitionEnd();
552
-      }
553
-    },
554
-    slideChange() {
555
-      const swiper = this;
556
-      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
557
-        swiper.zoom.onTransitionEnd();
558
-      }
559
-    },
560
-  },
561
-};
562 0
deleted file mode 100644
... ...
@@ -1,18 +0,0 @@
1
-.swiper-zoom-container {
2
-  width: 100%;
3
-  height: 100%;
4
-  display: flex;
5
-  justify-content: center;
6
-  align-items: center;
7
-  text-align: center;
8
-
9
-  > img, > svg, > canvas {
10
-    max-width: 100%;
11
-    max-height: 100%;
12
-    object-fit: contain;
13
-  }
14
-}
15
-
16
-.swiper-slide-zoomed {
17
-  cursor: move;
18
-}
19 0
deleted file mode 100644
... ...
@@ -1,18 +0,0 @@
1
-.swiper-zoom-container {
2
-  width: 100%;
3
-  height: 100%;
4
-  display: flex;
5
-  justify-content: center;
6
-  align-items: center;
7
-  text-align: center;
8
-
9
-  > img, > svg, > canvas {
10
-    max-width: 100%;
11
-    max-height: 100%;
12
-    object-fit: contain;
13
-  }
14
-}
15
-
16
-.swiper-slide-zoomed {
17
-  cursor: move;
18
-}
19 0
deleted file mode 100644
20 1
Binary files a/assets/lib/swiper/5.4.0/src/icons/font/swiper-icons.ttf and /dev/null differ
21 2
deleted file mode 100644
22 3
Binary files a/assets/lib/swiper/5.4.0/src/icons/font/swiper-icons.woff and /dev/null differ
23 4
deleted file mode 100644
24 5
Binary files a/assets/lib/swiper/5.4.0/src/icons/font/swiper-icons.woff2 and /dev/null differ
25 6
deleted file mode 100644
... ...
@@ -1,3 +0,0 @@
1
-<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
2
-  <path d="M1.37727273,19.5227273 C1.11368228,19.2591368 1.11368228,18.8317723 1.37727273,18.5681818 L9.94545455,10 L1.37727273,1.43181818 C1.11368228,1.16822773 1.11368228,0.740863176 1.37727273,0.477272727 C1.64086318,0.213682278 2.06822773,0.213682278 2.33181818,0.477272727 L11.1474387,9.29289322 C11.537963,9.68341751 11.537963,10.3165825 11.1474387,10.7071068 L2.33181818,19.5227273 C2.06822773,19.7863177 1.64086318,19.7863177 1.37727273,19.5227273 Z" transform="translate(4)"/>
3
-</svg>
4 0
deleted file mode 100644
... ...
@@ -1,3 +0,0 @@
1
-<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
2
-  <path d="M10.4772727,0.477272727 C10.7408632,0.740863176 10.7408632,1.16822773 10.4772727,1.43181818 L1.90909091,10 L10.4772727,18.5681818 C10.7408632,18.8317723 10.7408632,19.2591368 10.4772727,19.5227273 C10.2136823,19.7863177 9.78631772,19.7863177 9.52272727,19.5227273 L0.707106781,10.7071068 C0.316582489,10.3165825 0.316582489,9.68341751 0.707106781,9.29289322 L9.52272727,0.477272727 C9.78631772,0.213682278 10.2136823,0.213682278 10.4772727,0.477272727 Z" transform="translate(4)"/>
3
-</svg>
4 0
deleted file mode 100644
... ...
@@ -1,24 +0,0 @@
1
-@plugin './plugin.js';
2
-.navigation-color-loop(@ruleset) when (length( @colors ) >= 1) {
3
-  @length: length( @colors ) ;
4
-  .looper( 1 ) ;
5
-  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
6
-    @navPair: extract( @colors, @index );
7
-    @navColorName: extract( @navPair, 1 ) ;
8
-    @navColorValue: extract( @navPair, 2 ) ;
9
-    @ruleset();
10
-    .looper( @index + 1 ) ;
11
-  }
12
-}
13
-
14
-.pagination-color-loop(@ruleset) when (length( @colors ) >= 1) {
15
-  @length: length( @colors ) ;
16
-  .looper( 1 ) ;
17
-  .looper( @index ) when ( @index <= @length ) and (length(extract( @colors, @index )) = 2) {
18
-    @paginationPair: extract( @colors, @index );
19
-    @paginationColorName: extract( @paginationPair, 1 ) ;
20
-    @paginationColorValue: extract( @paginationPair, 2 ) ;
21
-    @ruleset();
22
-    .looper( @index + 1 ) ;
23
-  }
24
-}
25 0
deleted file mode 100644
... ...
@@ -1,17 +0,0 @@
1
-const fs = require('fs');
2
-
3
-function base64Encode(file) {
4
-  // read binary data
5
-  const bitmap = fs.readFileSync(file);
6
-  // convert binary data to base64 encoded string
7
-  return Buffer.from(bitmap).toString('base64');
8
-}
9
-
10
-module.exports = {
11
-  install(less, pluginManager, functions) {
12
-    functions.add('swiperIconsFont', () => {
13
-      const iconsFontBase64 = base64Encode('./src/icons/font/swiper-icons.woff');
14
-      return iconsFontBase64;
15
-    });
16
-  },
17
-};
18 0
deleted file mode 100644
... ...
@@ -1,11 +0,0 @@
1
-import Browser from '../../utils/browser';
2
-
3
-export default {
4
-  name: 'browser',
5
-  proto: {
6
-    browser: Browser,
7
-  },
8
-  static: {
9
-    browser: Browser,
10
-  },
11
-};
12 0
deleted file mode 100644
... ...
@@ -1,11 +0,0 @@
1
-import Device from '../../utils/device';
2
-
3
-export default {
4
-  name: 'device',
5
-  proto: {
6
-    device: Device,
7
-  },
8
-  static: {
9
-    device: Device,
10
-  },
11
-};
12 0
deleted file mode 100644
... ...
@@ -1,90 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import Utils from '../../utils/utils';
3
-import Support from '../../utils/support';
4
-
5
-const Observer = {
6
-  func: window.MutationObserver || window.WebkitMutationObserver,
7
-  attach(target, options = {}) {
8
-    const swiper = this;
9
-
10
-    const ObserverFunc = Observer.func;
11
-    const observer = new ObserverFunc((mutations) => {
12
-      // The observerUpdate event should only be triggered
13
-      // once despite the number of mutations.  Additional
14
-      // triggers are redundant and are very costly
15
-      if (mutations.length === 1) {
16
-        swiper.emit('observerUpdate', mutations[0]);
17
-        return;
18
-      }
19
-      const observerUpdate = function observerUpdate() {
20
-        swiper.emit('observerUpdate', mutations[0]);
21
-      };
22
-
23
-      if (window.requestAnimationFrame) {
24
-        window.requestAnimationFrame(observerUpdate);
25
-      } else {
26
-        window.setTimeout(observerUpdate, 0);
27
-      }
28
-    });
29
-
30
-    observer.observe(target, {
31
-      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
32
-      childList: typeof options.childList === 'undefined' ? true : options.childList,
33
-      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
34
-    });
35
-
36
-    swiper.observer.observers.push(observer);
37
-  },
38
-  init() {
39
-    const swiper = this;
40
-    if (!Support.observer || !swiper.params.observer) return;
41
-    if (swiper.params.observeParents) {
42
-      const containerParents = swiper.$el.parents();
43
-      for (let i = 0; i < containerParents.length; i += 1) {
44
-        swiper.observer.attach(containerParents[i]);
45
-      }
46
-    }
47
-    // Observe container
48
-    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
49
-
50
-    // Observe wrapper
51
-    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
52
-  },
53
-  destroy() {
54
-    const swiper = this;
55
-    swiper.observer.observers.forEach((observer) => {
56
-      observer.disconnect();
57
-    });
58
-    swiper.observer.observers = [];
59
-  },
60
-};
61
-
62
-export default {
63
-  name: 'observer',
64
-  params: {
65
-    observer: false,
66
-    observeParents: false,
67
-    observeSlideChildren: false,
68
-  },
69
-  create() {
70
-    const swiper = this;
71
-    Utils.extend(swiper, {
72
-      observer: {
73
-        init: Observer.init.bind(swiper),
74
-        attach: Observer.attach.bind(swiper),
75
-        destroy: Observer.destroy.bind(swiper),
76
-        observers: [],
77
-      },
78
-    });
79
-  },
80
-  on: {
81
-    init() {
82
-      const swiper = this;
83
-      swiper.observer.init();
84
-    },
85
-    destroy() {
86
-      const swiper = this;
87
-      swiper.observer.destroy();
88
-    },
89
-  },
90
-};
91 0
deleted file mode 100644
... ...
@@ -1,37 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import Utils from '../../utils/utils';
3
-
4
-export default {
5
-  name: 'resize',
6
-  create() {
7
-    const swiper = this;
8
-    Utils.extend(swiper, {
9
-      resize: {
10
-        resizeHandler() {
11
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
12
-          swiper.emit('beforeResize');
13
-          swiper.emit('resize');
14
-        },
15
-        orientationChangeHandler() {
16
-          if (!swiper || swiper.destroyed || !swiper.initialized) return;
17
-          swiper.emit('orientationchange');
18
-        },
19
-      },
20
-    });
21
-  },
22
-  on: {
23
-    init() {
24
-      const swiper = this;
25
-      // Emit resize
26
-      window.addEventListener('resize', swiper.resize.resizeHandler);
27
-
28
-      // Emit orientationchange
29
-      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
30
-    },
31
-    destroy() {
32
-      const swiper = this;
33
-      window.removeEventListener('resize', swiper.resize.resizeHandler);
34
-      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
35
-    },
36
-  },
37
-};
38 0
deleted file mode 100644
... ...
@@ -1,11 +0,0 @@
1
-import Support from '../../utils/support';
2
-
3
-export default {
4
-  name: 'support',
5
-  proto: {
6
-    support: Support,
7
-  },
8
-  static: {
9
-    support: Support,
10
-  },
11
-};
12 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-/// Urlencode the SVG string
2
-/// @param {String} $svg - SVG image to encode
3
-/// @return {String} - Encoded SVG data uri
4
-@function swiper-svg-uri($svg) {
5
-  $encoded: '';
6
-  $chunkSize: 2048;
7
-  $index: 0;
8
-  $loops: ceil(str-length($svg) / $chunkSize);
9
-
10
-  $map: (
11
-   "%": "%25",
12
-   "<": "%3C",
13
-   ">": "%3E",
14
-   " ": "%20",
15
-   "!": "%21",
16
-   "*": "%2A",
17
-   '"': "%22",
18
-   ";": "%3B",
19
-   ":": "%3A",
20
-   "@": "%40",
21
-   "&": "%26",
22
-   "=": "%3D",
23
-   "+": "%2B",
24
-   "$": "%24",
25
-   ",": "%2C",
26
-   "/": "%2F",
27
-   "?": "%3F",
28
-   "#": "%23",
29
-   "[": "%5B",
30
-   "]": "%5D"
31
-  );
32
-
33
-  @for $i from 1 through $loops {
34
-    $chunk: str-slice($svg, $index, $index + $chunkSize - 1);
35
-    @each $search, $replace in $map {
36
-      $chunk: swiper-str-replace($chunk, $search, $replace);
37
-    }
38
-    $encoded: #{$encoded}#{$chunk};
39
-    $index: $index + $chunkSize;
40
-  }
41
-
42
-  @return url("data:image/svg+xml;charset=utf-8,#{$encoded}");
43
-}
44
-
45
-/// Replace `$search` with `$replace` in `$string`
46
-/// @author Hugo Giraudel
47
-/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d
48
-/// @param {String} $string - Initial string
49
-/// @param {String} $search - Substring to replace
50
-/// @param {String} $replace ('') - New value
51
-/// @return {String} - Updated string
52
-@function swiper-str-replace($string, $search, $replace: '') {
53
-  $index: str-index($string, $search);
54
-
55
-  @if $index {
56
-    @return str-slice($string, 1, $index - 1) + $replace + swiper-str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
57
-  }
58
-
59
-  @return $string;
60
-}
61 0
deleted file mode 100644
... ...
@@ -1,29 +0,0 @@
1
-// Swiper Class
2
-import Swiper from './components/core/core-class';
3
-
4
-// Core Modules
5
-import Device from './modules/device/device';
6
-import Support from './modules/support/support';
7
-import Browser from './modules/browser/browser';
8
-import Resize from './modules/resize/resize';
9
-import Observer from './modules/observer/observer';
10
-
11
-//IMPORT_COMPONENTS
12
-
13
-const components = [
14
-  Device,
15
-  Support,
16
-  Browser,
17
-  Resize,
18
-  Observer,
19
-  //INSTALL_COMPONENTS
20
-];
21
-
22
-if (typeof Swiper.use === 'undefined') {
23
-  Swiper.use = Swiper.Class.use;
24
-  Swiper.installModule = Swiper.Class.installModule;
25
-}
26
-
27
-Swiper.use(components);
28
-
29
-//EXPORT
30 0
deleted file mode 100644
... ...
@@ -1,16 +0,0 @@
1
-@import url('./less/mixins.less');
2
-
3
-@themeColor: $themeColor;
4
-@colors: $colors;
5
-
6
-@font-face {
7
-  @fontBase64: swiperIconsFont();
8
-  font-family: 'swiper-icons';
9
-  src: url("data:application/font-woff;charset=utf-8;base64, @{fontBase64}") format("woff");
10
-  font-weight: 400;
11
-  font-style: normal;
12
-}
13
-
14
-@import url('./components/core/core.less');
15
-
16
-//IMPORT_COMPONENTS
17 0
deleted file mode 100644
... ...
@@ -1,15 +0,0 @@
1
-@import "./scss/functions";
2
-
3
-$themeColor: #007aff !default;
4
-$colors: ('white': #ffffff, 'black': #000000) !default;
5
-
6
-@font-face {
7
-  font-family: 'swiper-icons';
8
-  src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff");
9
-  font-weight: 400;
10
-  font-style: normal;
11
-}
12
-
13
-@import "./components/core/core";
14
-
15
-//IMPORT_COMPONENTS
16 0
deleted file mode 100644
... ...
@@ -1,15 +0,0 @@
1
-import { window } from 'ssr-window';
2
-
3
-const Browser = (function Browser() {
4
-  function isSafari() {
5
-    const ua = window.navigator.userAgent.toLowerCase();
6
-    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
7
-  }
8
-  return {
9
-    isEdge: !!window.navigator.userAgent.match(/Edge/g),
10
-    isSafari: isSafari(),
11
-    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),
12
-  };
13
-}());
14
-
15
-export default Browser;
16 0
deleted file mode 100644
... ...
@@ -1,173 +0,0 @@
1
-import Utils from './utils';
2
-
3
-class SwiperClass {
4
-  constructor(params = {}) {
5
-    const self = this;
6
-    self.params = params;
7
-
8
-    // Events
9
-    self.eventsListeners = {};
10
-
11
-    if (self.params && self.params.on) {
12
-      Object.keys(self.params.on).forEach((eventName) => {
13
-        self.on(eventName, self.params.on[eventName]);
14
-      });
15
-    }
16
-  }
17
-
18
-  on(events, handler, priority) {
19
-    const self = this;
20
-    if (typeof handler !== 'function') return self;
21
-    const method = priority ? 'unshift' : 'push';
22
-    events.split(' ').forEach((event) => {
23
-      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
24
-      self.eventsListeners[event][method](handler);
25
-    });
26
-    return self;
27
-  }
28
-
29
-  once(events, handler, priority) {
30
-    const self = this;
31
-    if (typeof handler !== 'function') return self;
32
-    function onceHandler(...args) {
33
-      self.off(events, onceHandler);
34
-      if (onceHandler.f7proxy) {
35
-        delete onceHandler.f7proxy;
36
-      }
37
-      handler.apply(self, args);
38
-    }
39
-    onceHandler.f7proxy = handler;
40
-    return self.on(events, onceHandler, priority);
41
-  }
42
-
43
-  off(events, handler) {
44
-    const self = this;
45
-    if (!self.eventsListeners) return self;
46
-    events.split(' ').forEach((event) => {
47
-      if (typeof handler === 'undefined') {
48
-        self.eventsListeners[event] = [];
49
-      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
50
-        self.eventsListeners[event].forEach((eventHandler, index) => {
51
-          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
52
-            self.eventsListeners[event].splice(index, 1);
53
-          }
54
-        });
55
-      }
56
-    });
57
-    return self;
58
-  }
59
-
60
-  emit(...args) {
61
-    const self = this;
62
-    if (!self.eventsListeners) return self;
63
-    let events;
64
-    let data;
65
-    let context;
66
-    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
67
-      events = args[0];
68
-      data = args.slice(1, args.length);
69
-      context = self;
70
-    } else {
71
-      events = args[0].events;
72
-      data = args[0].data;
73
-      context = args[0].context || self;
74
-    }
75
-    const eventsArray = Array.isArray(events) ? events : events.split(' ');
76
-    eventsArray.forEach((event) => {
77
-      if (self.eventsListeners && self.eventsListeners[event]) {
78
-        const handlers = [];
79
-        self.eventsListeners[event].forEach((eventHandler) => {
80
-          handlers.push(eventHandler);
81
-        });
82
-        handlers.forEach((eventHandler) => {
83
-          eventHandler.apply(context, data);
84
-        });
85
-      }
86
-    });
87
-    return self;
88
-  }
89
-
90
-  useModulesParams(instanceParams) {
91
-    const instance = this;
92
-    if (!instance.modules) return;
93
-    Object.keys(instance.modules).forEach((moduleName) => {
94
-      const module = instance.modules[moduleName];
95
-      // Extend params
96
-      if (module.params) {
97
-        Utils.extend(instanceParams, module.params);
98
-      }
99
-    });
100
-  }
101
-
102
-  useModules(modulesParams = {}) {
103
-    const instance = this;
104
-    if (!instance.modules) return;
105
-    Object.keys(instance.modules).forEach((moduleName) => {
106
-      const module = instance.modules[moduleName];
107
-      const moduleParams = modulesParams[moduleName] || {};
108
-      // Extend instance methods and props
109
-      if (module.instance) {
110
-        Object.keys(module.instance).forEach((modulePropName) => {
111
-          const moduleProp = module.instance[modulePropName];
112
-          if (typeof moduleProp === 'function') {
113
-            instance[modulePropName] = moduleProp.bind(instance);
114
-          } else {
115
-            instance[modulePropName] = moduleProp;
116
-          }
117
-        });
118
-      }
119
-      // Add event listeners
120
-      if (module.on && instance.on) {
121
-        Object.keys(module.on).forEach((moduleEventName) => {
122
-          instance.on(moduleEventName, module.on[moduleEventName]);
123
-        });
124
-      }
125
-
126
-      // Module create callback
127
-      if (module.create) {
128
-        module.create.bind(instance)(moduleParams);
129
-      }
130
-    });
131
-  }
132
-
133
-  static set components(components) {
134
-    const Class = this;
135
-    if (!Class.use) return;
136
-    Class.use(components);
137
-  }
138
-
139
-  static installModule(module, ...params) {
140
-    const Class = this;
141
-    if (!Class.prototype.modules) Class.prototype.modules = {};
142
-    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);
143
-    Class.prototype.modules[name] = module;
144
-    // Prototype
145
-    if (module.proto) {
146
-      Object.keys(module.proto).forEach((key) => {
147
-        Class.prototype[key] = module.proto[key];
148
-      });
149
-    }
150
-    // Class
151
-    if (module.static) {
152
-      Object.keys(module.static).forEach((key) => {
153
-        Class[key] = module.static[key];
154
-      });
155
-    }
156
-    // Callback
157
-    if (module.install) {
158
-      module.install.apply(Class, params);
159
-    }
160
-    return Class;
161
-  }
162
-
163
-  static use(module, ...params) {
164
-    const Class = this;
165
-    if (Array.isArray(module)) {
166
-      module.forEach((m) => Class.installModule(m));
167
-      return Class;
168
-    }
169
-    return Class.installModule(module, ...params);
170
-  }
171
-}
172
-
173
-export default SwiperClass;
174 0
deleted file mode 100644
... ...
@@ -1,117 +0,0 @@
1
-import { window } from 'ssr-window';
2
-import Support from './support';
3
-
4
-const Device = (function Device() {
5
-  const platform = window.navigator.platform;
6
-  const ua = window.navigator.userAgent;
7
-
8
-  const device = {
9
-    ios: false,
10
-    android: false,
11
-    androidChrome: false,
12
-    desktop: false,
13
-    iphone: false,
14
-    ipod: false,
15
-    ipad: false,
16
-    edge: false,
17
-    ie: false,
18
-    firefox: false,
19
-    macos: false,
20
-    windows: false,
21
-    cordova: !!(window.cordova || window.phonegap),
22
-    phonegap: !!(window.cordova || window.phonegap),
23
-    electron: false,
24
-  };
25
-
26
-  const screenWidth = window.screen.width;
27
-  const screenHeight = window.screen.height;
28
-
29
-  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
30
-  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
31
-  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
32
-  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
33
-  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
34
-  const edge = ua.indexOf('Edge/') >= 0;
35
-  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
36
-  const windows = platform === 'Win32';
37
-  const electron = ua.toLowerCase().indexOf('electron') >= 0;
38
-  let macos = platform === 'MacIntel';
39
-
40
-  // iPadOs 13 fix
41
-  if (!ipad
42
-    && macos
43
-    && Support.touch
44
-    && (
45
-      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
46
-      || (screenWidth === 834 && screenHeight === 1194) // Pro 11
47
-      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
48
-      || (screenWidth === 768 && screenHeight === 1024) // other
49
-    )
50
-  ) {
51
-    ipad = ua.match(/(Version)\/([\d.]+)/);
52
-    macos = false;
53
-  }
54
-
55
-  device.ie = ie;
56
-  device.edge = edge;
57
-  device.firefox = firefox;
58
-
59
-  // Android
60
-  if (android && !windows) {
61
-    device.os = 'android';
62
-    device.osVersion = android[2];
63
-    device.android = true;
64
-    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
65
-  }
66
-  if (ipad || iphone || ipod) {
67
-    device.os = 'ios';
68
-    device.ios = true;
69
-  }
70
-  // iOS
71
-  if (iphone && !ipod) {
72
-    device.osVersion = iphone[2].replace(/_/g, '.');
73
-    device.iphone = true;
74
-  }
75
-  if (ipad) {
76
-    device.osVersion = ipad[2].replace(/_/g, '.');
77
-    device.ipad = true;
78
-  }
79
-  if (ipod) {
80
-    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
81
-    device.ipod = true;
82
-  }
83
-  // iOS 8+ changed UA
84
-  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
85
-    if (device.osVersion.split('.')[0] === '10') {
86
-      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
87
-    }
88
-  }
89
-
90
-  // Webview
91
-  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))
92
-    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);
93
-  device.webview = device.webView;
94
-  device.standalone = device.webView;
95
-
96
-  // Desktop
97
-  device.desktop = !(device.ios || device.android) || electron;
98
-  if (device.desktop) {
99
-    device.electron = electron;
100
-    device.macos = macos;
101
-    device.windows = windows;
102
-    if (device.macos) {
103
-      device.os = 'macos';
104
-    }
105
-    if (device.windows) {
106
-      device.os = 'windows';
107
-    }
108
-  }
109
-
110
-  // Pixel Ratio
111
-  device.pixelRatio = window.devicePixelRatio || 1;
112
-
113
-  // Export object
114
-  return device;
115
-}());
116
-
117
-export default Device;
118 0
deleted file mode 100644
... ...
@@ -1,88 +0,0 @@
1
-import {
2
-  $,
3
-  addClass,
4
-  removeClass,
5
-  hasClass,
6
-  toggleClass,
7
-  attr,
8
-  removeAttr,
9
-  data,
10
-  transform,
11
-  transition,
12
-  on,
13
-  off,
14
-  trigger,
15
-  transitionEnd,
16
-  outerWidth,
17
-  outerHeight,
18
-  offset,
19
-  css,
20
-  each,
21
-  html,
22
-  text,
23
-  is,
24
-  index,
25
-  eq,
26
-  append,
27
-  prepend,
28
-  next,
29
-  nextAll,
30
-  prev,
31
-  prevAll,
32
-  parent,
33
-  parents,
34
-  closest,
35
-  find,
36
-  children,
37
-  filter,
38
-  remove,
39
-  add,
40
-  styles,
41
-} from 'dom7/dist/dom7.modular';
42
-
43
-const Methods = {
44
-  addClass,
45
-  removeClass,
46
-  hasClass,
47
-  toggleClass,
48
-  attr,
49
-  removeAttr,
50
-  data,
51
-  transform,
52
-  transition,
53
-  on,
54
-  off,
55
-  trigger,
56
-  transitionEnd,
57
-  outerWidth,
58
-  outerHeight,
59
-  offset,
60
-  css,
61
-  each,
62
-  html,
63
-  text,
64
-  is,
65
-  index,
66
-  eq,
67
-  append,
68
-  prepend,
69
-  next,
70
-  nextAll,
71
-  prev,
72
-  prevAll,
73
-  parent,
74
-  parents,
75
-  closest,
76
-  find,
77
-  children,
78
-  filter,
79
-  remove,
80
-  add,
81
-  styles,
82
-};
83
-
84
-Object.keys(Methods).forEach((methodName) => {
85
-  $.fn[methodName] = $.fn[methodName] || Methods[methodName];
86
-});
87
-
88
-export default $;
89 0
deleted file mode 100644
... ...
@@ -1,35 +0,0 @@
1
-import { window, document } from 'ssr-window';
2
-
3
-const Support = (function Support() {
4
-  return {
5
-    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),
6
-
7
-    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,
8
-
9
-    observer: (function checkObserver() {
10
-      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);
11
-    }()),
12
-
13
-    passiveListener: (function checkPassiveListener() {
14
-      let supportsPassive = false;
15
-      try {
16
-        const opts = Object.defineProperty({}, 'passive', {
17
-          // eslint-disable-next-line
18
-          get() {
19
-            supportsPassive = true;
20
-          },
21
-        });
22
-        window.addEventListener('testPassiveListener', null, opts);
23
-      } catch (e) {
24
-        // No support
25
-      }
26
-      return supportsPassive;
27
-    }()),
28
-
29
-    gestures: (function checkGestures() {
30
-      return 'ongesturestart' in window;
31
-    }()),
32
-  };
33
-}());
34
-
35
-export default Support;
36 0
deleted file mode 100644
... ...
@@ -1,110 +0,0 @@
1
-import { window } from 'ssr-window';
2
-
3
-const Utils = {
4
-  deleteProps(obj) {
5
-    const object = obj;
6
-    Object.keys(object).forEach((key) => {
7
-      try {
8
-        object[key] = null;
9
-      } catch (e) {
10
-        // no getter for object
11
-      }
12
-      try {
13
-        delete object[key];
14
-      } catch (e) {
15
-        // something got wrong
16
-      }
17
-    });
18
-  },
19
-  nextTick(callback, delay = 0) {
20
-    return setTimeout(callback, delay);
21
-  },
22
-  now() {
23
-    return Date.now();
24
-  },
25
-  getTranslate(el, axis = 'x') {
26
-    let matrix;
27
-    let curTransform;
28
-    let transformMatrix;
29
-
30
-    const curStyle = window.getComputedStyle(el, null);
31
-
32
-    if (window.WebKitCSSMatrix) {
33
-      curTransform = curStyle.transform || curStyle.webkitTransform;
34
-      if (curTransform.split(',').length > 6) {
35
-        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');
36
-      }
37
-      // Some old versions of Webkit choke when 'none' is passed; pass
38
-      // empty string instead in this case
39
-      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
40
-    } else {
41
-      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
42
-      matrix = transformMatrix.toString().split(',');
43
-    }
44
-
45
-    if (axis === 'x') {
46
-      // Latest Chrome and webkits Fix
47
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
48
-      // Crazy IE10 Matrix
49
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
50
-      // Normal Browsers
51
-      else curTransform = parseFloat(matrix[4]);
52
-    }
53
-    if (axis === 'y') {
54
-      // Latest Chrome and webkits Fix
55
-      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
56
-      // Crazy IE10 Matrix
57
-      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
58
-      // Normal Browsers
59
-      else curTransform = parseFloat(matrix[5]);
60
-    }
61
-    return curTransform || 0;
62
-  },
63
-  parseUrlQuery(url) {
64
-    const query = {};
65
-    let urlToParse = url || window.location.href;
66
-    let i;
67
-    let params;
68
-    let param;
69
-    let length;
70
-    if (typeof urlToParse === 'string' && urlToParse.length) {
71
-      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
72
-      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');
73
-      length = params.length;
74
-
75
-      for (i = 0; i < length; i += 1) {
76
-        param = params[i].replace(/#\S+/g, '').split('=');
77
-        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
78
-      }
79
-    }
80
-    return query;
81
-  },
82
-  isObject(o) {
83
-    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
84
-  },
85
-  extend(...args) {
86
-    const to = Object(args[0]);
87
-    for (let i = 1; i < args.length; i += 1) {
88
-      const nextSource = args[i];
89
-      if (nextSource !== undefined && nextSource !== null) {
90
-        const keysArray = Object.keys(Object(nextSource));
91
-        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
92
-          const nextKey = keysArray[nextIndex];
93
-          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
94
-          if (desc !== undefined && desc.enumerable) {
95
-            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
96
-              Utils.extend(to[nextKey], nextSource[nextKey]);
97
-            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
98
-              to[nextKey] = {};
99
-              Utils.extend(to[nextKey], nextSource[nextKey]);
100
-            } else {
101
-              to[nextKey] = nextSource[nextKey];
102
-            }
103
-          }
104
-        }
105
-      }
106
-    }
107
-    return to;
108
-  },
109
-};
110
-export default Utils;
111 0
deleted file mode 100644
... ...
@@ -1,16 +0,0 @@
1
-@import url('./less/mixins.less');
2
-
3
-@themeColor: #007aff;
4
-@colors: white #ffffff, black #000000;
5
-
6
-@font-face {
7
-  @fontBase64: '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';
8
-  font-family: 'swiper-icons';
9
-  src: url("data:application/font-woff;charset=utf-8;base64, @{fontBase64}") format("woff");
10
-  font-weight: 400;
11
-  font-style: normal;
12
-}
13
-
14
-@import url('./components/core/core.less');
15
-
16
-//IMPORT_COMPONENTS
17 0
deleted file mode 100644
... ...
@@ -1,15 +0,0 @@
1
-@import "./scss/functions";
2
-
3
-$themeColor: #007aff !default;
4
-$colors: ('white': #ffffff, 'black': #000000) !default;
5
-
6
-@font-face {
7
-  font-family: 'swiper-icons';
8
-  src: url("data:application/font-woff;charset=utf-8;base64, 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") format("woff");
9
-  font-weight: 400;
10
-  font-style: normal;
11
-}
12
-
13
-@import "./components/core/core";
14
-
15
-//IMPORT_COMPONENTS