nextalys-carousel 0.0.53 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nextalys-carousel.umd.js +139 -248
- package/bundles/nextalys-carousel.umd.js.map +1 -1
- package/bundles/nextalys-carousel.umd.min.js +2 -2
- package/bundles/nextalys-carousel.umd.min.js.map +1 -1
- package/esm2015/lib/nxs-carousel/nxs-carousel-types.js +1 -1
- package/esm2015/lib/nxs-carousel/nxs-carousel.component.js +116 -193
- package/esm2015/lib/nxs-carousel/nxs-carousel.module.js +6 -3
- package/esm2015/lib/nxs-carousel/swiper-directives.js +9 -0
- package/esm2015/nextalys-carousel.js +3 -2
- package/fesm2015/nextalys-carousel.js +124 -195
- package/fesm2015/nextalys-carousel.js.map +1 -1
- package/lib/nxs-carousel/nxs-carousel-types.d.ts +2 -56
- package/lib/nxs-carousel/nxs-carousel-types.d.ts.map +1 -1
- package/lib/nxs-carousel/nxs-carousel.component.d.ts +16 -17
- package/lib/nxs-carousel/nxs-carousel.component.d.ts.map +1 -1
- package/lib/nxs-carousel/nxs-carousel.module.d.ts.map +1 -1
- package/lib/nxs-carousel/swiper-directives.d.ts +3 -0
- package/lib/nxs-carousel/swiper-directives.d.ts.map +1 -0
- package/nextalys-carousel.d.ts +2 -1
- package/nextalys-carousel.d.ts.map +1 -1
- package/nextalys-carousel.metadata.json +1 -1
- package/package.json +3 -13
|
@@ -3,4 +3,4 @@ export class NxsCarouselModuleConfig {
|
|
|
3
3
|
this.debug = false;
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ueHMtY2Fyb3VzZWwvbnhzLWNhcm91c2VsLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBQ0ksVUFBSyxHQUFhLEtBQUssQ0FBQztJQUM1QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTd2lwZXJPcHRpb25zIH0gZnJvbSBcInN3aXBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE54c0Nhcm91c2VsSW1hZ2Uge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBzcmM6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTnhzQ2Fyb3VzZWxPcHRpb25zIGV4dGVuZHMgU3dpcGVyT3B0aW9ucyB7XG4gICAgbnhzU2hvd05hdmlnYXRpb25CdWxsZXRzPzogYm9vbGVhbjtcbiAgICBueHNTaG93TmF2aWdhdGlvbkFycm93cz86IGJvb2xlYW47XG4gICAgbnhzVGh1bWJuYWlscz86IHtcbiAgICAgICAgc2hvdzogYm9vbGVhbjsgb25NYWluU2xpZGVyPzogYm9vbGVhbjsgcGVyY2VudEhlaWdodD86IG51bWJlcjsgcGVyVmlldz86IG51bWJlcjsgYnJlYWtwb2ludHM/OiB7XG4gICAgICAgICAgICBbc2l6ZTogbnVtYmVyXToge1xuICAgICAgICAgICAgICAgIHNwYWNlQmV0d2Vlbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBudW1iZXIgfCAnYXV0byc7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH07XG4gICAgbnhzU2hvd0ltYWdlc0NvdW50PzogYm9vbGVhbjtcbiAgICBueHNmdWxsc2NyZWVuT25DbGljaz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogYmFja2dyb3VuZCBtb2RlIDogY292ZXIsIGNvbnRhaW4sIGF1dG8sIGV0Yy4uLlxuICAgICAqIGRlZmF1bHQgPT4gY292ZXJcbiAgICAgKi9cbiAgICBueHNDYXJvdXNlbEltYWdlQmFja2dyb3VuZFNpemU/OiBzdHJpbmc7XG4gICAgbnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zPzogTnhzQ2Fyb3VzZWxPcHRpb25zO1xuICAgIG54c0Nhcm91c2VsRGlhbG9nRXhpdGFibGU/OiBib29sZWFuO1xuICAgIG54c0Nhcm91c2VsRGlhbG9nU2l6ZT86IHsgd2lkdGg6IHN0cmluZzsgaGVpZ2h0OiBzdHJpbmc7IH07XG59XG5leHBvcnQgY2xhc3MgTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcge1xuICAgIGRlYnVnPzogYm9vbGVhbiA9IGZhbHNlO1xufSJdfQ==
|
|
@@ -1,20 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, ViewEncapsulation, Input, ViewChild, ElementRef, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone } from '@angular/core';
|
|
1
|
+
import { Component, ViewEncapsulation, Input, ViewChild, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone, ContentChildren, TemplateRef } from '@angular/core';
|
|
3
2
|
import { NxsCarouselModuleConfig } from './nxs-carousel-types';
|
|
4
3
|
import { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';
|
|
5
4
|
import { MatDialog } from '@angular/material/dialog';
|
|
6
5
|
import { isPlatformBrowser } from '@angular/common';
|
|
7
6
|
import { EventsCollector } from 'nextalys-js-helpers/dist/events';
|
|
7
|
+
// import Swiper core and required modules
|
|
8
|
+
import SwiperCore, { Navigation, Pagination, Autoplay, Lazy, Thumbs } from 'swiper';
|
|
9
|
+
//Virtual,Scrollbar,A11y
|
|
10
|
+
import { SwiperComponent } from 'swiper/angular';
|
|
11
|
+
import { NxsSwiperTemplateDirective } from './swiper-directives';
|
|
12
|
+
// install Swiper modules
|
|
13
|
+
SwiperCore.use([Navigation, Pagination, Autoplay, Lazy, Thumbs]);
|
|
8
14
|
export class NxsCarouselComponent {
|
|
9
15
|
constructor(matDialog, zone, platformId, config) {
|
|
10
16
|
this.matDialog = matDialog;
|
|
11
17
|
this.zone = zone;
|
|
12
18
|
this.platformId = platformId;
|
|
13
19
|
this.config = config;
|
|
14
|
-
this.
|
|
15
|
-
this.recreateSliderSubscribed = false;
|
|
20
|
+
this.lazy = true;
|
|
16
21
|
this.eventsCollector = new EventsCollector();
|
|
17
|
-
this.options =
|
|
22
|
+
this.options = null;
|
|
23
|
+
this.thumbnailsOptions = null;
|
|
18
24
|
this.hasHtmlContent = false;
|
|
19
25
|
this.slidesCount = 0;
|
|
20
26
|
this.slideChange = new EventEmitter();
|
|
@@ -29,121 +35,27 @@ export class NxsCarouselComponent {
|
|
|
29
35
|
}
|
|
30
36
|
set setOptions(val) {
|
|
31
37
|
this.options = this.setDefaultOptions(val, false);
|
|
32
|
-
|
|
33
|
-
set setImages(val) {
|
|
34
|
-
this.images = val;
|
|
35
|
-
this.initSlides();
|
|
36
|
-
this.createSlider(true);
|
|
38
|
+
this.setThumbnailsOptions();
|
|
37
39
|
}
|
|
38
40
|
log(...args) {
|
|
39
41
|
if (!this.config.debug)
|
|
40
42
|
return;
|
|
41
43
|
console.log('[NxsCarousel]', ...args);
|
|
42
44
|
}
|
|
43
|
-
onContentChange(changes) {
|
|
44
|
-
// console.log("Log: NxsCarouselComponent -> onContentChange -> changes", changes);
|
|
45
|
-
// changes.forEach(change => console.log(change.target));
|
|
46
|
-
}
|
|
47
|
-
initSlides() {
|
|
48
|
-
if (!this.isBrowser) {
|
|
49
|
-
this.log('prevent initSlides on platform server');
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (!this.nxsSlidesWrapper) {
|
|
53
|
-
this.log('can not initSlides : nxsSlidesWrapper is not defined !');
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.log('initSlides begins');
|
|
57
|
-
this.zone.runOutsideAngular(() => {
|
|
58
|
-
if (!this.hasHtmlContent && this.images) {
|
|
59
|
-
this.nxsSlidesWrapper.nativeElement.innerHTML = '';
|
|
60
|
-
for (const cImage of this.images) {
|
|
61
|
-
const div = document.createElement('div');
|
|
62
|
-
div.className = 'swiper-slide';
|
|
63
|
-
div.style.backgroundImage = 'url(' + cImage.src + ')';
|
|
64
|
-
if (this.options.nxsCarouselImageBackgroundSize)
|
|
65
|
-
div.style.backgroundSize = this.options.nxsCarouselImageBackgroundSize;
|
|
66
|
-
this.nxsSlidesWrapper.nativeElement.appendChild(div);
|
|
67
|
-
}
|
|
68
|
-
this.slidesCount = this.images.length;
|
|
69
|
-
if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
|
|
70
|
-
this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';
|
|
71
|
-
for (const cImage of this.images) {
|
|
72
|
-
const div = document.createElement('div');
|
|
73
|
-
div.className = 'swiper-slide';
|
|
74
|
-
div.style.backgroundImage = 'url(' + cImage.src + ')';
|
|
75
|
-
this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
this.log('initSlides - images are defined - slides count => ', this.slidesCount);
|
|
79
|
-
}
|
|
80
|
-
else if (this.hasHtmlContent) {
|
|
81
|
-
this.log('initSlides - html content - slides length => ', this.nxsSlidesWrapper.nativeElement.children.length);
|
|
82
|
-
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
83
|
-
for (let i = 0; i < this.nxsSlidesWrapper.nativeElement.children.length; i++) {
|
|
84
|
-
const child = this.nxsSlidesWrapper.nativeElement.children[i];
|
|
85
|
-
if (!child.className)
|
|
86
|
-
child.className = 'swiper-slide';
|
|
87
|
-
else if (child.className.indexOf('swiper-slide') === -1) {
|
|
88
|
-
child.className += ' swiper-slide';
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
this.slidesCount = this.nxsSlidesWrapper.nativeElement.children.length;
|
|
92
|
-
this.log('initSlides - html content - slides count => ', this.slidesCount);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
45
|
destroy() {
|
|
97
|
-
var _a
|
|
46
|
+
var _a;
|
|
98
47
|
if (!this.isBrowser) {
|
|
99
48
|
return;
|
|
100
49
|
}
|
|
101
50
|
(_a = this.eventsCollector) === null || _a === void 0 ? void 0 : _a.unsubscribeAll();
|
|
102
|
-
(_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
103
|
-
(_c = this.sliderInstance) === null || _c === void 0 ? void 0 : _c.destroy();
|
|
104
51
|
}
|
|
105
52
|
ngOnDestroy() {
|
|
106
53
|
this.destroy();
|
|
107
54
|
}
|
|
108
|
-
subscribeToSlideChanged() {
|
|
109
|
-
if (!this.hasHtmlContent) {
|
|
110
|
-
this.log('subscribeToSlideChanged cannot be subscribed : has no html content');
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
if (!this.nxsSlidesWrapper || !this.nxsSlidesWrapper.nativeElement) {
|
|
114
|
-
this.log('subscribeToSlideChanged error : nxsSlidesWrapper is not defined');
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
if (typeof MutationObserver === 'undefined') {
|
|
118
|
-
this.log('cannot use mutation observer');
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (this.mutationObserver)
|
|
122
|
-
this.mutationObserver.disconnect();
|
|
123
|
-
this.log('subscribe to mutation observer');
|
|
124
|
-
this.mutationObserver = new MutationObserver((mutationsList) => {
|
|
125
|
-
// console.log("Log: NxsCarouselComponent -> subscribeToSlideChanged -> mutationsList", mutationsList);
|
|
126
|
-
// console.log("Log: NxsCarouselComponent -> subscribeToSlideChanged -> MutationObserver");
|
|
127
|
-
this.log('mutation observer - html content has changed');
|
|
128
|
-
if (mutationsList.length === 0)
|
|
129
|
-
return;
|
|
130
|
-
let mustUpdate = false;
|
|
131
|
-
for (const mutation of mutationsList) {
|
|
132
|
-
if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) {
|
|
133
|
-
mustUpdate = true;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (mustUpdate) {
|
|
138
|
-
this.initSlides();
|
|
139
|
-
this.createSlider(true);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
this.mutationObserver.observe(this.nxsSlidesWrapper.nativeElement, { childList: true, attributes: false, });
|
|
143
|
-
}
|
|
144
55
|
ngAfterViewInit() {
|
|
145
|
-
this.
|
|
146
|
-
this.
|
|
56
|
+
// console.log('thi.contents', this.contents);
|
|
57
|
+
// this.initSlides();
|
|
58
|
+
// this.createSlider(true);
|
|
147
59
|
}
|
|
148
60
|
getMainSliderHeight() {
|
|
149
61
|
if (!this.options)
|
|
@@ -161,10 +73,18 @@ export class NxsCarouselComponent {
|
|
|
161
73
|
setDefaultOptions(options, forDialog) {
|
|
162
74
|
var _a;
|
|
163
75
|
if (!options && forDialog) {
|
|
164
|
-
options = {
|
|
76
|
+
options = {
|
|
77
|
+
nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true,
|
|
78
|
+
lazy: true,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
else if (!options) {
|
|
82
|
+
options = {
|
|
83
|
+
nxsShowNavigationBullets: true, loop: true,
|
|
84
|
+
nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {},
|
|
85
|
+
lazy: true,
|
|
86
|
+
};
|
|
165
87
|
}
|
|
166
|
-
else if (!options)
|
|
167
|
-
options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {} };
|
|
168
88
|
if (options.nxsCarouselDialogOptions) {
|
|
169
89
|
if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')
|
|
170
90
|
options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };
|
|
@@ -200,8 +120,37 @@ export class NxsCarouselComponent {
|
|
|
200
120
|
options.nxsfullscreenOnClick = false;
|
|
201
121
|
if (options.nxsThumbnails.onMainSlider)
|
|
202
122
|
options.nxsShowNavigationBullets = false;
|
|
123
|
+
if (typeof options.lazy === 'undefined')
|
|
124
|
+
options.lazy = true;
|
|
125
|
+
if (typeof options.navigation === 'undefined')
|
|
126
|
+
options.navigation = true;
|
|
127
|
+
if (typeof options.pagination === 'undefined')
|
|
128
|
+
options.pagination = { clickable: true };
|
|
129
|
+
// console.log("Log ~ file: nxs-carousel.component.ts ~ line 272 ~ NxsCarouselComponent ~ setDefaultOptions ~ options", options);
|
|
203
130
|
return options;
|
|
204
131
|
}
|
|
132
|
+
setThumbnailsOptions() {
|
|
133
|
+
var _a, _b;
|
|
134
|
+
if (!!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.nxsThumbnails) === null || _b === void 0 ? void 0 : _b.show)) {
|
|
135
|
+
this.thumbnailsOptions = {
|
|
136
|
+
slidesPerView: this.options.nxsThumbnails.perView,
|
|
137
|
+
loop: false,
|
|
138
|
+
freeMode: true,
|
|
139
|
+
// watchSlidesVisibility: true,
|
|
140
|
+
watchSlidesProgress: true,
|
|
141
|
+
breakpoints: this.options.nxsThumbnails.breakpoints,
|
|
142
|
+
// spaceBetween: 10,
|
|
143
|
+
};
|
|
144
|
+
if (this.lazy) {
|
|
145
|
+
// Disable preloading of all images
|
|
146
|
+
this.thumbnailsOptions.preloadImages = false;
|
|
147
|
+
// Enable lazy loading
|
|
148
|
+
this.thumbnailsOptions.lazy = true;
|
|
149
|
+
}
|
|
150
|
+
// this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);
|
|
151
|
+
// this.options.thumbs = { swiper: this.thumbnailsSliderInstance };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
205
154
|
showFullScreenCarousel(images, wrapperClass) {
|
|
206
155
|
this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);
|
|
207
156
|
const data = { images, wrapperClass, options: this.options.nxsCarouselDialogOptions };
|
|
@@ -213,97 +162,72 @@ export class NxsCarouselComponent {
|
|
|
213
162
|
disableClose: !this.options.nxsCarouselDialogExitable,
|
|
214
163
|
});
|
|
215
164
|
}
|
|
216
|
-
createSlider(forceRecreate) {
|
|
217
|
-
if (!this.isBrowser) {
|
|
218
|
-
this.log('prevent createSlider : platform is server');
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
if (!this.nxsSliderContainer) {
|
|
222
|
-
this.log('can not createSlider : nxsSliderContainer is not defined !');
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
this.log('createSlider', this.nxsSliderContainer.nativeElement);
|
|
226
|
-
if (this.slidesCount === 0) {
|
|
227
|
-
this.log('can not createSlider : slidesCount === 0');
|
|
228
|
-
this.subscribeToSlideChanged();
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
if (this.sliderInstance && !forceRecreate) {
|
|
232
|
-
this.log('can re create slider => slider is already created.');
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
this.zone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
|
|
236
|
-
this.destroy();
|
|
237
|
-
this.options.pagination = {
|
|
238
|
-
el: '.nxs-carousel-pagination',
|
|
239
|
-
clickable: true,
|
|
240
|
-
type: 'bullets',
|
|
241
|
-
};
|
|
242
|
-
this.options.navigation = {
|
|
243
|
-
nextEl: '.nxs-carousel-button-next',
|
|
244
|
-
prevEl: '.nxs-carousel-button-prev',
|
|
245
|
-
};
|
|
246
|
-
if (!this.swiperLibrary)
|
|
247
|
-
this.swiperLibrary = yield import("swiper");
|
|
248
|
-
const Swiper = this.swiperLibrary.default;
|
|
249
|
-
if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
|
|
250
|
-
const thumbnailsOptions = {
|
|
251
|
-
slidesPerView: this.options.nxsThumbnails.perView,
|
|
252
|
-
loop: false,
|
|
253
|
-
freeMode: true,
|
|
254
|
-
watchSlidesVisibility: true,
|
|
255
|
-
watchSlidesProgress: true,
|
|
256
|
-
breakpoints: this.options.nxsThumbnails.breakpoints,
|
|
257
|
-
// spaceBetween: 10,
|
|
258
|
-
};
|
|
259
|
-
this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);
|
|
260
|
-
this.options.thumbs = { swiper: this.thumbnailsSliderInstance };
|
|
261
|
-
}
|
|
262
|
-
this.sliderInstance = new Swiper(this.nxsSliderContainer.nativeElement, this.options);
|
|
263
|
-
this.log('sliderInstance has been created', this.sliderInstance);
|
|
264
|
-
this.sliderInstance.on('slideChange', () => {
|
|
265
|
-
this.zone.run(() => {
|
|
266
|
-
this.currentSlide = this.sliderInstance.realIndex;
|
|
267
|
-
this.log("slideChange", this.currentSlide);
|
|
268
|
-
this.slideChange.next(this.currentSlide);
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
this.sliderInstance.on('click', (evt) => {
|
|
272
|
-
const target = evt.target;
|
|
273
|
-
if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)
|
|
274
|
-
return;
|
|
275
|
-
this.zone.run(() => {
|
|
276
|
-
this.slideClick.next(evt);
|
|
277
|
-
if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {
|
|
278
|
-
this.showFullScreenCarousel(this.images, 'fullscreen-carousel');
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
this.subscribeToSlideChanged();
|
|
283
|
-
}));
|
|
284
|
-
}
|
|
285
165
|
goToSlide(index, speed) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
this.sliderInstance.slideTo(index, speed);
|
|
166
|
+
var _a;
|
|
167
|
+
(_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slideTo(index, speed);
|
|
289
168
|
}
|
|
290
169
|
next() {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
this.sliderInstance.slideNext();
|
|
170
|
+
var _a;
|
|
171
|
+
(_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slideNext();
|
|
294
172
|
}
|
|
295
173
|
previous() {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
174
|
+
var _a;
|
|
175
|
+
(_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slidePrev();
|
|
176
|
+
}
|
|
177
|
+
onSwiperThumbnails(instance) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
if ((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.nxsThumbnails) === null || _b === void 0 ? void 0 : _b.show)
|
|
180
|
+
this.thumbnailsSwiperInstance = instance;
|
|
181
|
+
else
|
|
182
|
+
this.thumbnailsSwiperInstance = null;
|
|
183
|
+
// if (this.options?.nxsThumbnails?.show) {
|
|
184
|
+
// const optionsClone = MainHelpers.cloneObject(this.options);
|
|
185
|
+
// optionsClone.thumbs = { swiper: this.thumbnailsSwiperInstance };
|
|
186
|
+
// // this.options = optionsClone;
|
|
187
|
+
// // this.options = { ...this.options, thumbs: { swiper: this.thumbnailsSwiperInstance } };
|
|
188
|
+
// console.log("Log ~ file: nxs-carousel.component.ts ~ line 416 ~ NxsCarouselComponent ~ onSwiperThumbnails ~ this.options ", this.options);
|
|
189
|
+
// this.options.thumbs = { swiper: this.thumbnailsSwiperInstance };
|
|
190
|
+
// }
|
|
191
|
+
}
|
|
192
|
+
onSwiper(instance) {
|
|
193
|
+
this.log('swiper ready - instance', instance);
|
|
194
|
+
this.swiperInstance = instance;
|
|
195
|
+
this.swiperInstance.on('click', (swiperInstance, evt) => {
|
|
196
|
+
// console.log("Log ~ file: nxs-carousel.component.ts ~ line 392 ~ NxsCarouselComponent ~ this.swiperInstance.on ~ evt", evt);
|
|
197
|
+
const target = evt.target;
|
|
198
|
+
if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)
|
|
199
|
+
return;
|
|
200
|
+
this.runInZone(() => {
|
|
201
|
+
this.slideClick.next(evt);
|
|
202
|
+
if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {
|
|
203
|
+
this.showFullScreenCarousel(this.images, 'fullscreen-carousel');
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
runInZone(callback, ...args) {
|
|
209
|
+
if (!this.zone) {
|
|
210
|
+
callback(args);
|
|
211
|
+
}
|
|
212
|
+
return this.zone.run(() => callback(args));
|
|
213
|
+
}
|
|
214
|
+
onSlideChange(instances) {
|
|
215
|
+
// this.swiperInstance = instance;
|
|
216
|
+
// this.log('slide change - instance', instance);
|
|
217
|
+
this.runInZone(() => {
|
|
218
|
+
var _a;
|
|
219
|
+
this.currentSlide = ((_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.realIndex) || 0;
|
|
220
|
+
this.log('slide change - currentSlide', this.currentSlide);
|
|
221
|
+
this.slideChange.next(this.currentSlide);
|
|
222
|
+
});
|
|
299
223
|
}
|
|
300
224
|
}
|
|
301
225
|
NxsCarouselComponent.decorators = [
|
|
302
226
|
{ type: Component, args: [{
|
|
303
227
|
selector: 'nxs-carousel',
|
|
304
|
-
template: "<div
|
|
228
|
+
template: "<div *ngIf=\"options\"\n [ngClass]=\"{'swiper-container':true,'nxs-slider-with-thumbnails':!!options.nxsThumbnails && options.nxsThumbnails.show}\"\n [style.height]=\"getMainSliderHeight()\">\n <swiper [config]=\"options\" (swiper)=\"onSwiper($event)\" (slideChange)=\"onSlideChange($event)\"\n [thumbs]=\"{ swiper: thumbnailsSwiperInstance }\">\n <ng-container *ngIf=\"hasHtmlContent\">\n <ng-template *ngFor=\"let slide of contents\" swiperSlide>\n <ng-template [ngTemplateOutlet]=\"slide\" [ngTemplateOutletContext]=\"{\n $implicit: slide\n }\"></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!hasHtmlContent && images?.length\">\n <ng-template swiperSlide *ngFor=\"let slideImage of images\">\n <img class=\"nxs-image-slide swiper-lazy\" [attr.data-src]=\"slideImage.src\" />\n <div class=\"swiper-lazy-preloader swiper-lazy-preloader-black\"></div>\n </ng-template>\n </ng-container>\n </swiper>\n <ng-container *ngIf=\"images && options.nxsShowImagesCount\">\n <div class=\"nxs-image-counter\">\n {{currentSlide+1}} / {{images.length}}\n </div>\n </ng-container>\n</div>\n\n<div *ngIf=\"thumbnailsOptions && images?.length\"\n [style.height]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight) ? (options.nxsThumbnails.percentHeight + '%'):''\"\n [style.top]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight && options.nxsThumbnails.onMainSlider) ? ('-' + (options.nxsThumbnails.percentHeight) + '%'):''\"\n [ngClass]=\"{'swiper-container':true, 'nxs-slider-thumbnails-container':true,'nxs-slider-thumbnails-on-main-slider':options.nxsThumbnails && options.nxsThumbnails.onMainSlider}\">\n <swiper [config]=\"thumbnailsOptions\" (swiper)=\"onSwiperThumbnails($event)\">\n <ng-template swiperSlide *ngFor=\"let slideImage of images\">\n <img class=\"nxs-image-slide swiper-lazy\" [attr.data-src]=\"slideImage.src\" />\n <div class=\"swiper-lazy-preloader swiper-lazy-preloader-black\"></div>\n </ng-template>\n </swiper>\n</div>",
|
|
305
229
|
encapsulation: ViewEncapsulation.None,
|
|
306
|
-
styles: ["nxs-carousel{display:block;height:100%;position:relative;--swiper-navigation-color:#fff;--swiper-theme-color:#fff}nxs-carousel .swiper-container{width:100%;display:block;position:relative
|
|
230
|
+
styles: ["nxs-carousel{display:block;height:100%;position:relative;--swiper-navigation-color:#fff;--swiper-pagination-color:#fff;--swiper-theme-color:#fff}nxs-carousel .swiper-container{width:100%;height:100%;display:block;position:relative}nxs-carousel .swiper-container swiper{height:100%}nxs-carousel .swiper-container .swiper-wrapper .swiper-slide{height:100%;position:relative;width:100%;min-height:50px;background-size:cover;background-position:50%;background-repeat:no-repeat}nxs-carousel .swiper-container .nxs-image-slide{height:100%;-o-object-fit:cover;object-fit:cover;width:100%;-o-object-position:center;object-position:center}nxs-carousel .swiper-container.nxs-slider-with-thumbnails{height:80%}nxs-carousel .swiper-container.nxs-slider-thumbnails-container{height:20%;background:transparent;padding:6px 0}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide{cursor:pointer;border-radius:6px;margin:0 6px;border:2px solid transparent}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide.swiper-slide-thumb-active{border:2px solid #add8e6}nxs-carousel .swiper-container.nxs-slider-thumbnails-on-main-slider{top:-20%}nxs-carousel .nxs-image-counter{position:absolute;top:0;right:0;color:#fff;padding:4px;font-weight:700;z-index:10}"]
|
|
307
231
|
},] }
|
|
308
232
|
];
|
|
309
233
|
NxsCarouselComponent.ctorParameters = () => [
|
|
@@ -313,14 +237,13 @@ NxsCarouselComponent.ctorParameters = () => [
|
|
|
313
237
|
{ type: NxsCarouselModuleConfig, decorators: [{ type: Optional }] }
|
|
314
238
|
];
|
|
315
239
|
NxsCarouselComponent.propDecorators = {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
240
|
+
contents: [{ type: ContentChildren, args: [NxsSwiperTemplateDirective, { read: TemplateRef },] }],
|
|
241
|
+
swiperComponent: [{ type: ViewChild, args: ['swiper', { static: false },] }],
|
|
242
|
+
lazy: [{ type: Input }],
|
|
243
|
+
images: [{ type: Input }],
|
|
320
244
|
setOptions: [{ type: Input, args: ['options',] }],
|
|
321
|
-
setImages: [{ type: Input, args: ['images',] }],
|
|
322
245
|
hasHtmlContent: [{ type: Input }],
|
|
323
246
|
slideChange: [{ type: Output }],
|
|
324
247
|
slideClick: [{ type: Output }]
|
|
325
248
|
};
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBd0QsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQXlCLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBMEM3QixZQUNZLFNBQW9CLEVBQ3BCLElBQVksRUFDUyxVQUFlLEVBQ3hCLE1BQWdDO1FBSDVDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUE3Q2hELHFCQUFnQixHQUE0QixJQUFJLENBQUM7UUFDekQsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQWNoRCxZQUFPLEdBQXVCLEVBQUUsQ0FBQztRQVlqQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUt4QixnQkFBVyxHQUFHLElB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LElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUNwQixPQUFPO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3BCLE9BQU87UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3BCLE9BQU87UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OztZQTdVSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLCsxREFBNEM7Z0JBRTVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN4Qzs7O1lBUlEsU0FBUztZQUh3RyxNQUFNOzRDQXlEdkgsTUFBTSxTQUFDLFdBQVc7WUF4RG9DLHVCQUF1Qix1QkF5RDdFLFFBQVE7OztpQ0F4Q1osU0FBUyxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsrQkFHaEQsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsyQ0FJOUMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt5Q0FFMUQsU0FBUyxTQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt5QkFHeEQsS0FBSyxTQUFDLFNBQVM7d0JBSWYsS0FBSyxTQUFDLFFBQVE7NkJBTWQsS0FBSzswQkFNTCxNQUFNO3lCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgUExBVEZPUk1fSUQsIEluamVjdCwgT3B0aW9uYWwsIE5nWm9uZSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxPcHRpb25zLCBOeHNDYXJvdXNlbEltYWdlLCBTd2lwZXJJbnN0YW5jZSwgTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcgfSBmcm9tICcuL254cy1jYXJvdXNlbC10eXBlcyc7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbERpYWxvZ0RhdGEsIE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRzQ29sbGVjdG9yIH0gZnJvbSAnbmV4dGFseXMtanMtaGVscGVycy9kaXN0L2V2ZW50cyc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ254cy1jYXJvdXNlbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL254cy1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbnhzLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTnhzQ2Fyb3VzZWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICAgIHJlY3JlYXRlU2xpZGVyU3Vic2NyaWJlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZXZlbnRzQ29sbGVjdG9yID0gbmV3IEV2ZW50c0NvbGxlY3RvcigpO1xuICAgIHB1YmxpYyBpbWFnZXM6IE54c0Nhcm91c2VsSW1hZ2VbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ254c1NsaWRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbnhzU2xpZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ254c1NsaWRlc1dyYXBwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1NsaWRlc1dyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLy90aHVtYm5haWxzXG4gICAgQFZpZXdDaGlsZCgnbnhzVGh1bWJuYWlsc1NsaWRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbnhzVGh1bWJuYWlsc1NsaWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnbnhzVGh1bWJuYWlsc1NsaWRlc1dyYXBwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMgPSB7fTtcbiAgICBASW5wdXQoJ29wdGlvbnMnKVxuICAgIHNldCBzZXRPcHRpb25zKHZhbDogTnhzQ2Fyb3VzZWxPcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModmFsLCBmYWxzZSk7XG4gICAgfVxuICAgIEBJbnB1dCgnaW1hZ2VzJylcbiAgICBzZXQgc2V0SW1hZ2VzKHZhbDogTnhzQ2Fyb3VzZWxJbWFnZVtdKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VzID0gdmFsO1xuICAgICAgICB0aGlzLmluaXRTbGlkZXMoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIodHJ1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgaGFzSHRtbENvbnRlbnQgPSBmYWxzZTtcbiAgICBzbGlkZXNDb3VudDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgc2xpZGVySW5zdGFuY2U6IFN3aXBlckluc3RhbmNlO1xuICAgIHB1YmxpYyB0aHVtYm5haWxzU2xpZGVySW5zdGFuY2U6IFN3aXBlckluc3RhbmNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgc2xpZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBwdWJsaWMgY3VycmVudFNsaWRlID0gMDtcbiAgICBAT3V0cHV0KClcbiAgICBzbGlkZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIGlzQnJvd3NlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3dpcGVyTGlicmFyeTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWc/OiBOeHNDYXJvdXNlbE1vZHVsZUNvbmZpZyxcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZylcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0geyBkZWJ1ZzogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgICAgICB0aGlzLmxvZygnY29uc3RydWN0b3IgLSBpc0Jyb3dzZXInLCB0aGlzLmlzQnJvd3Nlcik7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuICAgIHByaXZhdGUgbG9nKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZGVidWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnNvbGUubG9nKCdbTnhzQ2Fyb3VzZWxdJywgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgb25Db250ZW50Q2hhbmdlKGNoYW5nZXM6IE11dGF0aW9uUmVjb3JkW10pIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2c6IE54c0Nhcm91c2VsQ29tcG9uZW50IC0+IG9uQ29udGVudENoYW5nZSAtPiBjaGFuZ2VzXCIsIGNoYW5nZXMpO1xuICAgICAgICAvLyBjaGFuZ2VzLmZvckVhY2goY2hhbmdlID0+IGNvbnNvbGUubG9nKGNoYW5nZS50YXJnZXQpKTtcbiAgICB9XG4gICAgaW5pdFNsaWRlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3ByZXZlbnQgaW5pdFNsaWRlcyBvbiBwbGF0Zm9ybSBzZXJ2ZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubnhzU2xpZGVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgaW5pdFNsaWRlcyA6IG54c1NsaWRlc1dyYXBwZXIgaXMgbm90IGRlZmluZWQgIScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIGJlZ2lucycpO1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0h0bWxDb250ZW50ICYmIHRoaXMuaW1hZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNJbWFnZSBvZiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdzd2lwZXItc2xpZGUnO1xuICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ3VybCgnICsgY0ltYWdlLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbEltYWdlQmFja2dyb3VuZFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZFNpemUgPSB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxJbWFnZUJhY2tncm91bmRTaXplO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICghIXRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNJbWFnZSBvZiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gJ3N3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ3VybCgnICsgY0ltYWdlLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnhzVGh1bWJuYWlsc1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaW1hZ2VzIGFyZSBkZWZpbmVkIC0gc2xpZGVzIGNvdW50ID0+ICcsIHRoaXMuc2xpZGVzQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaHRtbCBjb250ZW50IC0gc2xpZGVzIGxlbmd0aCA9PiAnLCB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC5jbGFzc05hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuY2xhc3NOYW1lLmluZGV4T2YoJ3N3aXBlci1zbGlkZScpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NOYW1lICs9ICcgc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdpbml0U2xpZGVzIC0gaHRtbCBjb250ZW50IC0gc2xpZGVzIGNvdW50ID0+ICcsIHRoaXMuc2xpZGVzQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRzQ29sbGVjdG9yPy51bnN1YnNjcmliZUFsbCgpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZT8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3N1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIGNhbm5vdCBiZSBzdWJzY3JpYmVkIDogaGFzIG5vIGh0bWwgY29udGVudCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ueHNTbGlkZXNXcmFwcGVyIHx8ICF0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ3N1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIGVycm9yIDogbnhzU2xpZGVzV3JhcHBlciBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW5ub3QgdXNlIG11dGF0aW9uIG9ic2VydmVyJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlIHRvIG11dGF0aW9uIG9ic2VydmVyJyk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnNMaXN0KSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkxvZzogTnhzQ2Fyb3VzZWxDb21wb25lbnQgLT4gc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgLT4gbXV0YXRpb25zTGlzdFwiLCBtdXRhdGlvbnNMaXN0KTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCAtPiBNdXRhdGlvbk9ic2VydmVyXCIpO1xuICAgICAgICAgICAgdGhpcy5sb2coJ211dGF0aW9uIG9ic2VydmVyIC0gaHRtbCBjb250ZW50IGhhcyBjaGFuZ2VkJyk7XG4gICAgICAgICAgICBpZiAobXV0YXRpb25zTGlzdC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IG11c3RVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDAgfHwgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbXVzdFVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtdXN0VXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlczogZmFsc2UsIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgICAgICB0aGlzLmNyZWF0ZVNsaWRlcih0cnVlKTtcbiAgICB9XG4gICAgZ2V0TWFpblNsaWRlckhlaWdodCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMub25NYWluU2xpZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDEwMCAtIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpICsgJyUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMsIGZvckRpYWxvZzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIW9wdGlvbnMgJiYgZm9yRGlhbG9nKSB7XG4gICAgICAgICAgICBvcHRpb25zID0geyBueHNTaG93TmF2aWdhdGlvbkJ1bGxldHM6IHRydWUsIGxvb3A6IHRydWUsIG54c1RodW1ibmFpbHM6IHsgc2hvdzogdHJ1ZSB9LCBlZmZlY3Q6ICdzbGlkZScsIG54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzOiB0cnVlLCBueHNTaG93SW1hZ2VzQ291bnQ6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghb3B0aW9ucylcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0czogdHJ1ZSwgbG9vcDogdHJ1ZSwgbnhzVGh1bWJuYWlsczogeyBzaG93OiBmYWxzZSB9LCBlZmZlY3Q6ICdzbGlkZScsIG54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzOiB0cnVlLCBueHNTaG93SW1hZ2VzQ291bnQ6IGZhbHNlLCBueHNDYXJvdXNlbERpYWxvZ09wdGlvbnM6IHt9IH07XG4gICAgICAgIGlmIChvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID0geyBzaG93OiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5lZmZlY3QgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLmVmZmVjdCA9ICdzbGlkZSc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNTaG93TmF2aWdhdGlvbkFycm93cyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghIW9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHM/LnNob3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9IDIwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID0gMTA7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgNjQwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICA3Njg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDgsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMubnhzVGh1bWJuYWlscylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscyA9IHsgc2hvdzogZmFsc2UgfTtcblxuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cgJiYgdHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID0gMjA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93ICYmIHR5cGVvZiBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9IDEwO1xuXG5cbiAgICAgICAgaWYgKGZvckRpYWxvZylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzZnVsbHNjcmVlbk9uQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpXG4gICAgICAgICAgICBvcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0cyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgcHVibGljIHNob3dGdWxsU2NyZWVuQ2Fyb3VzZWwoaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW10sIHdyYXBwZXJDbGFzcz86IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zID0gdGhpcy5zZXREZWZhdWx0T3B0aW9ucyh0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZGF0YTogTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhID0geyBpbWFnZXMsIHdyYXBwZXJDbGFzcywgb3B0aW9uczogdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucyB9O1xuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ254cy1jYXJvdXNlbC1kaWFsb2cnLFxuICAgICAgICAgICAgd2lkdGg6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUud2lkdGggOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBoZWlnaHQ6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUuaGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiAhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nRXhpdGFibGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVNsaWRlcihmb3JjZVJlY3JlYXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdwcmV2ZW50IGNyZWF0ZVNsaWRlciA6IHBsYXRmb3JtIGlzIHNlcnZlcicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ueHNTbGlkZXJDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW4gbm90IGNyZWF0ZVNsaWRlciA6IG54c1NsaWRlckNvbnRhaW5lciBpcyBub3QgZGVmaW5lZCAhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ2NyZWF0ZVNsaWRlcicsIHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5zbGlkZXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgY3JlYXRlU2xpZGVyIDogc2xpZGVzQ291bnQgPT09IDAnKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zbGlkZXJJbnN0YW5jZSAmJiAhZm9yY2VSZWNyZWF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiByZSBjcmVhdGUgc2xpZGVyID0+IHNsaWRlciBpcyBhbHJlYWR5IGNyZWF0ZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgZWw6ICcubnhzLWNhcm91c2VsLXBhZ2luYXRpb24nLFxuICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnVsbGV0cycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm5hdmlnYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbmV4dEVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tbmV4dCcsXG4gICAgICAgICAgICAgICAgcHJldkVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tcHJldicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN3aXBlckxpYnJhcnkpXG4gICAgICAgICAgICAgICAgdGhpcy5zd2lwZXJMaWJyYXJ5ID0gYXdhaXQgaW1wb3J0KFwic3dpcGVyXCIpO1xuICAgICAgICAgICAgY29uc3QgU3dpcGVyID0gdGhpcy5zd2lwZXJMaWJyYXJ5LmRlZmF1bHQ7XG4gICAgICAgICAgICBpZiAoISF0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsc09wdGlvbnM6IE54c0Nhcm91c2VsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZyZWVNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Zpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BhY2VCZXR3ZWVuOiAxMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc1NsaWRlckluc3RhbmNlID0gbmV3IFN3aXBlcih0aGlzLm54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGh1bWJuYWlsc09wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aHVtYnMgPSB7IHN3aXBlcjogdGhpcy50aHVtYm5haWxzU2xpZGVySW5zdGFuY2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmxvZygnc2xpZGVySW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCcsIHRoaXMuc2xpZGVySW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZS5vbignc2xpZGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gdGhpcy5zbGlkZXJJbnN0YW5jZS5yZWFsSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nKFwic2xpZGVDaGFuZ2VcIiwgdGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLm9uKCdjbGljaycsIChldnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ254cy1jYXJvdXNlbC1idXR0b24nKSAhPT0gLTEgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItcGFnaW5hdGlvbicpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2xpY2submV4dChldnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c2Z1bGxzY3JlZW5PbkNsaWNrICYmIHRoaXMuaW1hZ2VzICYmIHRoaXMuaW1hZ2VzLmxlbmd0aCAmJiAhdGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RnVsbFNjcmVlbkNhcm91c2VsKHRoaXMuaW1hZ2VzLCAnZnVsbHNjcmVlbi1jYXJvdXNlbCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvU2xpZGUoaW5kZXg6IG51bWJlciwgc3BlZWQ/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlVG8oaW5kZXgsIHNwZWVkKTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlTmV4dCgpO1xuICAgIH1cbiAgICBwcmV2aW91cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlUHJldigpO1xuICAgIH1cbn1cbiJdfQ==
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUssT0FBTyxFQUF3Qyx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JHLE9BQU8sRUFBeUIsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLDBDQUEwQztBQUMxQyxPQUFPLFVBQVUsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBeUIsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNHLHdCQUF3QjtBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUseUJBQXlCO0FBQ3pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQU9qRSxNQUFNLE9BQU8sb0JBQW9CO0lBK0I3QixZQUNZLFNBQW9CLEVBQ3BCLElBQVksRUFDUyxVQUFlLEVBQ3hCLE1BQWdDO1FBSDVDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNTLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUE3QnhELFNBQUksR0FBRyxJQUFJLENBQUM7UUFDSixvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFJaEQsWUFBTyxHQUF1QixJQUFJLENBQUM7UUFDbkMsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQU94QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUt4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFeEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUEwQyxDQUFDO1FBQ3hFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFRZCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBN0JELElBQ0ksVUFBVSxDQUFDLEdBQXVCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBMEJPLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNsQixPQUFPO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ08sT0FBTzs7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixPQUFPO1NBQ1Y7UUFDRCxNQUFBLElBQUksQ0FBQyxlQUFlLDBDQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxlQUFlO1FBQ1gsOENBQThDO1FBQzlDLHFCQUFxQjtRQUNyQiwyQkFBMkI7SUFDL0IsQ0FBQztJQUNELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3pDLE9BQU8sTUFBTSxDQUFDO2FBQ2pCO2lCQUNJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFO2dCQUMvQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNqRTtTQUNKO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ08saUJBQWlCLENBQUMsT0FBMkIsRUFBRSxTQUFrQjs7UUFDckUsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7WUFDdkIsT0FBTyxHQUFHO2dCQUNOLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJO2dCQUNuSixJQUFJLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDTDthQUNJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixPQUFPLEdBQUc7Z0JBQ04sd0JBQXdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUMxQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEVBQUU7Z0JBQ3ZJLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNMO1FBQ0QsSUFBSSxPQUFPLENBQUMsd0JBQXdCLEVBQUU7WUFDbEMsSUFBSSxPQUFPLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEtBQUssV0FBVztnQkFDckUsT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNyRSxJQUFJLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sS0FBSyxXQUFXO2dCQUM5RCxPQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUN0RCxJQUFJLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixLQUFLLFdBQVc7Z0JBQy9FLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFFcEUsSUFBSSxDQUFDLENBQUMsQ0FBQSxNQUFBLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLDBDQUFFLElBQUksQ0FBQSxFQUFFO2dCQUN4RCxJQUFJLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxhQUFhLEtBQUssV0FBVztvQkFDbkYsT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssV0FBVztvQkFDN0UsT0FBTyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRztvQkFDekQsR0FBRyxFQUFFO3dCQUNELGFBQWEsRUFBRSxDQUFDO3FCQUNuQjtvQkFDRCxHQUFHLEVBQUU7d0JBQ0QsYUFBYSxFQUFFLENBQUM7cUJBQ25CO29CQUNELElBQUksRUFBRTt3QkFDRixhQUFhLEVBQUUsQ0FBQztxQkFDbkI7aUJBQ0osQ0FBQzthQUNMO1NBQ0o7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDdEIsT0FBTyxDQUFDLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUU1QyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEtBQUssV0FBVztZQUN4RixPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFFN0MsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxLQUFLLFdBQVc7WUFDbEYsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBR3ZDLElBQUksU0FBUztZQUNULE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVk7WUFDbEMsT0FBTyxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUU3QyxJQUFJLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksT0FBTyxPQUFPLENBQUMsVUFBVSxLQUFLLFdBQVc7WUFDekMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxPQUFPLE9BQU8sQ0FBQyxVQUFVLEtBQUssV0FBVztZQUN6QyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdDLGlJQUFpSTtRQUVqSSxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU8sb0JBQW9COztRQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxhQUFhLDBDQUFFLElBQUksQ0FBQSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRztnQkFDckIsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU87Z0JBQ2pELElBQUksRUFBRSxLQUFLO2dCQUNYLFFBQVEsRUFBRSxJQUFJO2dCQUNkLCtCQUErQjtnQkFDL0IsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVc7Z0JBQ25ELG9CQUFvQjthQUN2QixDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNYLG1DQUFtQztnQkFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQzdDLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7YUFDdEM7WUFDRCxrSEFBa0g7WUFDbEgsbUVBQW1FO1NBQ3RFO0lBQ0wsQ0FBQztJQUNNLHNCQUFzQixDQUFDLE1BQTBCLEVBQUUsWUFBcUI7UUFDM0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RyxNQUFNLElBQUksR0FBMEIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDN0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDNUMsSUFBSTtZQUNKLFVBQVUsRUFBRSxxQkFBcUI7WUFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNsRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BHLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCO1NBQ3hELENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWM7O1FBQ25DLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSTs7UUFDQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxRQUFROztRQUNKLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUNELGtCQUFrQixDQUFDLFFBQWdCOztRQUMvQixJQUFJLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxhQUFhLDBDQUFFLElBQUk7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQzs7WUFFekMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUV6QywyQ0FBMkM7UUFDM0Msa0VBQWtFO1FBQ2xFLHVFQUF1RTtRQUN2RSxzQ0FBc0M7UUFDdEMsZ0dBQWdHO1FBQ2hHLG9KQUFvSjtRQUNwSix1RUFBdUU7UUFDdkUsSUFBSTtJQUNSLENBQUM7SUFDRCxRQUFRLENBQUMsUUFBZ0I7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDcEQsOEhBQThIO1lBQzlILE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFxQixDQUFDO1lBQ3pDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUcsT0FBTztZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUNoRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2lCQUNuRTtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08sU0FBUyxDQUFxQyxRQUFXLEVBQUUsR0FBRyxJQUFXO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQW1CO1FBQzdCLGtDQUFrQztRQUNsQyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLFNBQVMsS0FBSSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBNU9KLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsdXhFQUE0QztnQkFFNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3hDOzs7WUFoQlEsU0FBUztZQUg0RixNQUFNOzRDQXNEM0csTUFBTSxTQUFDLFdBQVc7WUFyRG9CLHVCQUF1Qix1QkFzRDdELFFBQVE7Ozt1QkFsQ1osZUFBZSxTQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTs4QkFFakUsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUJBRXJDLEtBQUs7cUJBSUwsS0FBSzt5QkFJTCxLQUFLLFNBQUMsU0FBUzs2QkFLZixLQUFLOzBCQU1MLE1BQU07eUJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBQTEFURk9STV9JRCwgSW5qZWN0LCBPcHRpb25hbCwgTmdab25lLCBDb250ZW50Q2hpbGRyZW4sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbE9wdGlvbnMsIE54c0Nhcm91c2VsSW1hZ2UsIE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhLCBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50c0NvbGxlY3RvciB9IGZyb20gJ25leHRhbHlzLWpzLWhlbHBlcnMvZGlzdC9ldmVudHMnO1xuLy8gaW1wb3J0IFN3aXBlciBjb3JlIGFuZCByZXF1aXJlZCBtb2R1bGVzXG5pbXBvcnQgU3dpcGVyQ29yZSwgeyBOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uLCBBdXRvcGxheSwgTGF6eSwgU3dpcGVyLCBTd2lwZXJPcHRpb25zLCBUaHVtYnMgfSBmcm9tICdzd2lwZXInO1xuLy9WaXJ0dWFsLFNjcm9sbGJhcixBMTF5XG5pbXBvcnQgeyBTd2lwZXJDb21wb25lbnQgfSBmcm9tICdzd2lwZXIvYW5ndWxhcic7XG5pbXBvcnQgeyBOeHNTd2lwZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vc3dpcGVyLWRpcmVjdGl2ZXMnO1xuXG4vLyBpbnN0YWxsIFN3aXBlciBtb2R1bGVzXG5Td2lwZXJDb3JlLnVzZShbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbiwgQXV0b3BsYXksIExhenksIFRodW1ic10pO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdueHMtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ueHMtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL254cy1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE54c0Nhcm91c2VsQ29tcG9uZW50IHtcbiAgICBAQ29udGVudENoaWxkcmVuKE54c1N3aXBlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgY29udGVudHMhOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc3dpcGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc3dpcGVyQ29tcG9uZW50PzogU3dpcGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpXG4gICAgbGF6eSA9IHRydWU7XG4gICAgcHJpdmF0ZSBldmVudHNDb2xsZWN0b3IgPSBuZXcgRXZlbnRzQ29sbGVjdG9yKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbWFnZXM6IE54c0Nhcm91c2VsSW1hZ2VbXTtcbiAgICBvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMgPSBudWxsO1xuICAgIHRodW1ibmFpbHNPcHRpb25zOiBTd2lwZXJPcHRpb25zID0gbnVsbDtcbiAgICBASW5wdXQoJ29wdGlvbnMnKVxuICAgIHNldCBzZXRPcHRpb25zKHZhbDogTnhzQ2Fyb3VzZWxPcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModmFsLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0VGh1bWJuYWlsc09wdGlvbnMoKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBoYXNIdG1sQ29udGVudCA9IGZhbHNlO1xuICAgIHNsaWRlc0NvdW50OiBudW1iZXIgPSAwO1xuICAgIHByaXZhdGUgc3dpcGVySW5zdGFuY2U6IFN3aXBlcjtcbiAgICB0aHVtYm5haWxzU3dpcGVySW5zdGFuY2U6IFN3aXBlcjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHNsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgcHVibGljIGN1cnJlbnRTbGlkZSA9IDA7XG4gICAgQE91dHB1dCgpXG4gICAgc2xpZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBQb2ludGVyRXZlbnQ+KCk7XG4gICAgaXNCcm93c2VyID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZz86IE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnLFxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnKVxuICAgICAgICAgICAgdGhpcy5jb25maWcgPSB7IGRlYnVnOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgICAgIHRoaXMubG9nKCdjb25zdHJ1Y3RvciAtIGlzQnJvd3NlcicsIHRoaXMuaXNCcm93c2VyKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5zZXREZWZhdWx0T3B0aW9ucyh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBsb2coLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5kZWJ1ZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc29sZS5sb2coJ1tOeHNDYXJvdXNlbF0nLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBkZXN0cm95KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmVudHNDb2xsZWN0b3I/LnVuc3Vic2NyaWJlQWxsKCk7XG4gICAgfVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygndGhpLmNvbnRlbnRzJywgdGhpcy5jb250ZW50cyk7XG4gICAgICAgIC8vIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgICAgICAvLyB0aGlzLmNyZWF0ZVNsaWRlcih0cnVlKTtcbiAgICB9XG4gICAgZ2V0TWFpblNsaWRlckhlaWdodCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMub25NYWluU2xpZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDEwMCAtIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnBlcmNlbnRIZWlnaHQpICsgJyUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zOiBOeHNDYXJvdXNlbE9wdGlvbnMsIGZvckRpYWxvZzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIW9wdGlvbnMgJiYgZm9yRGlhbG9nKSB7XG4gICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0czogdHJ1ZSwgbG9vcDogdHJ1ZSwgbnhzVGh1bWJuYWlsczogeyBzaG93OiB0cnVlIH0sIGVmZmVjdDogJ3NsaWRlJywgbnhzU2hvd05hdmlnYXRpb25BcnJvd3M6IHRydWUsIG54c1Nob3dJbWFnZXNDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsYXp5OiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBueHNTaG93TmF2aWdhdGlvbkJ1bGxldHM6IHRydWUsIGxvb3A6IHRydWUsXG4gICAgICAgICAgICAgICAgbnhzVGh1bWJuYWlsczogeyBzaG93OiBmYWxzZSB9LCBlZmZlY3Q6ICdzbGlkZScsIG54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzOiB0cnVlLCBueHNTaG93SW1hZ2VzQ291bnQ6IGZhbHNlLCBueHNDYXJvdXNlbERpYWxvZ09wdGlvbnM6IHt9LFxuICAgICAgICAgICAgICAgIGxhenk6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID0geyBzaG93OiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5lZmZlY3QgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLmVmZmVjdCA9ICdzbGlkZSc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNTaG93TmF2aWdhdGlvbkFycm93cyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghIW9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHM/LnNob3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9IDIwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID0gMTA7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgNjQwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICA3Njg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDgsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMubnhzVGh1bWJuYWlscylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscyA9IHsgc2hvdzogZmFsc2UgfTtcblxuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cgJiYgdHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID0gMjA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93ICYmIHR5cGVvZiBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9IDEwO1xuXG5cbiAgICAgICAgaWYgKGZvckRpYWxvZylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzZnVsbHNjcmVlbk9uQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpXG4gICAgICAgICAgICBvcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0cyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5sYXp5ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubGF6eSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm5hdmlnYXRpb24gPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgb3B0aW9ucy5uYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnBhZ2luYXRpb24gPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgb3B0aW9ucy5wYWdpbmF0aW9uID0geyBjbGlja2FibGU6IHRydWUgfTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2cgfiBmaWxlOiBueHMtY2Fyb3VzZWwuY29tcG9uZW50LnRzIH4gbGluZSAyNzIgfiBOeHNDYXJvdXNlbENvbXBvbmVudCB+IHNldERlZmF1bHRPcHRpb25zIH4gb3B0aW9uc1wiLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRodW1ibmFpbHNPcHRpb25zKCkge1xuICAgICAgICBpZiAoISF0aGlzLm9wdGlvbnM/Lm54c1RodW1ibmFpbHM/LnNob3cpIHtcbiAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc09wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyxcbiAgICAgICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmcmVlTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAvLyB3YXRjaFNsaWRlc1Zpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBicmVha3BvaW50czogdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMuYnJlYWtwb2ludHMsXG4gICAgICAgICAgICAgICAgLy8gc3BhY2VCZXR3ZWVuOiAxMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBwcmVsb2FkaW5nIG9mIGFsbCBpbWFnZXNcbiAgICAgICAgICAgICAgICB0aGlzLnRodW1ibmFpbHNPcHRpb25zLnByZWxvYWRJbWFnZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBFbmFibGUgbGF6eSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgdGhpcy50aHVtYm5haWxzT3B0aW9ucy5sYXp5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMudGh1bWJuYWlsc1NsaWRlckluc3RhbmNlID0gbmV3IFN3aXBlcih0aGlzLm54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGh1bWJuYWlsc09wdGlvbnMpO1xuICAgICAgICAgICAgLy8gdGhpcy5vcHRpb25zLnRodW1icyA9IHsgc3dpcGVyOiB0aGlzLnRodW1ibmFpbHNTbGlkZXJJbnN0YW5jZSB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBzaG93RnVsbFNjcmVlbkNhcm91c2VsKGltYWdlczogTnhzQ2Fyb3VzZWxJbWFnZVtdLCB3cmFwcGVyQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucyA9IHRoaXMuc2V0RGVmYXVsdE9wdGlvbnModGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRhdGE6IE54c0Nhcm91c2VsRGlhbG9nRGF0YSA9IHsgaW1hZ2VzLCB3cmFwcGVyQ2xhc3MsIG9wdGlvbnM6IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMgfTtcbiAgICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdueHMtY2Fyb3VzZWwtZGlhbG9nJyxcbiAgICAgICAgICAgIHdpZHRoOiAhIXRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUgPyB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dTaXplLndpZHRoIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiAhIXRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUgPyB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dTaXplLmhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogIXRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ0V4aXRhYmxlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ29Ub1NsaWRlKGluZGV4OiBudW1iZXIsIHNwZWVkPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2U/LnNsaWRlVG8oaW5kZXgsIHNwZWVkKTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJJbnN0YW5jZT8uc2xpZGVOZXh0KCk7XG4gICAgfVxuICAgIHByZXZpb3VzKCkge1xuICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlPy5zbGlkZVByZXYoKTtcbiAgICB9XG4gICAgb25Td2lwZXJUaHVtYm5haWxzKGluc3RhbmNlOiBTd2lwZXIpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8ubnhzVGh1bWJuYWlscz8uc2hvdylcbiAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc1N3aXBlckluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc1N3aXBlckluc3RhbmNlID0gbnVsbDtcblxuICAgICAgICAvLyBpZiAodGhpcy5vcHRpb25zPy5ueHNUaHVtYm5haWxzPy5zaG93KSB7XG4gICAgICAgIC8vICAgICBjb25zdCBvcHRpb25zQ2xvbmUgPSBNYWluSGVscGVycy5jbG9uZU9iamVjdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAvLyAgICAgb3B0aW9uc0Nsb25lLnRodW1icyA9IHsgc3dpcGVyOiB0aGlzLnRodW1ibmFpbHNTd2lwZXJJbnN0YW5jZSB9O1xuICAgICAgICAvLyAgICAgLy8gdGhpcy5vcHRpb25zID0gb3B0aW9uc0Nsb25lO1xuICAgICAgICAvLyAgICAgLy8gdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHRodW1iczogeyBzd2lwZXI6IHRoaXMudGh1bWJuYWlsc1N3aXBlckluc3RhbmNlIH0gfTtcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKFwiTG9nIH4gZmlsZTogbnhzLWNhcm91c2VsLmNvbXBvbmVudC50cyB+IGxpbmUgNDE2IH4gTnhzQ2Fyb3VzZWxDb21wb25lbnQgfiBvblN3aXBlclRodW1ibmFpbHMgfiAgICB0aGlzLm9wdGlvbnMgXCIsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIC8vICAgICB0aGlzLm9wdGlvbnMudGh1bWJzID0geyBzd2lwZXI6IHRoaXMudGh1bWJuYWlsc1N3aXBlckluc3RhbmNlIH07XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgb25Td2lwZXIoaW5zdGFuY2U6IFN3aXBlcikge1xuICAgICAgICB0aGlzLmxvZygnc3dpcGVyIHJlYWR5IC0gaW5zdGFuY2UnLCBpbnN0YW5jZSk7XG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgdGhpcy5zd2lwZXJJbnN0YW5jZS5vbignY2xpY2snLCAoc3dpcGVySW5zdGFuY2UsIGV2dCkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2cgfiBmaWxlOiBueHMtY2Fyb3VzZWwuY29tcG9uZW50LnRzIH4gbGluZSAzOTIgfiBOeHNDYXJvdXNlbENvbXBvbmVudCB+IHRoaXMuc3dpcGVySW5zdGFuY2Uub24gfiBldnRcIiwgZXZ0KTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdueHMtY2Fyb3VzZWwtYnV0dG9uJykgIT09IC0xIHx8IHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignc3dpcGVyLXBhZ2luYXRpb24nKSAhPT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5ydW5JblpvbmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVDbGljay5uZXh0KGV2dCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNmdWxsc2NyZWVuT25DbGljayAmJiB0aGlzLmltYWdlcyAmJiB0aGlzLmltYWdlcy5sZW5ndGggJiYgIXRoaXMuaGFzSHRtbENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RnVsbFNjcmVlbkNhcm91c2VsKHRoaXMuaW1hZ2VzLCAnZnVsbHNjcmVlbi1jYXJvdXNlbCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIHJ1bkluWm9uZTxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPihjYWxsYmFjazogVCwgLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLnpvbmUpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnpvbmUucnVuKCgpID0+IGNhbGxiYWNrKGFyZ3MpKTtcbiAgICB9XG5cbiAgICBvblNsaWRlQ2hhbmdlKGluc3RhbmNlczogU3dpcGVyW10pIHtcbiAgICAgICAgLy8gdGhpcy5zd2lwZXJJbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgICAvLyB0aGlzLmxvZygnc2xpZGUgY2hhbmdlIC0gaW5zdGFuY2UnLCBpbnN0YW5jZSk7XG4gICAgICAgIHRoaXMucnVuSW5ab25lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gdGhpcy5zd2lwZXJJbnN0YW5jZT8ucmVhbEluZGV4IHx8IDA7XG4gICAgICAgICAgICB0aGlzLmxvZygnc2xpZGUgY2hhbmdlIC0gY3VycmVudFNsaWRlJywgdGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgdGhpcy5zbGlkZUNoYW5nZS5uZXh0KHRoaXMuY3VycmVudFNsaWRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -6,7 +6,8 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
6
6
|
import { MatDialogModule } from '@angular/material/dialog';
|
|
7
7
|
import { NxsCarouselComponent } from './nxs-carousel.component';
|
|
8
8
|
import { NxsCarouselModuleConfig } from './nxs-carousel-types';
|
|
9
|
-
import {
|
|
9
|
+
import { SwiperModule } from 'swiper/angular';
|
|
10
|
+
import { NxsSwiperTemplateDirective } from './swiper-directives';
|
|
10
11
|
export class NxsCarouselModule {
|
|
11
12
|
static forRoot(config) {
|
|
12
13
|
return {
|
|
@@ -22,17 +23,19 @@ NxsCarouselModule.decorators = [
|
|
|
22
23
|
declarations: [
|
|
23
24
|
NxsCarouselComponent,
|
|
24
25
|
NxsCarouselDialogComponent,
|
|
26
|
+
NxsSwiperTemplateDirective,
|
|
25
27
|
],
|
|
26
28
|
imports: [
|
|
27
29
|
CommonModule,
|
|
28
30
|
MatIconModule,
|
|
29
31
|
MatButtonModule,
|
|
30
32
|
MatDialogModule,
|
|
31
|
-
|
|
33
|
+
SwiperModule,
|
|
32
34
|
],
|
|
33
35
|
exports: [
|
|
34
36
|
NxsCarouselComponent,
|
|
37
|
+
NxsSwiperTemplateDirective,
|
|
35
38
|
],
|
|
36
39
|
},] }
|
|
37
40
|
];
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQW9CakUsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWdDO1FBQ2xELE9BQU87WUFDSCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRTtnQkFDUCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2FBQ3pEO1NBQ0osQ0FBQztJQUNOLENBQUM7OztZQTFCSixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFO29CQUNWLG9CQUFvQjtvQkFDcEIsMEJBQTBCO29CQUMxQiwwQkFBMEI7aUJBQzdCO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxZQUFZO29CQUNaLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixlQUFlO29CQUNmLFlBQVk7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLG9CQUFvQjtvQkFDcEIsMEJBQTBCO2lCQUM3QjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4vbnhzLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOeHNDYXJvdXNlbE1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbnhzLWNhcm91c2VsLXR5cGVzJztcbmltcG9ydCB7IFN3aXBlck1vZHVsZSB9IGZyb20gJ3N3aXBlci9hbmd1bGFyJztcbmltcG9ydCB7IE54c1N3aXBlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zd2lwZXItZGlyZWN0aXZlcyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE54c0Nhcm91c2VsQ29tcG9uZW50LFxuICAgICAgICBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgTnhzU3dpcGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIFN3aXBlck1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgTnhzQ2Fyb3VzZWxDb21wb25lbnQsXG4gICAgICAgIE54c1N3aXBlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE54c0Nhcm91c2VsTW9kdWxlIHtcbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnPzogTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE54c0Nhcm91c2VsTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTnhzQ2Fyb3VzZWxNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Directive } from "@angular/core";
|
|
2
|
+
export class NxsSwiperTemplateDirective {
|
|
3
|
+
}
|
|
4
|
+
NxsSwiperTemplateDirective.decorators = [
|
|
5
|
+
{ type: Directive, args: [{
|
|
6
|
+
selector: '[nxsSwiperTemplate]',
|
|
7
|
+
},] }
|
|
8
|
+
];
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWRpcmVjdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL254cy1jYXJvdXNlbC9zd2lwZXItZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzFDLE1BQU0sT0FBTywwQkFBMEI7OztZQUh0QyxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW254c1N3aXBlclRlbXBsYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIE54c1N3aXBlclRlbXBsYXRlRGlyZWN0aXZlIHsgfVxuIl19
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
export { NxsCarouselDialogComponent as
|
|
6
|
-
|
|
5
|
+
export { NxsCarouselDialogComponent as ɵb } from './lib/nxs-carousel/nxs-carousel-dialog.component';
|
|
6
|
+
export { NxsSwiperTemplateDirective as ɵa } from './lib/nxs-carousel/swiper-directives';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGFseXMtY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV4dGFseXMtY2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDbEcsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge054c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50IGFzIMm1Yn0gZnJvbSAnLi9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7TnhzU3dpcGVyVGVtcGxhdGVEaXJlY3RpdmUgYXMgybVhfSBmcm9tICcuL2xpYi9ueHMtY2Fyb3VzZWwvc3dpcGVyLWRpcmVjdGl2ZXMnOyJdfQ==
|