ctt-puro 0.36.0 → 0.36.1

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.
@@ -19,11 +19,11 @@ export class PuroInfoGalleryComponent {
19
19
  }
20
20
  }
21
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroInfoGalleryComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroInfoGalleryComponent, isStandalone: true, selector: "lib-puro-info-gallery", inputs: { title: "title", description: "description", moreinfo: "moreinfo", buttons: "buttons", images: "images", advantages: "advantages" }, viewQueries: [{ propertyName: "moreContent", first: true, predicate: ["moreContent"], descendants: true }], ngImport: i0, template: "<section class=\"suites\">\n @if (title) {\n <h2 class=\"suites__heading\">{{ title }}</h2>\n }\n <div\n class=\"js-active-slider suites__slider relative\"\n [puroSlider]=\"advantages\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suites-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"3\"\n data-slides_mobile=\"3\"\n data-slides_mobile_small=\"3\"\n data-slides_mobile_xsmall=\"2\"\n >\n @if (advantages?.length) {\n <div class=\"js-suites-slider\">\n @for (adv of advantages; track $index) {\n <div>\n <div class=\"suites__service\">\n @if (adv.icon) {\n <i class=\"icon--svg\" [ngClass]=\"adv.icon\"></i>\n }\n @if (adv.title) {\n <span>{{ adv.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n <div class=\"js-slider-arrows\"></div>\n </div>\n <div class=\"suites__paragraph\">\n @if (description) {\n <p>{{ description }}</p>\n }\n @if (moreinfo) {\n <p #moreContent class=\"more-content\" [class.active]=\"showMoreInfo\">\n {{ moreinfo }}\n </p>\n }\n </div>\n @if (buttons?.length) {\n <div class=\"btn__group\">\n @for (btn of buttons; track $index) {\n @if (!btn.url) {\n @if (btn.label && moreinfo) {\n <button\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n class=\"btn\"\n (click)=\"toggleMoreInfo()\"\n [attr.aria-label]=\"btn.label\"\n >\n <span class=\"btn__moreLess--more\"\n >{{ btn.label }} +</span\n >\n <span class=\"btn__moreLess--less\"\n >{{ btn.label }} -</span\n >\n </button>\n }\n } @else {\n @if (btn.label) {\n <a\n [href]=\"btn.url\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n [attr.aria-label]=\"btn.label\"\n ><span>{{ btn.label }}</span></a\n >\n }\n }\n }\n </div>\n }\n @if (images?.length) {\n <div\n class=\"suites__gallery relative js-active-slider\"\n [puroSlider]=\"images\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suitesGallery-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"4\"\n >\n <div class=\"suitesGallery__grid\">\n <div class=\"suitesGallery__big js-content-slider\">\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n <div\n class=\"suitesGallery__small js-suitesGallery-slider mobile\"\n >\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n }\n</section>\n", styles: ["section .more-content{display:none}section .btn__moreLess{position:relative}section .btn__moreLess--more,section .btn__moreLess--less{position:absolute;transition:opacity .5s;left:50%;top:50%;transform:translate(-50%,-50%)}section .btn__moreLess--more{opacity:1}section .btn__moreLess--less{opacity:0}section.moreLess--active .btn__moreLess--more{opacity:0}section.moreLess--active .btn__moreLess--less{opacity:1}.suites__heading{color:var(--cl-title)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroInfoGalleryComponent, isStandalone: true, selector: "lib-puro-info-gallery", inputs: { title: "title", description: "description", moreinfo: "moreinfo", buttons: "buttons", images: "images", advantages: "advantages" }, viewQueries: [{ propertyName: "moreContent", first: true, predicate: ["moreContent"], descendants: true }], ngImport: i0, template: "<section class=\"suites\">\n @if (title) {\n <h2 class=\"suites__heading\">{{ title }}</h2>\n }\n <div\n class=\"js-active-slider suites__slider relative\"\n [puroSlider]=\"advantages\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suites-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"3\"\n data-slides_mobile=\"3\"\n data-slides_mobile_small=\"3\"\n data-slides_mobile_xsmall=\"2\"\n >\n @if (advantages?.length) {\n <div class=\"js-suites-slider\">\n @for (adv of advantages; track $index) {\n <div>\n <div class=\"suites__service\">\n @if (adv.icon) {\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"50\"\n height=\"40\"\n [ngClass]=\"adv.icon\"\n ></svg>\n }\n @if (adv.title) {\n <span>{{ adv.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n <div class=\"js-slider-arrows\"></div>\n </div>\n <div class=\"suites__paragraph\">\n @if (description) {\n <p>{{ description }}</p>\n }\n @if (moreinfo) {\n <p #moreContent class=\"more-content\" [class.active]=\"showMoreInfo\">\n {{ moreinfo }}\n </p>\n }\n </div>\n @if (buttons?.length) {\n <div class=\"btn__group\">\n @for (btn of buttons; track $index) {\n @if (!btn.url) {\n @if (btn.label && moreinfo) {\n <button\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n class=\"btn\"\n (click)=\"toggleMoreInfo()\"\n [attr.aria-label]=\"btn.label\"\n >\n <span class=\"btn__moreLess--more\"\n >{{ btn.label }} +</span\n >\n <span class=\"btn__moreLess--less\"\n >{{ btn.label }} -</span\n >\n </button>\n }\n } @else {\n @if (btn.label) {\n <a\n [href]=\"btn.url\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n [attr.aria-label]=\"btn.label\"\n ><span>{{ btn.label }}</span></a\n >\n }\n }\n }\n </div>\n }\n @if (images?.length) {\n <div\n class=\"suites__gallery relative js-active-slider\"\n [puroSlider]=\"images\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suitesGallery-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"4\"\n >\n <div class=\"suitesGallery__grid\">\n <div class=\"suitesGallery__big js-content-slider\">\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n <div\n class=\"suitesGallery__small js-suitesGallery-slider mobile\"\n >\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n }\n</section>\n", styles: ["section .more-content{display:none}section .btn__moreLess{position:relative}section .btn__moreLess--more,section .btn__moreLess--less{position:absolute;transition:opacity .5s;left:50%;top:50%;transform:translate(-50%,-50%)}section .btn__moreLess--more{opacity:1}section .btn__moreLess--less{opacity:0}section.moreLess--active .btn__moreLess--more{opacity:0}section.moreLess--active .btn__moreLess--less{opacity:1}.suites__heading{color:var(--cl-title)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroInfoGalleryComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'lib-puro-info-gallery', standalone: true, imports: [CommonModule, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"suites\">\n @if (title) {\n <h2 class=\"suites__heading\">{{ title }}</h2>\n }\n <div\n class=\"js-active-slider suites__slider relative\"\n [puroSlider]=\"advantages\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suites-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"3\"\n data-slides_mobile=\"3\"\n data-slides_mobile_small=\"3\"\n data-slides_mobile_xsmall=\"2\"\n >\n @if (advantages?.length) {\n <div class=\"js-suites-slider\">\n @for (adv of advantages; track $index) {\n <div>\n <div class=\"suites__service\">\n @if (adv.icon) {\n <i class=\"icon--svg\" [ngClass]=\"adv.icon\"></i>\n }\n @if (adv.title) {\n <span>{{ adv.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n <div class=\"js-slider-arrows\"></div>\n </div>\n <div class=\"suites__paragraph\">\n @if (description) {\n <p>{{ description }}</p>\n }\n @if (moreinfo) {\n <p #moreContent class=\"more-content\" [class.active]=\"showMoreInfo\">\n {{ moreinfo }}\n </p>\n }\n </div>\n @if (buttons?.length) {\n <div class=\"btn__group\">\n @for (btn of buttons; track $index) {\n @if (!btn.url) {\n @if (btn.label && moreinfo) {\n <button\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n class=\"btn\"\n (click)=\"toggleMoreInfo()\"\n [attr.aria-label]=\"btn.label\"\n >\n <span class=\"btn__moreLess--more\"\n >{{ btn.label }} +</span\n >\n <span class=\"btn__moreLess--less\"\n >{{ btn.label }} -</span\n >\n </button>\n }\n } @else {\n @if (btn.label) {\n <a\n [href]=\"btn.url\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n [attr.aria-label]=\"btn.label\"\n ><span>{{ btn.label }}</span></a\n >\n }\n }\n }\n </div>\n }\n @if (images?.length) {\n <div\n class=\"suites__gallery relative js-active-slider\"\n [puroSlider]=\"images\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suitesGallery-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"4\"\n >\n <div class=\"suitesGallery__grid\">\n <div class=\"suitesGallery__big js-content-slider\">\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n <div\n class=\"suitesGallery__small js-suitesGallery-slider mobile\"\n >\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n }\n</section>\n", styles: ["section .more-content{display:none}section .btn__moreLess{position:relative}section .btn__moreLess--more,section .btn__moreLess--less{position:absolute;transition:opacity .5s;left:50%;top:50%;transform:translate(-50%,-50%)}section .btn__moreLess--more{opacity:1}section .btn__moreLess--less{opacity:0}section.moreLess--active .btn__moreLess--more{opacity:0}section.moreLess--active .btn__moreLess--less{opacity:1}.suites__heading{color:var(--cl-title)}\n"] }]
26
+ args: [{ selector: 'lib-puro-info-gallery', standalone: true, imports: [CommonModule, PuroSliderDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"suites\">\n @if (title) {\n <h2 class=\"suites__heading\">{{ title }}</h2>\n }\n <div\n class=\"js-active-slider suites__slider relative\"\n [puroSlider]=\"advantages\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suites-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"3\"\n data-slides_laptop=\"3\"\n data-slides_tablet=\"3\"\n data-slides_mobile=\"3\"\n data-slides_mobile_small=\"3\"\n data-slides_mobile_xsmall=\"2\"\n >\n @if (advantages?.length) {\n <div class=\"js-suites-slider\">\n @for (adv of advantages; track $index) {\n <div>\n <div class=\"suites__service\">\n @if (adv.icon) {\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"50\"\n height=\"40\"\n [ngClass]=\"adv.icon\"\n ></svg>\n }\n @if (adv.title) {\n <span>{{ adv.title }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n <div class=\"js-slider-arrows\"></div>\n </div>\n <div class=\"suites__paragraph\">\n @if (description) {\n <p>{{ description }}</p>\n }\n @if (moreinfo) {\n <p #moreContent class=\"more-content\" [class.active]=\"showMoreInfo\">\n {{ moreinfo }}\n </p>\n }\n </div>\n @if (buttons?.length) {\n <div class=\"btn__group\">\n @for (btn of buttons; track $index) {\n @if (!btn.url) {\n @if (btn.label && moreinfo) {\n <button\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n class=\"btn\"\n (click)=\"toggleMoreInfo()\"\n [attr.aria-label]=\"btn.label\"\n >\n <span class=\"btn__moreLess--more\"\n >{{ btn.label }} +</span\n >\n <span class=\"btn__moreLess--less\"\n >{{ btn.label }} -</span\n >\n </button>\n }\n } @else {\n @if (btn.label) {\n <a\n [href]=\"btn.url\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: $index === 0,\n 'btn__primary--outline btn__moreLess':\n $index === 1,\n }\"\n [attr.aria-label]=\"btn.label\"\n ><span>{{ btn.label }}</span></a\n >\n }\n }\n }\n </div>\n }\n @if (images?.length) {\n <div\n class=\"suites__gallery relative js-active-slider\"\n [puroSlider]=\"images\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-suitesGallery-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"true\"\n data-slides_pc=\"4\"\n >\n <div class=\"suitesGallery__grid\">\n <div class=\"suitesGallery__big js-content-slider\">\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n <div\n class=\"suitesGallery__small js-suitesGallery-slider mobile\"\n >\n @for (img of images; track $index) {\n <div>\n <div class=\"suitesGallery__graphic\">\n <img\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"suitesGallery__graphic--img\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n }\n</section>\n", styles: ["section .more-content{display:none}section .btn__moreLess{position:relative}section .btn__moreLess--more,section .btn__moreLess--less{position:absolute;transition:opacity .5s;left:50%;top:50%;transform:translate(-50%,-50%)}section .btn__moreLess--more{opacity:1}section .btn__moreLess--less{opacity:0}section.moreLess--active .btn__moreLess--more{opacity:0}section.moreLess--active .btn__moreLess--less{opacity:1}.suites__heading{color:var(--cl-title)}\n"] }]
27
27
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { title: [{
28
28
  type: Input
29
29
  }], description: [{
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
40
40
  type: ViewChild,
41
41
  args: ['moreContent', { static: false }]
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pbmZvLWdhbGxlcnkvcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pbmZvLWdhbGxlcnkvcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBV3ZELE1BQU0sT0FBTyx3QkFBd0I7SUFXakMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUh2QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztJQUdZLENBQUM7SUFFM0MsY0FBYztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDOUU7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7SUFDTCxDQUFDOytHQXRCUSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwyVUNkckMsdXBLQXVJQSwrZkQ5SGMsWUFBWSw2SEFBRSxtQkFBbUI7OzRGQUtsQyx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTTs4RUFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR3VDLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQdXJvU2xpZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBQdXJvQWR2YW50YWdlc0l0ZW0gfSBmcm9tICcuLi9wdXJvLWFkdmFudGFnZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWluZm8tZ2FsbGVyeScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvU2xpZGVyRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWluZm8tZ2FsbGVyeS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9JbmZvR2FsbGVyeUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9yZWluZm8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgYnV0dG9ucz86IFB1cm9CdXR0b25JW107XG4gICAgQElucHV0KCkgaW1hZ2VzPzogUHVyb0ltYWdlSVtdO1xuICAgIEBJbnB1dCgpIGFkdmFudGFnZXM/OiBQdXJvQWR2YW50YWdlc0l0ZW1bXTtcblxuICAgIHNob3dNb3JlSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGQoJ21vcmVDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1vcmVDb250ZW50ITogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICAgIHRvZ2dsZU1vcmVJbmZvKCkge1xuICAgICAgICB0aGlzLnNob3dNb3JlSW5mbyA9ICF0aGlzLnNob3dNb3JlSW5mbztcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMubW9yZUNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAodGhpcy5zaG93TW9yZUluZm8pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGVudCwgJ21heC1oZWlnaHQnLCBjb250ZW50LnNjcm9sbEhlaWdodCArICdweCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50LCAnbWF4LWhlaWdodCcsICcwcHgnKTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCI8c2VjdGlvbiBjbGFzcz1cInN1aXRlc1wiPlxuICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgPGgyIGNsYXNzPVwic3VpdGVzX19oZWFkaW5nXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgIH1cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwianMtYWN0aXZlLXNsaWRlciBzdWl0ZXNfX3NsaWRlciByZWxhdGl2ZVwiXG4gICAgICAgIFtwdXJvU2xpZGVyXT1cImFkdmFudGFnZXNcIlxuICAgICAgICBkYXRhLXNsaWRlc19pbmZpbml0ZT1cInRydWVcIlxuICAgICAgICBkYXRhLXNsaWRlcl9uYW1lPVwianMtc3VpdGVzLXNsaWRlclwiXG4gICAgICAgIGRhdGEtc2xpZGVyX3Nob3didG5zPVwidHJ1ZVwiXG4gICAgICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxuICAgICAgICBkYXRhLXNsaWRlcl9mYWRlPVwiZmFsc2VcIlxuICAgICAgICBkYXRhLXNsaWRlcl9hdXRvcGxheT1cInRydWVcIlxuICAgICAgICBkYXRhLXNsaWRlc19wYz1cIjNcIlxuICAgICAgICBkYXRhLXNsaWRlc19sYXB0b3A9XCIzXCJcbiAgICAgICAgZGF0YS1zbGlkZXNfdGFibGV0PVwiM1wiXG4gICAgICAgIGRhdGEtc2xpZGVzX21vYmlsZT1cIjNcIlxuICAgICAgICBkYXRhLXNsaWRlc19tb2JpbGVfc21hbGw9XCIzXCJcbiAgICAgICAgZGF0YS1zbGlkZXNfbW9iaWxlX3hzbWFsbD1cIjJcIlxuICAgID5cbiAgICAgICAgQGlmIChhZHZhbnRhZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1zdWl0ZXMtc2xpZGVyXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWR2IG9mIGFkdmFudGFnZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2VydmljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2Lmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLS1zdmdcIiBbbmdDbGFzc109XCJhZHYuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZHYudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWR2LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwianMtc2xpZGVyLWFycm93c1wiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNfX3BhcmFncmFwaFwiPlxuICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8cD57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKG1vcmVpbmZvKSB7XG4gICAgICAgICAgICA8cCAjbW9yZUNvbnRlbnQgY2xhc3M9XCJtb3JlLWNvbnRlbnRcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dNb3JlSW5mb1wiPlxuICAgICAgICAgICAgICAgIHt7IG1vcmVpbmZvIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGJ1dHRvbnM/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgQGZvciAoYnRuIG9mIGJ1dHRvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBpZiAoIWJ0bi51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChidG4ubGFiZWwgJiYgbW9yZWluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bl9fcHJpbWFyeTogJGluZGV4ID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnRuX19wcmltYXJ5LS1vdXRsaW5lIGJ0bl9fbW9yZUxlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGV4ID09PSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9yZUluZm8oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG4ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuX19tb3JlTGVzcy0tbW9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBidG4ubGFiZWwgfX0gKzwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bl9fbW9yZUxlc3MtLWxlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnRuLmxhYmVsIH19IC08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGJ0bi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidG4udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5fX3ByaW1hcnk6ICRpbmRleCA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J0bl9fcHJpbWFyeS0tb3V0bGluZSBidG5fX21vcmVMZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCA9PT0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPnt7IGJ0bi5sYWJlbCB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNfX2dhbGxlcnkgcmVsYXRpdmUganMtYWN0aXZlLXNsaWRlclwiXG4gICAgICAgICAgICBbcHVyb1NsaWRlcl09XCJpbWFnZXNcIlxuICAgICAgICAgICAgZGF0YS1zbGlkZXNfaW5maW5pdGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtc2xpZGVyX25hbWU9XCJqcy1zdWl0ZXNHYWxsZXJ5LXNsaWRlclwiXG4gICAgICAgICAgICBkYXRhLXNsaWRlcl9zaG93YnRucz1cInRydWVcIlxuICAgICAgICAgICAgZGF0YS1zbGlkZXJfc2hvd2RvdHM9XCJmYWxzZVwiXG4gICAgICAgICAgICBkYXRhLXNsaWRlcl9mYWRlPVwiZmFsc2VcIlxuICAgICAgICAgICAgZGF0YS1zbGlkZXJfYXV0b3BsYXk9XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtc2xpZGVzX3BjPVwiNFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19ncmlkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc0dhbGxlcnlfX2JpZyBqcy1jb250ZW50LXNsaWRlclwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpbWcgb2YgaW1hZ2VzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc0dhbGxlcnlfX2dyYXBoaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaW1nLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1aXRlc0dhbGxlcnlfX2dyYXBoaWMtLWltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19zbWFsbCBqcy1zdWl0ZXNHYWxsZXJ5LXNsaWRlciBtb2JpbGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaW1nIG9mIGltYWdlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19ncmFwaGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19ncmFwaGljLS1pbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpzLXNsaWRlci1hcnJvd3NcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9zZWN0aW9uPlxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pbmZvLWdhbGxlcnkvcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pbmZvLWdhbGxlcnkvcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBV3ZELE1BQU0sT0FBTyx3QkFBd0I7SUFXakMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUh2QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztJQUdZLENBQUM7SUFFM0MsY0FBYztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDOUU7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7SUFDTCxDQUFDOytHQXRCUSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwyVUNkckMsczZLQTZJQSwrZkRwSWMsWUFBWSw2SEFBRSxtQkFBbUI7OzRGQUtsQyx3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTTs4RUFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR3VDLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQdXJvU2xpZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBQdXJvQWR2YW50YWdlc0l0ZW0gfSBmcm9tICcuLi9wdXJvLWFkdmFudGFnZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWluZm8tZ2FsbGVyeScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvU2xpZGVyRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1pbmZvLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWluZm8tZ2FsbGVyeS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9JbmZvR2FsbGVyeUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9yZWluZm8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgYnV0dG9ucz86IFB1cm9CdXR0b25JW107XG4gICAgQElucHV0KCkgaW1hZ2VzPzogUHVyb0ltYWdlSVtdO1xuICAgIEBJbnB1dCgpIGFkdmFudGFnZXM/OiBQdXJvQWR2YW50YWdlc0l0ZW1bXTtcblxuICAgIHNob3dNb3JlSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGQoJ21vcmVDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1vcmVDb250ZW50ITogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICAgIHRvZ2dsZU1vcmVJbmZvKCkge1xuICAgICAgICB0aGlzLnNob3dNb3JlSW5mbyA9ICF0aGlzLnNob3dNb3JlSW5mbztcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMubW9yZUNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAodGhpcy5zaG93TW9yZUluZm8pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGVudCwgJ21heC1oZWlnaHQnLCBjb250ZW50LnNjcm9sbEhlaWdodCArICdweCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50LCAnbWF4LWhlaWdodCcsICcwcHgnKTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCI8c2VjdGlvbiBjbGFzcz1cInN1aXRlc1wiPlxuICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgPGgyIGNsYXNzPVwic3VpdGVzX19oZWFkaW5nXCI+e3sgdGl0bGUgfX08L2gyPlxuICAgIH1cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwianMtYWN0aXZlLXNsaWRlciBzdWl0ZXNfX3NsaWRlciByZWxhdGl2ZVwiXG4gICAgICAgIFtwdXJvU2xpZGVyXT1cImFkdmFudGFnZXNcIlxuICAgICAgICBkYXRhLXNsaWRlc19pbmZpbml0ZT1cInRydWVcIlxuICAgICAgICBkYXRhLXNsaWRlcl9uYW1lPVwianMtc3VpdGVzLXNsaWRlclwiXG4gICAgICAgIGRhdGEtc2xpZGVyX3Nob3didG5zPVwidHJ1ZVwiXG4gICAgICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxuICAgICAgICBkYXRhLXNsaWRlcl9mYWRlPVwiZmFsc2VcIlxuICAgICAgICBkYXRhLXNsaWRlcl9hdXRvcGxheT1cInRydWVcIlxuICAgICAgICBkYXRhLXNsaWRlc19wYz1cIjNcIlxuICAgICAgICBkYXRhLXNsaWRlc19sYXB0b3A9XCIzXCJcbiAgICAgICAgZGF0YS1zbGlkZXNfdGFibGV0PVwiM1wiXG4gICAgICAgIGRhdGEtc2xpZGVzX21vYmlsZT1cIjNcIlxuICAgICAgICBkYXRhLXNsaWRlc19tb2JpbGVfc21hbGw9XCIzXCJcbiAgICAgICAgZGF0YS1zbGlkZXNfbW9iaWxlX3hzbWFsbD1cIjJcIlxuICAgID5cbiAgICAgICAgQGlmIChhZHZhbnRhZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1zdWl0ZXMtc2xpZGVyXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWR2IG9mIGFkdmFudGFnZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1aXRlc19fc2VydmljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2Lmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWR2Lmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFkdi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImpzLXNsaWRlci1hcnJvd3NcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VpdGVzX19wYXJhZ3JhcGhcIj5cbiAgICAgICAgQGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgPHA+e3sgZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChtb3JlaW5mbykge1xuICAgICAgICAgICAgPHAgI21vcmVDb250ZW50IGNsYXNzPVwibW9yZS1jb250ZW50XCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93TW9yZUluZm9cIj5cbiAgICAgICAgICAgICAgICB7eyBtb3JlaW5mbyB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChidXR0b25zPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiBidXR0b25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFidG4udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnRuLmxhYmVsICYmIG1vcmVpbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5fX3ByaW1hcnk6ICRpbmRleCA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J0bl9fcHJpbWFyeS0tb3V0bGluZSBidG5fX21vcmVMZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCA9PT0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vcmVJbmZvKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bl9fbW9yZUxlc3MtLW1vcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnRuLmxhYmVsIH19ICs8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG5fX21vcmVMZXNzLS1sZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGJ0bi5sYWJlbCB9fSAtPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChidG4ubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnRuLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuX19wcmltYXJ5OiAkaW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidG5fX3ByaW1hcnktLW91dGxpbmUgYnRuX19tb3JlTGVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kZXggPT09IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG4ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48c3Bhbj57eyBidG4ubGFiZWwgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic3VpdGVzX19nYWxsZXJ5IHJlbGF0aXZlIGpzLWFjdGl2ZS1zbGlkZXJcIlxuICAgICAgICAgICAgW3B1cm9TbGlkZXJdPVwiaW1hZ2VzXCJcbiAgICAgICAgICAgIGRhdGEtc2xpZGVzX2luZmluaXRlPVwidHJ1ZVwiXG4gICAgICAgICAgICBkYXRhLXNsaWRlcl9uYW1lPVwianMtc3VpdGVzR2FsbGVyeS1zbGlkZXJcIlxuICAgICAgICAgICAgZGF0YS1zbGlkZXJfc2hvd2J0bnM9XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtc2xpZGVyX3Nob3dkb3RzPVwiZmFsc2VcIlxuICAgICAgICAgICAgZGF0YS1zbGlkZXJfZmFkZT1cImZhbHNlXCJcbiAgICAgICAgICAgIGRhdGEtc2xpZGVyX2F1dG9wbGF5PVwidHJ1ZVwiXG4gICAgICAgICAgICBkYXRhLXNsaWRlc19wYz1cIjRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VpdGVzR2FsbGVyeV9fZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19iaWcganMtY29udGVudC1zbGlkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaW1nIG9mIGltYWdlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19ncmFwaGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWl0ZXNHYWxsZXJ5X19ncmFwaGljLS1pbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VpdGVzR2FsbGVyeV9fc21hbGwganMtc3VpdGVzR2FsbGVyeS1zbGlkZXIgbW9iaWxlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGltZyBvZiBpbWFnZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VpdGVzR2FsbGVyeV9fZ3JhcGhpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpbWcuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VpdGVzR2FsbGVyeV9fZ3JhcGhpYy0taW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqcy1zbGlkZXItYXJyb3dzXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvc2VjdGlvbj5cbiJdfQ==