ng-easycommerce-v18 0.2.9 → 0.2.11
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/README.md +3 -1
- package/esm2022/lib/constants/api.constants.service.mjs +2 -11
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +146 -11
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +2 -2
- package/fesm2022/ng-easycommerce-v18.mjs +147 -21
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.d.ts +41 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,14 +47,8 @@ export class ApiConstantsService {
|
|
|
47
47
|
*/
|
|
48
48
|
CMS_URL = 'cms/';
|
|
49
49
|
constructor() {
|
|
50
|
-
console.log('🚀 ApiConstantsService inicializando...');
|
|
51
50
|
this._channel = this.environment.channel;
|
|
52
51
|
this.LOCALE = this.environment.locale;
|
|
53
|
-
console.log('🌍 Environment:', this.environment);
|
|
54
|
-
// Verificar si window.__env existe
|
|
55
|
-
if (typeof window !== 'undefined') {
|
|
56
|
-
console.log('🪟 window.__env:', window.__env);
|
|
57
|
-
}
|
|
58
52
|
}
|
|
59
53
|
/**
|
|
60
54
|
* URL del backend para realizar las peticiones
|
|
@@ -65,14 +59,11 @@ export class ApiConstantsService {
|
|
|
65
59
|
// Primero intenta leer de window.__env (configurado por Docker)
|
|
66
60
|
const windowEnv = window.__env;
|
|
67
61
|
if (windowEnv?.apiUrl) {
|
|
68
|
-
console.log('🐳 API_URL desde Docker:', windowEnv.apiUrl);
|
|
69
62
|
return windowEnv.apiUrl;
|
|
70
63
|
}
|
|
71
64
|
}
|
|
72
65
|
// Fallback al environment (para SSR y como backup)
|
|
73
|
-
|
|
74
|
-
console.log('📦 API_URL desde environment:', apiUrl);
|
|
75
|
-
return apiUrl;
|
|
66
|
+
return this.environment.apiUrl ?? '';
|
|
76
67
|
}
|
|
77
68
|
/**
|
|
78
69
|
* Retorna la url base
|
|
@@ -104,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
104
95
|
providedIn: 'root'
|
|
105
96
|
}]
|
|
106
97
|
}], ctorParameters: () => [] });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmNvbnN0YW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUd2RDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUN2QixhQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pFLFVBQVUsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFaEU7O09BRUc7SUFDSyxXQUFXLEdBQWdCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2pCLG1EQUFtRDtRQUNuRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25DLGdFQUFnRTtZQUNoRSxNQUFNLFNBQVMsR0FBSSxNQUFjLENBQUMsS0FBSyxDQUFDO1lBQ3hDLElBQUksU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDMUIsQ0FBQztRQUNGLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxRQUFRLENBQVM7SUFDekI7O09BRUc7SUFDSSxNQUFNLENBQVM7SUFFdEI7O09BRUc7SUFDYSxZQUFZLEdBQVcsV0FBVyxDQUFDO0lBQ25EOztPQUVHO0lBQ2EsT0FBTyxHQUFXLE1BQU0sQ0FBQztJQUV6QztRQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDakIsbURBQW1EO1FBQ25ELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkMsZ0VBQWdFO1lBQ2hFLE1BQU0sU0FBUyxHQUFJLE1BQWMsQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN6QixDQUFDO1FBQ0YsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksVUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsSUFBWSxJQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQztJQUVwRCxTQUFTLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYTtJQUNJLFVBQVUsR0FBVSxRQUFRLENBQUM7SUFDN0IsV0FBVyxHQUFVLFNBQVMsQ0FBQzt3R0F4RnBDLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRU5WSVJPTk1FTlRfVE9LRU4gfSBmcm9tICcuLi9wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLmNvbnN0YW50cy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBxdWUgcHJvdmVlIGRlIGRhdG9zIHF1ZSBlc3RhbiByZWxhY2lvbmFkbyBjb24gbGFzIHBldGljaW9uZXMgYSBsYSBBUElcclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgQXBpQ29uc3RhbnRzU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpQ29uc3RhbnRzU2VydmljZSB7XHJcblx0cHJpdmF0ZSBfbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29udGllbmUgbG9zIGRhdG9zIHByb3Zpc3RvIHBvciBlbCBmcm9udGVuZCBlbiBlbCBhcmNoaXZvIGVudmlyb25tZW50LnRzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlRfVE9LRU4pO1xyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIENhbmFsIGFjdHVhbCBkZWwgZnJvbnRlbmRcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IENIQU5ORUwoKTogc3RyaW5nIHtcclxuXHRcdC8vIFZlcmlmaWNhciBzaSBlc3RhbW9zIGVuIGVsIG5hdmVnYWRvciAobm8gZW4gU1NSKVxyXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdC8vIFByaW1lcm8gaW50ZW50YSBsZWVyIGRlIHdpbmRvdy5fX2VudiAoY29uZmlndXJhZG8gcG9yIERvY2tlcilcclxuXHRcdFx0Y29uc3Qgd2luZG93RW52ID0gKHdpbmRvdyBhcyBhbnkpLl9fZW52O1xyXG5cdFx0XHRpZiAod2luZG93RW52Py5jaGFubmVsKSB7XHJcblx0XHRcdFx0cmV0dXJuIHdpbmRvd0Vudi5jaGFubmVsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIEZhbGxiYWNrIGFsIGVudmlyb25tZW50XHJcblx0XHRyZXR1cm4gdGhpcy5fY2hhbm5lbDtcclxuXHR9XHJcblx0XHJcblx0cHVibGljIHNldCBDSEFOTkVMKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX2NoYW5uZWwgPSB2YWx1ZTtcclxuXHR9XHJcblx0XHJcblx0cHJpdmF0ZSBfY2hhbm5lbDogc3RyaW5nO1xyXG5cdC8qKlxyXG5cdCAqIExvY2FsZSBhY3R1YWwgZGVsIGZyb250ZW5kXHJcblx0ICovXHJcblx0cHVibGljIExPQ0FMRTogc3RyaW5nO1xyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIFVSTCBwYXJhIGxhcyBwZXRpY2lvbmVzIGEgc2hvcC1hcGlcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVhZG9ubHkgU0hPUF9BUElfVVJMOiBzdHJpbmcgPSAnc2hvcC1hcGkvJztcclxuXHQvKipcclxuXHQgKiBVUkwgcGFyYSBsYXMgcGV0aWNpb25lcyBhIGNtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWFkb25seSBDTVNfVVJMOiBzdHJpbmcgPSAnY21zLyc7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy5fY2hhbm5lbCA9IHRoaXMuZW52aXJvbm1lbnQuY2hhbm5lbDtcclxuXHRcdHRoaXMuTE9DQUxFID0gdGhpcy5lbnZpcm9ubWVudC5sb2NhbGU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVUkwgZGVsIGJhY2tlbmQgcGFyYSByZWFsaXphciBsYXMgcGV0aWNpb25lc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgQVBJX1VSTCgpOiBzdHJpbmcge1xyXG5cdFx0Ly8gVmVyaWZpY2FyIHNpIGVzdGFtb3MgZW4gZWwgbmF2ZWdhZG9yIChubyBlbiBTU1IpXHJcblx0XHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0Ly8gUHJpbWVybyBpbnRlbnRhIGxlZXIgZGUgd2luZG93Ll9fZW52IChjb25maWd1cmFkbyBwb3IgRG9ja2VyKVxyXG5cdFx0XHRjb25zdCB3aW5kb3dFbnYgPSAod2luZG93IGFzIGFueSkuX19lbnY7XHJcblx0XHRcdGlmICh3aW5kb3dFbnY/LmFwaVVybCkge1xyXG5cdFx0XHRcdHJldHVybiB3aW5kb3dFbnYuYXBpVXJsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIEZhbGxiYWNrIGFsIGVudmlyb25tZW50IChwYXJhIFNTUiB5IGNvbW8gYmFja3VwKVxyXG5cdFx0cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQuYXBpVXJsID8/ICcnO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGxhIHVybCBiYXNlXHJcblx0ICogQHJldHVybnMge3N0cmluZ31cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VXJsQmFzZSgpOiBzdHJpbmcgeyBcclxuXHRcdHJldHVybiB0aGlzLkFQSV9VUkw7XHJcblx0fSBcclxuXHQvKipcclxuXHQgKiBDYW1iaWEgZWwgY2FuYWwgYWN0dWFsXHJcblx0ICogQHBhcmFtIGNvZGVcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0Q2hhbm5lbChjb2RlOiBzdHJpbmcpOnZvaWR7IHRoaXMuQ0hBTk5FTCA9IGNvZGU7fSBcclxuXHJcblx0cHVibGljIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6dm9pZHtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTE9DQUxFX0tFWSwgbG9jYWxlKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZS51c2UobG9jYWxlLnNwbGl0KCdfJylbMF0pXHJcblx0XHR0aGlzLkxPQ0FMRSA9IGxvY2FsZTtcclxuXHR9XHJcblxyXG5cdC8vU3RvcmFnZSBrZXlcclxuXHRwcml2YXRlIHJlYWRvbmx5IExPQ0FMRV9LRVk6c3RyaW5nID0gJ0xPQ0FMRSc7XHJcblx0cHJpdmF0ZSByZWFkb25seSBDSEFOTkVMX0tFWTpzdHJpbmcgPSAnQ0hBTk5FTCc7XHJcbn1cclxuIl19
|
package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs
CHANGED
|
@@ -22,12 +22,26 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
22
22
|
* Datos del bloque que contiene a los banners
|
|
23
23
|
*/
|
|
24
24
|
meta;
|
|
25
|
+
// =================== PERSONALIZACIÓN DE NAVEGACIÓN ===================
|
|
26
|
+
/**
|
|
27
|
+
* Personalización de las flechas de navegación
|
|
28
|
+
* Por defecto usa símbolos de texto, pero se pueden especificar imágenes
|
|
29
|
+
*/
|
|
30
|
+
prevArrowImage; // undefined = usa símbolo de texto
|
|
31
|
+
nextArrowImage; // undefined = usa símbolo de texto
|
|
32
|
+
prevArrowText = '<';
|
|
33
|
+
nextArrowText = '>';
|
|
34
|
+
/**
|
|
35
|
+
* Opción para habilitar/deshabilitar la navegación personalizada
|
|
36
|
+
*/
|
|
37
|
+
enableCustomNavigation = true;
|
|
38
|
+
// ====================================================================
|
|
25
39
|
/**
|
|
26
40
|
* Servicio para Analytics
|
|
27
41
|
*/
|
|
28
42
|
analyticsService = inject(AnalyticsService);
|
|
29
43
|
/**
|
|
30
|
-
* Signal
|
|
44
|
+
* Signal utilizado para guardar el contenedor del carrusel
|
|
31
45
|
*/
|
|
32
46
|
swiperElement = signal(null);
|
|
33
47
|
/**
|
|
@@ -36,19 +50,21 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
36
50
|
* @returns
|
|
37
51
|
*/
|
|
38
52
|
getImage = (banner) => this.getBannerImage(banner);
|
|
53
|
+
document;
|
|
54
|
+
platformId = inject(PLATFORM_ID);
|
|
39
55
|
/**
|
|
40
56
|
* Se mappea los banners para sumarle el objeto de translations y que
|
|
41
57
|
* sean mas amigables para su uso.
|
|
42
58
|
*/
|
|
43
59
|
ngOnInit() {
|
|
44
|
-
this.banners = this.banners.map((banner) => {
|
|
60
|
+
this.banners = this.banners.map((banner) => {
|
|
61
|
+
return { ...banner, ...banner.translations[this.apiConsts.LOCALE] };
|
|
62
|
+
});
|
|
45
63
|
}
|
|
46
|
-
document;
|
|
47
|
-
platformId = inject(PLATFORM_ID);
|
|
48
64
|
/**
|
|
49
|
-
* Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
|
|
50
|
-
* para el carrusel
|
|
51
|
-
* en el
|
|
65
|
+
* Ejecuta el método `afterNextRender` para cargar las configuraciones necesarias
|
|
66
|
+
* para el carrusel de banners. Esto debe ser así debido a que ya debe estar presente
|
|
67
|
+
* en el DOM el elemento `<swiper-container>` para poder configurarlo.
|
|
52
68
|
*/
|
|
53
69
|
constructor() {
|
|
54
70
|
super();
|
|
@@ -56,21 +72,130 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
56
72
|
this.document = document;
|
|
57
73
|
}
|
|
58
74
|
afterNextRender(() => {
|
|
59
|
-
|
|
75
|
+
this.initializeSwiperWithNavigation();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Inicializa el Swiper con navegación personalizada
|
|
80
|
+
*/
|
|
81
|
+
initializeSwiperWithNavigation() {
|
|
82
|
+
const swiperElemConstructor = this.document?.querySelector('#' + this.meta?.code);
|
|
83
|
+
if (swiperElemConstructor) {
|
|
84
|
+
// Configurar el Swiper con las opciones base
|
|
60
85
|
Object.assign(swiperElemConstructor, this.swiperOptions());
|
|
61
86
|
this.swiperElement.set(swiperElemConstructor);
|
|
62
87
|
this.swiperElement()?.initialize();
|
|
88
|
+
// Configurar navegación personalizada si está habilitada
|
|
89
|
+
if (this.enableCustomNavigation) {
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
this.setupCustomNavigation();
|
|
92
|
+
}, 200);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Configura la navegación personalizada del Swiper para banners
|
|
98
|
+
*/
|
|
99
|
+
setupCustomNavigation() {
|
|
100
|
+
const prevButton = this.document?.getElementById(`${this.meta?.code}-prev`);
|
|
101
|
+
const nextButton = this.document?.getElementById(`${this.meta?.code}-next`);
|
|
102
|
+
const swiperElement = this.document?.getElementById(this.meta?.code);
|
|
103
|
+
if (prevButton && nextButton && swiperElement) {
|
|
104
|
+
console.log('Configurando navegación personalizada para banners:', this.meta?.code);
|
|
105
|
+
// Actualizar configuración del Swiper existente
|
|
106
|
+
this.updateSwiperForBanners(swiperElement);
|
|
107
|
+
// Configurar los event listeners para los botones
|
|
108
|
+
this.setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement);
|
|
109
|
+
console.log('Event listeners configurados para navegación de banners');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log('No se pudieron encontrar los elementos de navegación para banners:', {
|
|
113
|
+
prevButton: !!prevButton,
|
|
114
|
+
nextButton: !!nextButton,
|
|
115
|
+
swiperElement: !!swiperElement
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Actualiza la configuración del Swiper específicamente para banners
|
|
121
|
+
*/
|
|
122
|
+
updateSwiperForBanners(swiperElement) {
|
|
123
|
+
if (swiperElement.swiper) {
|
|
124
|
+
console.log('Actualizando configuración de Swiper para banners');
|
|
125
|
+
// Configuración específica para banners
|
|
126
|
+
swiperElement.swiper.params.slidesPerGroup = 1;
|
|
127
|
+
swiperElement.swiper.allowSlideNext = true;
|
|
128
|
+
swiperElement.swiper.allowSlidePrev = true;
|
|
129
|
+
// Actualizar también los breakpoints si existen
|
|
130
|
+
if (swiperElement.swiper.params.breakpoints) {
|
|
131
|
+
Object.keys(swiperElement.swiper.params.breakpoints).forEach(key => {
|
|
132
|
+
swiperElement.swiper.params.breakpoints[key].slidesPerGroup = 1;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
swiperElement.swiper.update();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Configura los event listeners para los botones de navegación de banners
|
|
140
|
+
*/
|
|
141
|
+
setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement) {
|
|
142
|
+
// Remover event listeners existentes para evitar duplicados
|
|
143
|
+
const prevClone = prevButton.cloneNode(true);
|
|
144
|
+
const nextClone = nextButton.cloneNode(true);
|
|
145
|
+
prevButton.parentNode?.replaceChild(prevClone, prevButton);
|
|
146
|
+
nextButton.parentNode?.replaceChild(nextClone, nextButton);
|
|
147
|
+
// Agregar nuevos event listeners
|
|
148
|
+
prevClone.addEventListener('click', (e) => {
|
|
149
|
+
e.preventDefault();
|
|
150
|
+
e.stopPropagation();
|
|
151
|
+
console.log('Click en botón anterior (banners)');
|
|
152
|
+
if (swiperElement.swiper) {
|
|
153
|
+
swiperElement.swiper.slidePrev();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
nextClone.addEventListener('click', (e) => {
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
e.stopPropagation();
|
|
159
|
+
console.log('Click en botón siguiente (banners)');
|
|
160
|
+
if (swiperElement.swiper) {
|
|
161
|
+
swiperElement.swiper.slideNext();
|
|
162
|
+
}
|
|
63
163
|
});
|
|
64
164
|
}
|
|
65
165
|
/**
|
|
66
|
-
* Aplica el evento `select_promotion` junto con el banner que
|
|
166
|
+
* Aplica el evento `select_promotion` junto con el banner que interactúa.
|
|
67
167
|
* @param banner
|
|
68
168
|
*/
|
|
69
169
|
selectPromotion(banner) {
|
|
70
170
|
this.analyticsService.callEvent('select_promotion', banner);
|
|
71
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Obtiene la configuración específica del Swiper para banners
|
|
174
|
+
* Sobrescribe la configuración base si es necesario
|
|
175
|
+
*/
|
|
176
|
+
getBannerSwiperConfiguration() {
|
|
177
|
+
return {
|
|
178
|
+
slidesPerView: 1,
|
|
179
|
+
spaceBetween: 0,
|
|
180
|
+
slidesPerGroup: 1,
|
|
181
|
+
navigation: false, // Deshabilitamos la navegación por defecto
|
|
182
|
+
pagination: {
|
|
183
|
+
el: '.swiper-pagination',
|
|
184
|
+
clickable: true,
|
|
185
|
+
},
|
|
186
|
+
loop: true,
|
|
187
|
+
autoplay: {
|
|
188
|
+
delay: 5000,
|
|
189
|
+
disableOnInteraction: false,
|
|
190
|
+
},
|
|
191
|
+
effect: 'fade',
|
|
192
|
+
fadeEffect: {
|
|
193
|
+
crossFade: true
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
72
197
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta", prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", enableCustomNavigation: "enableCustomNavigation" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
74
199
|
}
|
|
75
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, decorators: [{
|
|
76
201
|
type: Component,
|
|
@@ -83,5 +208,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
83
208
|
}], meta: [{
|
|
84
209
|
type: Input,
|
|
85
210
|
args: [{ required: true }]
|
|
211
|
+
}], prevArrowImage: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], nextArrowImage: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], prevArrowText: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], nextArrowText: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], enableCustomNavigation: [{
|
|
220
|
+
type: Input
|
|
86
221
|
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFDWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDL0Q7O09BRUc7SUFHQSxPQUFPLENBQU07SUFDaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBQ3JDOztPQUVHO0lBQ0ssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDbkQ7O09BRUc7SUFDSCxhQUFhLEdBQUcsTUFBTSxDQUF5QixJQUFJLENBQUMsQ0FBQTtJQUNwRDs7OztPQUlHO0lBQ2EsUUFBUSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFOzs7T0FHRztJQUNILFFBQVE7UUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFILENBQUM7SUFDTyxRQUFRLENBQVk7SUFDcEIsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUU3Qzs7OztPQUlHO0lBQ0g7UUFDQyxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDekIsQ0FBQztRQUNELGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNqRixNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFzQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO1lBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHFCQUF3QyxDQUFDLENBQUE7WUFDaEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxNQUFXO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDNUQsQ0FBQzt3R0ExRFcsMEJBQTBCOzRGQUExQiwwQkFBMEIseUpDdkJ2QyxzM05BOEdDLHlERDVGVSxZQUFZOzs0RkFLViwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0MsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsV0FDMUIsQ0FBQyxzQkFBc0IsQ0FBQzt3REFVOUIsT0FBTztzQkFGVCxLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUkwQixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcGFyYSBtYW5lamFyIGxvcyBiYW5uZXJzIGRlIHRpcG8gZnVsbFxyXG4gKiBAZXh0ZW5kcyB7QmxvY2tFY0NvbXBvbmVudH1cclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGNsYXNzIEJsb2NrQmFubmVyRnVsbEVjQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJMaW5rXSxcclxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudCBleHRlbmRzIEJsb2NrRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdC8qKlxyXG5cdCAqIEJhbm5lcnMgdGlwbyBmdWxsXHJcblx0ICovXHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlXHJcblx0fSkgYmFubmVyczogYW55O1xyXG5cdC8qKlxyXG5cdCAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuXHQgKi9cclxuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtZXRhOiBhbnk7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gcGFyYSBBbmFseXRpY3NcclxuXHQgKi9cclxuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSlcclxuXHQvKipcclxuXHQgKiBTaWduYWwgdXRsaXphZG8gcGFyYSBndWFyZGEgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuXHQgKi9cclxuXHRzd2lwZXJFbGVtZW50ID0gc2lnbmFsPFN3aXBlckNvbnRhaW5lciB8IG51bGw+KG51bGwpXHJcblx0LyoqXHJcblx0ICogTcOpdG9kbyBvcmlnaW5hbCBlbjoge0BsaW5rIEJsb2NrRWNDb21wb25lbnR9XHJcblx0ICogQHBhcmFtIGJhbm5lciBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0SW1hZ2UgPSAoYmFubmVyOiBhbnkpID0+IHRoaXMuZ2V0QmFubmVySW1hZ2UoYmFubmVyKTtcclxuXHQvKipcclxuXHQgKiBTZSBtYXBwZWEgbG9zIGJhbm5lcnMgcGFyYSBzdW1hcmxlIGVsIG9iamV0byBkZSB0cmFuc2xhdGlvbnMgeSBxdWVcclxuXHQgKiBzZWFuIG1hcyBhbWlnYWJsZXMgcGFyYSBzdSB1c28uXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyByZXR1cm4geyAuLi5iYW5uZXIsIC4uLmJhbm5lci50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdHMuTE9DQUxFXSB9IH0pXHJcblx0fVxyXG5cdHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuXHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBtw6l0b2RvIGBhZnRlck5leHRSZW5kZXJgcGFyYSBjYXJnYXIgbGFzIGNvbmZpZ3VyYWNpb25lcyBuZWNlc2FyaWFzIFxyXG5cdCAqIHBhcmEgZWwgY2FycnVzZWwgZGVsIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXNpIGRlYmlkbyBhIHF1ZSB5YSBkZWJlIGVzdGFyIHByZXNlbnRlXHJcblx0ICogZW4gZWwgRG9tIGVsIGVsZW1lbnQgYDxzd2lwZXItY29udGFpbmVyPmAgcGFyYSBwb2RlciBjb25maWd1cmFybG8uXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRzdXBlcigpXHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnRcclxuXHRcdH1cclxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XHJcblx0XHRcdGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKVxyXG5cdFx0XHRPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciEsIHRoaXMuc3dpcGVyT3B0aW9ucygpKVxyXG5cdFx0XHR0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpXHJcblx0XHRcdHRoaXMuc3dpcGVyRWxlbWVudCgpPy5pbml0aWFsaXplKCk7XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdHVhLlxyXG5cdCAqIEBwYXJhbSBiYW5uZXIgXHJcblx0ICovXHJcblx0c2VsZWN0UHJvbW90aW9uKGJhbm5lcjogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzZWxlY3RfcHJvbW90aW9uJywgYmFubmVyKVxyXG5cdH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFFWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDNUQ7O09BRUc7SUFHQSxPQUFPLENBQU07SUFFaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBRXJDLHdFQUF3RTtJQUN4RTs7O09BR0c7SUFDTSxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7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dGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHBhcmEgbWFuZWphciBsb3MgYmFubmVycyBkZSB0aXBvIGZ1bGxcclxuICogQGV4dGVuZHMge0Jsb2NrRWNDb21wb25lbnR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGlua10sXHJcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogQmFubmVycyB0aXBvIGZ1bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KHtcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSkgYmFubmVyczogYW55O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWV0YTogYW55O1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUEVSU09OQUxJWkFDScOTTiBERSBOQVZFR0FDScOTTiA9PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKipcclxuICAgICAqIFBlcnNvbmFsaXphY2nDs24gZGUgbGFzIGZsZWNoYXMgZGUgbmF2ZWdhY2nDs25cclxuICAgICAqIFBvciBkZWZlY3RvIHVzYSBzw61tYm9sb3MgZGUgdGV4dG8sIHBlcm8gc2UgcHVlZGVuIGVzcGVjaWZpY2FyIGltw6FnZW5lc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dUZXh0OiBzdHJpbmcgPSAnPCc7XHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dUZXh0OiBzdHJpbmcgPSAnPic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGNpw7NuIHBhcmEgaGFiaWxpdGFyL2Rlc2hhYmlsaXRhciBsYSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZUN1c3RvbU5hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBwYXJhIEFuYWx5dGljc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFsIHV0aWxpemFkbyBwYXJhIGd1YXJkYXIgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuICAgICAqL1xyXG4gICAgc3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNw6l0b2RvIG9yaWdpbmFsIGVuOiB7QGxpbmsgQmxvY2tFY0NvbXBvbmVudH1cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGdldEltYWdlID0gKGJhbm5lcjogYW55KSA9PiB0aGlzLmdldEJhbm5lckltYWdlKGJhbm5lcik7XHJcbiAgICBcclxuICAgIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlIG1hcHBlYSBsb3MgYmFubmVycyBwYXJhIHN1bWFybGUgZWwgb2JqZXRvIGRlIHRyYW5zbGF0aW9ucyB5IHF1ZVxyXG4gICAgICogc2VhbiBtYXMgYW1pZ2FibGVzIHBhcmEgc3UgdXNvLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyBcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmFubmVyLCAuLi5iYW5uZXIudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RzLkxPQ0FMRV0gfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgbcOpdG9kbyBgYWZ0ZXJOZXh0UmVuZGVyYCBwYXJhIGNhcmdhciBsYXMgY29uZmlndXJhY2lvbmVzIG5lY2VzYXJpYXMgXHJcbiAgICAgKiBwYXJhIGVsIGNhcnJ1c2VsIGRlIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXPDrSBkZWJpZG8gYSBxdWUgeWEgZGViZSBlc3RhciBwcmVzZW50ZVxyXG4gICAgICogZW4gZWwgRE9NIGVsIGVsZW1lbnRvIGA8c3dpcGVyLWNvbnRhaW5lcj5gIHBhcmEgcG9kZXIgY29uZmlndXJhcmxvLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3dpcGVyV2l0aE5hdmlnYXRpb24oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU3dpcGVyIGNvbiBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN3aXBlcldpdGhOYXZpZ2F0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbUNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgIC8vIENvbmZpZ3VyYXIgZWwgU3dpcGVyIGNvbiBsYXMgb3BjaW9uZXMgYmFzZVxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciwgdGhpcy5zd2lwZXJPcHRpb25zKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQoKT8uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhIHNpIGVzdMOhIGhhYmlsaXRhZGFcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlQ3VzdG9tTmF2aWdhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cEN1c3RvbU5hdmlnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbGEgbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldHVwQ3VzdG9tTmF2aWdhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmV2QnV0dG9uID0gdGhpcy5kb2N1bWVudD8uZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1wcmV2YCk7XHJcbiAgICAgICAgY29uc3QgbmV4dEJ1dHRvbiA9IHRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKGAke3RoaXMubWV0YT8uY29kZX0tbmV4dGApO1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1lbnQgPSB0aGlzLmRvY3VtZW50Py5nZXRFbGVtZW50QnlJZCh0aGlzLm1ldGE/LmNvZGUpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25maWd1cmFuZG8gbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBwYXJhIGJhbm5lcnM6JywgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEFjdHVhbGl6YXIgY29uZmlndXJhY2nDs24gZGVsIFN3aXBlciBleGlzdGVudGVcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTd2lwZXJGb3JCYW5uZXJzKHN3aXBlckVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBsb3MgZXZlbnQgbGlzdGVuZXJzIHBhcmEgbG9zIGJvdG9uZXNcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uLCBuZXh0QnV0dG9uLCBzd2lwZXJFbGVtZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFdmVudCBsaXN0ZW5lcnMgY29uZmlndXJhZG9zIHBhcmEgbmF2ZWdhY2nDs24gZGUgYmFubmVycycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBzZSBwdWRpZXJvbiBlbmNvbnRyYXIgbG9zIGVsZW1lbnRvcyBkZSBuYXZlZ2FjacOzbiBwYXJhIGJhbm5lcnM6Jywge1xyXG4gICAgICAgICAgICAgICAgcHJldkJ1dHRvbjogISFwcmV2QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgbmV4dEJ1dHRvbjogISFuZXh0QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgc3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdHVhbGl6YSBsYSBjb25maWd1cmFjacOzbiBkZWwgU3dpcGVyIGVzcGVjw61maWNhbWVudGUgcGFyYSBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlU3dpcGVyRm9yQmFubmVycyhzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgcGFyYSBiYW5uZXJzJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBwYXJhIGJhbm5lcnNcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXHJcbiAgICAgICAgICAgIGlmIChzd2lwZXJFbGVtZW50LnN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuIGRlIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZW1vdmVyIGV2ZW50IGxpc3RlbmVycyBleGlzdGVudGVzIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcclxuICAgICAgICBjb25zdCBwcmV2Q2xvbmUgPSBwcmV2QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBjb25zdCBuZXh0Q2xvbmUgPSBuZXh0QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBwcmV2QnV0dG9uLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChwcmV2Q2xvbmUsIHByZXZCdXR0b24pO1xyXG4gICAgICAgIG5leHRCdXR0b24ucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKG5leHRDbG9uZSwgbmV4dEJ1dHRvbik7XHJcblxyXG4gICAgICAgIC8vIEFncmVnYXIgbnVldm9zIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgICAgIHByZXZDbG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NsaWNrIGVuIGJvdMOzbiBhbnRlcmlvciAoYmFubmVycyknKTtcclxuICAgICAgICAgICAgaWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXh0Q2xvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDbGljayBlbiBib3TDs24gc2lndWllbnRlIChiYW5uZXJzKScpO1xyXG4gICAgICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdMO6YS5cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdFByb21vdGlvbihiYW5uZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NlbGVjdF9wcm9tb3Rpb24nLCBiYW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICogU29icmVzY3JpYmUgbGEgY29uZmlndXJhY2nDs24gYmFzZSBzaSBlcyBuZWNlc2FyaW9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRCYW5uZXJTd2lwZXJDb25maWd1cmF0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsXHJcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCxcclxuICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBlbDogJy5zd2lwZXItcGFnaW5hdGlvbicsXHJcbiAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9wbGF5OiB7XHJcbiAgICAgICAgICAgICAgICBkZWxheTogNTAwMCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZWZmZWN0OiAnZmFkZScsXHJcbiAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHtcclxuICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
|
|
@@ -70,7 +70,7 @@ export class BlocksEcComponent {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta", "prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "enableCustomNavigation"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
|
|
74
74
|
}
|
|
75
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, decorators: [{
|
|
76
76
|
type: Component,
|
|
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
96
96
|
}], blockFilters: [{
|
|
97
97
|
type: Input
|
|
98
98
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9ja3MtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUN0Rzs7Ozs7R0FLRztBQWlCSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssY0FBYyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQzs7O09BR0c7SUFDSyxhQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQ7O09BRUc7SUFDSSxPQUFPLENBQW1DO0lBQ2pEOztPQUVHO0lBQ0ssV0FBVyxHQUFrQixJQUFJLENBQUM7SUFDMUM7OztPQUdHO0lBQ00sU0FBUyxDQUFvQjtJQUN0Qzs7T0FFRztJQUNNLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDdkM7O09BRUc7SUFDSCxJQUVPLE9BQU8sQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNRLFlBQVksR0FBb0IsSUFBSSxDQUFDO0lBQzlDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsS0FBVyxDQUFDO0lBQ3BCOzs7O09BSUc7SUFDSCxjQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUVoSCxZQUFZLENBQUMsS0FBVSxJQUFhLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFFckYsU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUVoRzs7S0FFSTtJQUNJLFVBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNGLENBQUM7d0dBMURXLGlCQUFpQjs0RkFBakIsaUJBQWlCLDZMQ2xDOUIsMHVEQW9DQyxxRERkQyxTQUFTLDhDQUVULDBCQUEwQixrTUFDMUIseUJBQXlCLGlHQUN6QixvQkFBb0Isd0ZBQ3BCLHdCQUF3QixvTEFDeEIsMEJBQTBCLHFIQUMxQiwyQkFBMkI7OzRGQUtoQixpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1IsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7cUJBQzNCO3dEQTBCUSxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUMsT0FBTztzQkFGYixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUlRLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCbG9ja3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSUJsb2NrIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEJsb2NrQmFubmVyRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stYmFubmVyLWJveC1lYy9ibG9jay1iYW5uZXItYm94LWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja0h0bWxFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLWh0bWwtZWMvYmxvY2staHRtbC1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJsb2NrUHJvZHVjdHNFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLXByb2R1Y3RzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLW5ld3NsZXR0ZXItZWMvYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmxvY2tGb3JtQ29udGFjdEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stZm9ybS1jb250YWN0LWVjL2Jsb2NrLWZvcm0tY29udGFjdC1lYy5jb21wb25lbnRcIjtcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIGVzIHV0aWxpemFkbyBwYXJhIG1hbmVqYXIgbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG4gKiBkZSBibG9xdWVzIHkgZGlzdHJpYnVpcmxvcyBwb3IgbGEgYXBsaWNhY2nDs24uXHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja3NFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtYmxvY2tzLWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEFzeW5jUGlwZSxcclxuXHRcdEpzb25QaXBlLFxyXG5cdFx0QmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50LFxyXG5cdFx0QmxvY2tIdG1sRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja1Byb2R1Y3RzRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCxcclxuXHRcdEJsb2NrRm9ybUNvbnRhY3RFY0NvbXBvbmVudFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJsb2Nrc0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBCbG9xdWVzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYmxvY2tzU2VydmljZSA9IGluamVjdChCbG9ja3NTZXJ2aWNlKTtcclxuXHQvKipcdHByaXZhdGUgX2Jsb2Nrc1NlcnZpY2UgPSBpbmplY3QoQmxvY2tzU2VydmljZSk7XHJcblxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdC8qKlxyXG5cdCAqIE9ic2VydmFibGUgZGUgYmxvcXVlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBibG9ja3MkOiBPYnNlcnZhYmxlPElCbG9ja1tdPiB8IHVuZGVmaW5lZDtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gcXVlIGFsYmVyZ2EgYSBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9zdHJzZWN0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHQvKipcclxuXHQgKiBDb2xlY2Npw7NuIGRlIFRlbXBsYXRlcyBwYXJhIHJlZW1wbGF6YXIgZW4gbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG5cdCAqIGRlIGJsb3F1ZSBwb3IgYmxvcXVlcyBsb2NhbGVzIGdlbmVyYWRvcyBlbiBlbCBmcm9udGVuZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKSB0ZW1wbGF0ZXMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIEluZGljYWRvciBwYXJhIGN1YW5kbyBzZSBlc3RlbiBjYXJnYW5kbyBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKSBzaG93X2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gZGVsIGJsb3F1ZS4gXHJcblx0ICovXHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlLFxyXG5cdH0pIHNldCBzZWN0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcblx0XHR0aGlzLl9zdHJzZWN0aW9uID0gdmFsdWU7XHJcblx0XHR0aGlzLmxvYWRCbG9ja3MoKTtcclxuXHR9XHJcblx0QElucHV0KCkgYmxvY2tGaWx0ZXJzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBlbCBjb250ZW5pZG8gaHRtbCBkZSB1biBibG9xdWUsIGVzdGUgbcOpdG9kbyBlcyB1c2FkbyBjdWFuZG8gZWwgYmxvcXVlIGVzIGRlIHRpcG8gKipIVE1MKipcclxuXHQgKiBAcGFyYW0gYmxvY2sgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0SFRNTENvbnRlbnQgPSAoYmxvY2s6IElCbG9jaykgPT4gYmxvY2sudHJhbnNsYXRpb25zICYmIGJsb2NrLnRyYW5zbGF0aW9uc1t0aGlzLl9hcGlDb25zdGFudHMuTE9DQUxFXS5jb250ZW50O1xyXG5cclxuXHRpc05ld3NsZXR0ZXIoYmxvY2s6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gYmxvY2suY29udGFjdEZvcm0uY29kZS5pbmNsdWRlcygnbmV3cycpIH07XHJcblxyXG5cdHNob3dCbG9jayA9IChibG9jazogSUJsb2NrKSA9PiB0aGlzLmJsb2NrRmlsdGVycyA/IHRoaXMuYmxvY2tGaWx0ZXJzLmluY2x1ZGVzKGJsb2NrLmNvZGUpIDogdHJ1ZVxyXG5cclxuXHQvKipcclxuICAgKiBDYXJnYSBsb3MgYmxvcXVlcyBkZSBsYSBzZWNjacOzbiBhY3R1YWwuXHJcbiAgICovXHJcblx0cHJpdmF0ZSBsb2FkQmxvY2tzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX3N0cnNlY3Rpb24pIHtcclxuXHRcdFx0dGhpcy5ibG9ja3MkID0gdGhpcy5fYmxvY2tzU2VydmljZS5nZXRCbG9ja3ModGhpcy5fc3Ryc2VjdGlvbik7XHJcblx0XHR9XHJcblx0fVxyXG59XHRcclxuIiwiQGlmKGJsb2NrcyQgfCBhc3luYzsgYXMgYmxvY2tzKXtcclxuICAgIEBpZihibG9ja3MubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBweC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGJsb2NrIG9mIGJsb2NrczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYmxvY2suY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdiYW5uZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoKGJsb2NrLmRlc2lnbil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdmdWxsJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWJhbm5lci1mdWxsLWVjIFtiYW5uZXJzXT1cImJsb2NrLmJhbm5lcnNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYm94ZXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYmxvY2stYmFubmVyLWJveC1lYyBbYmFubmVyc109XCJibG9jay5iYW5uZXJzXCIgW21ldGFdPVwiYmxvY2tcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaHRtbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihzaG93QmxvY2soYmxvY2spKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWh0bWwtZWMgW2h0bWxfY29udGVudF09XCJnZXRIVE1MQ29udGVudChibG9jaylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgncHJvZHVjdHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLXByb2R1Y3RzLWVjIFtwcm9kdWN0c109XCJibG9jay5wcm9kdWN0cz8uaXRlbXNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjb250YWN0X2Zvcm0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXNOZXdzbGV0dGVyKGJsb2NrKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1ibG9jay1uZXdzbGV0dGVyLWVjIFtibG9ja109XCJibG9jay5jb250YWN0Rm9ybVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWZvcm0tY29udGFjdC1lYyBbYmxvY2tdPVwiYmxvY2suY29udGFjdEZvcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxufSJdfQ==
|