ctt-puro 0.70.1 → 0.70.3

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.
@@ -5,11 +5,11 @@ import { PuroDynamicHeadingComponent } from '../../shared/puro-dynamic-heading';
5
5
  import * as i0 from "@angular/core";
6
6
  export class Puro404Component {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Puro404Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: Puro404Component, isStandalone: true, selector: "lib-puro-404", inputs: { title: "title", subtitle: "subtitle", description: "description", contact: "contact", link: "link", links: "links", address: "address", tags: "tags", textColors: "textColors" }, ngImport: i0, template: "<div class=\"puro404\">\n <div class=\"puro404__pageNotFound\">\n <div class=\"puro404__pageNotFound--inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"puro404__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'h3'\"\n cssClass=\"puro404__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__content\">\n @if (description || link) {\n <p class=\"puro404__text\">\n @if (description) {\n <span [innerHTML]=\"description\"></span>\n }\n <br />\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </p>\n }\n </div>\n </div>\n </div>\n <div class=\"puro404__contact\">\n <div class=\"puro404__contact--inner\">\n @if (contact) {\n <div>\n @if (contact.title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.contactTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.contactTitle\"\n [content]=\"contact.title\"\n ></lib-puro-dynamic-heading>\n }\n @if (contact && contact.links && contact.links.length) {\n <p class=\"puro404__contactText\">\n @for (link of contact.links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n @if (contact.button) {\n <a\n [href]=\"contact.button.url\"\n [linkType]=\"contact.button.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"contact.button.label\"\n >{{ contact.button.label }}</a\n >\n }\n </p>\n }\n </div>\n } @else {\n @if (links && links.length) {\n <p class=\"puro404__contactText\">\n @for (link of links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n </p>\n }\n }\n @if (address) {\n <div>\n @if (address.title || address.name) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.addressTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.addressTitle\"\n [content]=\"address.title || address.name\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__contactText\">\n @if (address.text) {\n <p [innerHTML]=\"address.text\"></p>\n } @else {\n <p [innerHTML]=\"address.address\"></p>\n <br />\n <p>\n {{ address.cp }} {{ address.city }}\n {{ address.province }}\n </p>\n <br />\n <p [innerHTML]=\"address.country\"></p>\n }\n @if (address.button) {\n <a [href]=\"address.button.url\" ...>{{\n address.button.label\n }}</a>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: Puro404Component, isStandalone: true, selector: "lib-puro-404", inputs: { title: "title", subtitle: "subtitle", description: "description", contact: "contact", link: "link", links: "links", address: "address", tags: "tags", textColors: "textColors" }, ngImport: i0, template: "<div class=\"puro404\">\n <div class=\"puro404__pageNotFound\">\n <div class=\"puro404__pageNotFound--inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"puro404__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'h3'\"\n cssClass=\"puro404__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__content\">\n @if (description || link) {\n <p class=\"puro404__text\">\n @if (description) {\n <span [innerHTML]=\"description\"></span>\n }\n <br />\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </p>\n }\n </div>\n </div>\n </div>\n <div class=\"puro404__contact\">\n <div class=\"puro404__contact--inner\">\n @if (contact) {\n <div>\n @if (contact.title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.contactTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.contactTitle\"\n [content]=\"contact.title\"\n ></lib-puro-dynamic-heading>\n }\n @if (contact && contact.links && contact.links.length) {\n <p class=\"puro404__contactText\">\n @for (link of contact.links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n @if (contact.button) {\n <a\n [href]=\"contact.button.url\"\n [linkType]=\"contact.button.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"contact.button.label\"\n >{{ contact.button.label }}</a\n >\n }\n </p>\n }\n </div>\n } @else {\n @if (links && links.length) {\n <p class=\"puro404__contactText\">\n @for (link of links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n </p>\n }\n }\n @if (address) {\n <div>\n @if (address.title || address.name) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.addressTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.addressTitle\"\n [content]=\"address.title || address.name\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__contactText\">\n @if (address.text) {\n <p [innerHTML]=\"address.text\"></p>\n } @else {\n <p [innerHTML]=\"address.address\"></p>\n <br />\n <p>\n {{ address.cp }} {{ address.city }}\n {{ address.province }}\n </p>\n <br />\n <p [innerHTML]=\"address.country\"></p>\n }\n @if (address.button) {\n <a\n [href]=\"address.button.url\"\n [linkType]=\"address.button.linkType\"\n [attr.aria-label]=\"address.button.label\"\n class=\"btn__link\"\n >{{ address.button.label }}</a\n >\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Puro404Component, decorators: [{
11
11
  type: Component,
12
- args: [{ selector: 'lib-puro-404', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroDynamicHeadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"puro404\">\n <div class=\"puro404__pageNotFound\">\n <div class=\"puro404__pageNotFound--inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"puro404__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'h3'\"\n cssClass=\"puro404__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__content\">\n @if (description || link) {\n <p class=\"puro404__text\">\n @if (description) {\n <span [innerHTML]=\"description\"></span>\n }\n <br />\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </p>\n }\n </div>\n </div>\n </div>\n <div class=\"puro404__contact\">\n <div class=\"puro404__contact--inner\">\n @if (contact) {\n <div>\n @if (contact.title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.contactTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.contactTitle\"\n [content]=\"contact.title\"\n ></lib-puro-dynamic-heading>\n }\n @if (contact && contact.links && contact.links.length) {\n <p class=\"puro404__contactText\">\n @for (link of contact.links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n @if (contact.button) {\n <a\n [href]=\"contact.button.url\"\n [linkType]=\"contact.button.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"contact.button.label\"\n >{{ contact.button.label }}</a\n >\n }\n </p>\n }\n </div>\n } @else {\n @if (links && links.length) {\n <p class=\"puro404__contactText\">\n @for (link of links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n </p>\n }\n }\n @if (address) {\n <div>\n @if (address.title || address.name) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.addressTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.addressTitle\"\n [content]=\"address.title || address.name\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__contactText\">\n @if (address.text) {\n <p [innerHTML]=\"address.text\"></p>\n } @else {\n <p [innerHTML]=\"address.address\"></p>\n <br />\n <p>\n {{ address.cp }} {{ address.city }}\n {{ address.province }}\n </p>\n <br />\n <p [innerHTML]=\"address.country\"></p>\n }\n @if (address.button) {\n <a [href]=\"address.button.url\" ...>{{\n address.button.label\n }}</a>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
12
+ args: [{ selector: 'lib-puro-404', standalone: true, imports: [CommonModule, PuroLinkTypeDirective, PuroDynamicHeadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"puro404\">\n <div class=\"puro404__pageNotFound\">\n <div class=\"puro404__pageNotFound--inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"puro404__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (subtitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.subtitle || 'h3'\"\n cssClass=\"puro404__subHeading\"\n [color]=\"textColors?.subtitle\"\n [content]=\"subtitle\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__content\">\n @if (description || link) {\n <p class=\"puro404__text\">\n @if (description) {\n <span [innerHTML]=\"description\"></span>\n }\n <br />\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </p>\n }\n </div>\n </div>\n </div>\n <div class=\"puro404__contact\">\n <div class=\"puro404__contact--inner\">\n @if (contact) {\n <div>\n @if (contact.title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.contactTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.contactTitle\"\n [content]=\"contact.title\"\n ></lib-puro-dynamic-heading>\n }\n @if (contact && contact.links && contact.links.length) {\n <p class=\"puro404__contactText\">\n @for (link of contact.links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n @if (contact.button) {\n <a\n [href]=\"contact.button.url\"\n [linkType]=\"contact.button.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"contact.button.label\"\n >{{ contact.button.label }}</a\n >\n }\n </p>\n }\n </div>\n } @else {\n @if (links && links.length) {\n <p class=\"puro404__contactText\">\n @for (link of links; track $index) {\n @if (link) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n ><br />\n }\n }\n </p>\n }\n }\n @if (address) {\n <div>\n @if (address.title || address.name) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.addressTitle || 'h4'\"\n cssClass=\"puro404__contactHeading\"\n [color]=\"textColors?.addressTitle\"\n [content]=\"address.title || address.name\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"puro404__contactText\">\n @if (address.text) {\n <p [innerHTML]=\"address.text\"></p>\n } @else {\n <p [innerHTML]=\"address.address\"></p>\n <br />\n <p>\n {{ address.cp }} {{ address.city }}\n {{ address.province }}\n </p>\n <br />\n <p [innerHTML]=\"address.country\"></p>\n }\n @if (address.button) {\n <a\n [href]=\"address.button.url\"\n [linkType]=\"address.button.linkType\"\n [attr.aria-label]=\"address.button.label\"\n class=\"btn__link\"\n >{{ address.button.label }}</a\n >\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
13
13
  }], propDecorators: { title: [{
14
14
  type: Input
15
15
  }], subtitle: [{
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
29
29
  }], textColors: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby00MDQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby00MDQvcHVyby00MDQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby00MDQvcHVyby00MDQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQVVoRixNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7bUdBQWhCLGdCQUFnQixvUUNkN0IsODBLQTRIQSx5RERuSGMsWUFBWSwrQkFBRSxxQkFBcUIsNElBQUUsMkJBQTJCOzs0RkFLakUsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNJLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLENBQUMsbUJBRzFELHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdXJvTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvVGFnc0ksIFB1cm9UZXh0c0NvbG9yc0kgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tNDA0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby00MDQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLTQwNC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm80MDRDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbnRhY3Q/OiBQdXJvNDA0SW5mbztcbiAgICBASW5wdXQoKSBsaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgbGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGFkZHJlc3M/OiBQdXJvNDA0SW5mb0FkZHJlc3M7XG4gICAgQElucHV0KCkgdGFncz86IFB1cm9UYWdzSTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogUHVyb1RleHRzQ29sb3JzSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvNDA0SW5mbyB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xuICAgIHRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVybzQwNEluZm9BZGRyZXNzIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgYWRkcmVzcz86IHN0cmluZztcbiAgICBjaXR5Pzogc3RyaW5nO1xuICAgIGNvdW50cnk/OiBzdHJpbmc7XG4gICAgY3A/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgbGluaz86IHN0cmluZztcbiAgICBsb2NhbGl0eT86IHN0cmluZztcbiAgICBwaG9uZT86IHN0cmluZztcbiAgICBwcm92aW5jZT86IHN0cmluZztcbiAgICBsaW5rcz86IFB1cm9CdXR0b25JW107XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG4iLCI8ZGl2IGNsYXNzPVwicHVybzQwNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwdXJvNDA0X19wYWdlTm90Rm91bmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX3BhZ2VOb3RGb3VuZC0taW5uZXJcIj5cbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwicHVybzQwNF9faGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICA+PC9saWItcHVyby1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1wdXJvLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnN1YnRpdGxlIHx8ICdoMydcIlxuICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInB1cm80MDRfX3N1YkhlYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uIHx8IGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwdXJvNDA0X190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkZXNjcmlwdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGluay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibGluay5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRhY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRhY3QtLWlubmVyXCI+XG4gICAgICAgICAgICBAaWYgKGNvbnRhY3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3QudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LmNvbnRhY3RUaXRsZSB8fCAnaDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInB1cm80MDRfX2NvbnRhY3RIZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uY29udGFjdFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJjb250YWN0LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3QgJiYgY29udGFjdC5saW5rcyAmJiBjb250YWN0LmxpbmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwdXJvNDA0X19jb250YWN0VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdC5saW5rczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGFjdC5idXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImNvbnRhY3QuYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiY29udGFjdC5idXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb250YWN0LmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29udGFjdC5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGlmIChsaW5rcyAmJiBsaW5rcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwdXJvNDA0X19jb250YWN0VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBsaW5rczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpbmsubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYWRkcmVzcykge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWRkcmVzcy50aXRsZSB8fCBhZGRyZXNzLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LmFkZHJlc3NUaXRsZSB8fCAnaDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInB1cm80MDRfX2NvbnRhY3RIZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uYWRkcmVzc1RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJhZGRyZXNzLnRpdGxlIHx8IGFkZHJlc3MubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItcHVyby1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRhY3RUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3MudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiYWRkcmVzcy50ZXh0XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJhZGRyZXNzLmFkZHJlc3NcIj48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFkZHJlc3MuY3AgfX0ge3sgYWRkcmVzcy5jaXR5IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFkZHJlc3MucHJvdmluY2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJhZGRyZXNzLmNvdW50cnlcIj48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3MuYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYWRkcmVzcy5idXR0b24udXJsXCIgLi4uPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYnV0dG9uLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby00MDQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby00MDQvcHVyby00MDQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby00MDQvcHVyby00MDQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQVVoRixNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7bUdBQWhCLGdCQUFnQixvUUNkN0IsdXZMQW1JQSx5REQxSGMsWUFBWSwrQkFBRSxxQkFBcUIsNElBQUUsMkJBQTJCOzs0RkFLakUsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNJLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLENBQUMsbUJBRzFELHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdXJvTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvVGFnc0ksIFB1cm9UZXh0c0NvbG9yc0kgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tNDA0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSwgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby00MDQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLTQwNC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm80MDRDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbnRhY3Q/OiBQdXJvNDA0SW5mbztcbiAgICBASW5wdXQoKSBsaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgbGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGFkZHJlc3M/OiBQdXJvNDA0SW5mb0FkZHJlc3M7XG4gICAgQElucHV0KCkgdGFncz86IFB1cm9UYWdzSTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogUHVyb1RleHRzQ29sb3JzSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvNDA0SW5mbyB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xuICAgIHRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVybzQwNEluZm9BZGRyZXNzIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgYWRkcmVzcz86IHN0cmluZztcbiAgICBjaXR5Pzogc3RyaW5nO1xuICAgIGNvdW50cnk/OiBzdHJpbmc7XG4gICAgY3A/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgbGluaz86IHN0cmluZztcbiAgICBsb2NhbGl0eT86IHN0cmluZztcbiAgICBwaG9uZT86IHN0cmluZztcbiAgICBwcm92aW5jZT86IHN0cmluZztcbiAgICBsaW5rcz86IFB1cm9CdXR0b25JW107XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG4iLCI8ZGl2IGNsYXNzPVwicHVybzQwNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwdXJvNDA0X19wYWdlTm90Rm91bmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX3BhZ2VOb3RGb3VuZC0taW5uZXJcIj5cbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwicHVybzQwNF9faGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICA+PC9saWItcHVyby1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1wdXJvLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnN1YnRpdGxlIHx8ICdoMydcIlxuICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInB1cm80MDRfX3N1YkhlYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uIHx8IGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwdXJvNDA0X190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkZXNjcmlwdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGluay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibGluay5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRhY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cm80MDRfX2NvbnRhY3QtLWlubmVyXCI+XG4gICAgICAgICAgICBAaWYgKGNvbnRhY3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3QudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LmNvbnRhY3RUaXRsZSB8fCAnaDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInB1cm80MDRfX2NvbnRhY3RIZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uY29udGFjdFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJjb250YWN0LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3QgJiYgY29udGFjdC5saW5rcyAmJiBjb250YWN0LmxpbmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwdXJvNDA0X19jb250YWN0VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdC5saW5rczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3QuYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJjb250YWN0LmJ1dHRvbi51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImNvbnRhY3QuYnV0dG9uLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29udGFjdC5idXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNvbnRhY3QuYnV0dG9uLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAobGlua3MgJiYgbGlua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicHVybzQwNF9fY29udGFjdFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgbGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGluay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBsaW5rLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3MudGl0bGUgfHwgYWRkcmVzcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJ0YWdzPy5hZGRyZXNzVGl0bGUgfHwgJ2g0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJwdXJvNDA0X19jb250YWN0SGVhZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LmFkZHJlc3NUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiYWRkcmVzcy50aXRsZSB8fCBhZGRyZXNzLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXJvNDA0X19jb250YWN0VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZGRyZXNzLnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cImFkZHJlc3MudGV4dFwiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiYWRkcmVzcy5hZGRyZXNzXCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhZGRyZXNzLmNwIH19IHt7IGFkZHJlc3MuY2l0eSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhZGRyZXNzLnByb3ZpbmNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiYWRkcmVzcy5jb3VudHJ5XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZGRyZXNzLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImFkZHJlc3MuYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJhZGRyZXNzLmJ1dHRvbi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWRkcmVzcy5idXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBhZGRyZXNzLmJ1dHRvbi5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -3,7 +3,6 @@ import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output
3
3
  import { FormBuilder, FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
4
4
  import { AutoImageZoomWrapperDirective, PuroLinkTypeDirective, PuroResizeZoomDirective, } from '../../directives';
5
5
  import { PuroContactLinkPipe } from '../../pipes';
6
- import { ScreenSizerService } from '../../services';
7
6
  import { PuroDynamicHeadingComponent } from '../../shared/puro-dynamic-heading';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "@angular/common";
@@ -11,7 +10,6 @@ import * as i2 from "@angular/forms";
11
10
  export class PuroFooterInfoComponent {
12
11
  constructor() {
13
12
  this.fb = inject(FormBuilder);
14
- this.screenSizer = inject(ScreenSizerService);
15
13
  this.newsletterClick = new EventEmitter();
16
14
  }
17
15
  ngOnInit() {
@@ -23,22 +21,8 @@ export class PuroFooterInfoComponent {
23
21
  send() {
24
22
  this.newsletterClick.emit(this.form?.value.email);
25
23
  }
26
- get isMobile() {
27
- const w = this.screenSizer.viewportWidth;
28
- // ⛔️ si aún no sabemos el viewport, NO es mobile
29
- if (!w || w <= 0) {
30
- return false;
31
- }
32
- return w <= 768;
33
- }
34
- get resolvedImage() {
35
- if (this.isMobile && this.imgMobile) {
36
- return this.imgMobile;
37
- }
38
- return this.img;
39
- }
40
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFooterInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroFooterInfoComponent, isStandalone: true, selector: "lib-puro-footer-info", inputs: { socialMedia: "socialMedia", addressInfo: "addressInfo", contactInfo: "contactInfo", newsletterInfo: "newsletterInfo", img: "img", imgMobile: "imgMobile", logoImage: "logoImage", logo: "logo", button: "button", title: "title", tags: "tags", textColors: "textColors" }, outputs: { newsletterClick: "newsletterClick" }, ngImport: i0, template: "<section class=\"contact\" resizeZoom>\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"contact__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"contact__graphic\">\n @if (resolvedImage) {\n <img\n [src]=\"resolvedImage.src\"\n class=\"contact__graphic--img\"\n [width]=\"resolvedImage.width\"\n [height]=\"resolvedImage.height\"\n [alt]=\"resolvedImage.alt\"\n loading=\"lazy\"\n />\n }\n <span class=\"contact__purobeach\">\n @if (logoImage) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logoImage.src\"\n [alt]=\"logoImage.alt\"\n data-no-zoom\n />\n }\n </span>\n </div>\n <div class=\"contact__container\">\n @if (socialMedia) {\n <div class=\"contact__followUs\">\n <span class=\"contact__purobeach\">\n @if (logo) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logo.src\"\n [alt]=\"logo.alt\"\n data-no-zoom\n />\n }\n </span>\n <ul class=\"contact__followUs--ItemList\">\n @for (item of socialMedia.items || []; track $index) {\n @if (item) {\n <li class=\"contact__followUs--ItemLink\">\n <a\n [href]=\"item.url\"\n linkType=\"external\"\n [attr.aria-label]=\"item.title\"\n ><i class=\"{{ item.icon }}\"></i\n ></a>\n </li>\n }\n }\n </ul>\n </div>\n }\n @if (addressInfo) {\n <div class=\"contact__address\">\n @if (addressInfo.title) {\n <h3 class=\"contact__heading\">{{ addressInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n @if (addressInfo.text) {\n <div [innerHTML]=\"addressInfo.text\"></div>\n }\n @if (addressInfo.button) {\n <div class=\"btn__group\">\n <a\n [href]=\"addressInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"addressInfo.button.label\"\n >{{ addressInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (contactInfo) {\n <div class=\"contact__contactLinks\">\n @if (contactInfo.title) {\n <h3 class=\"contact__heading\">{{ contactInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n <ul class=\"contact__links\">\n @for (link of contactInfo.links || []; track $index) {\n @if (link) {\n <li>\n <a\n [href]=\"link.url | contactLink\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n @if (contactInfo.button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"contactInfo.button.linkType\"\n [href]=\"contactInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"contactInfo.button.label\"\n >{{ contactInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (newsletterInfo) {\n <div class=\"contact__newsletter\">\n @if (newsletterInfo.title) {\n <h3 class=\"contact__heading\">{{ newsletterInfo.title }}</h3>\n }\n\n @if (form) {\n <form class=\"contact__text\" [formGroup]=\"form\">\n <div class=\"contact__newsletterBox\">\n <div class=\"form__group\">\n <input\n type=\"text\"\n class=\"form__control\"\n [placeholder]=\"\n newsletterInfo.inputPlaceholder\n \"\n formControlName=\"email\"\n />\n <span class=\"contact__newsletter--icon\">\n <i class=\"icon-63\"></i>\n </span>\n </div>\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"check\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use href=\"#checkbox-tick\"></use>\n </svg>\n </span>\n <span\n [innerHTML]=\"newsletterInfo.conditionsLink\"\n ></span>\n </label>\n </div>\n @if (newsletterInfo.button) {\n <div class=\"btn__group\">\n <a\n class=\"btn__link\"\n (click)=\"send()\"\n [ngClass]=\"{\n 'pointer-none': form.invalid,\n }\"\n [attr.aria-label]=\"\n newsletterInfo.button.label\n \"\n >\n {{ newsletterInfo.button.label }}\n </a>\n </div>\n }\n </form>\n }\n </div>\n }\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "pipe", type: PuroContactLinkPipe, name: "contactLink" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroResizeZoomDirective, selector: "[resizeZoom]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroFooterInfoComponent, isStandalone: true, selector: "lib-puro-footer-info", inputs: { socialMedia: "socialMedia", addressInfo: "addressInfo", contactInfo: "contactInfo", newsletterInfo: "newsletterInfo", img: "img", imgMobile: "imgMobile", logoImage: "logoImage", logo: "logo", button: "button", title: "title", tags: "tags", textColors: "textColors" }, outputs: { newsletterClick: "newsletterClick" }, ngImport: i0, template: "<section class=\"contact\" resizeZoom>\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"contact__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"contact__graphic\">\n @if (img) {\n <picture>\n @if (imgMobile) {\n <source\n [attr.srcset]=\"imgMobile.src\"\n media=\"(max-width: 768px)\"\n />\n }\n\n <img\n [src]=\"img.src\"\n class=\"contact__graphic--img\"\n [alt]=\"img.alt\"\n loading=\"lazy\"\n />\n </picture>\n }\n\n <span class=\"contact__purobeach\">\n @if (logoImage) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logoImage.src\"\n [alt]=\"logoImage.alt\"\n data-no-zoom\n />\n }\n </span>\n </div>\n <div class=\"contact__container\">\n @if (socialMedia) {\n <div class=\"contact__followUs\">\n <span class=\"contact__purobeach\">\n @if (logo) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logo.src\"\n [alt]=\"logo.alt\"\n data-no-zoom\n />\n }\n </span>\n <ul class=\"contact__followUs--ItemList\">\n @for (item of socialMedia.items || []; track $index) {\n @if (item) {\n <li class=\"contact__followUs--ItemLink\">\n <a\n [href]=\"item.url\"\n linkType=\"external\"\n [attr.aria-label]=\"item.title\"\n ><i class=\"{{ item.icon }}\"></i\n ></a>\n </li>\n }\n }\n </ul>\n </div>\n }\n @if (addressInfo) {\n <div class=\"contact__address\">\n @if (addressInfo.title) {\n <h3 class=\"contact__heading\">{{ addressInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n @if (addressInfo.text) {\n <div [innerHTML]=\"addressInfo.text\"></div>\n }\n @if (addressInfo.button) {\n <div class=\"btn__group\">\n <a\n [href]=\"addressInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"addressInfo.button.label\"\n >{{ addressInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (contactInfo) {\n <div class=\"contact__contactLinks\">\n @if (contactInfo.title) {\n <h3 class=\"contact__heading\">{{ contactInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n <ul class=\"contact__links\">\n @for (link of contactInfo.links || []; track $index) {\n @if (link) {\n <li>\n <a\n [href]=\"link.url | contactLink\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n @if (contactInfo.button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"contactInfo.button.linkType\"\n [href]=\"contactInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"contactInfo.button.label\"\n >{{ contactInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (newsletterInfo) {\n <div class=\"contact__newsletter\">\n @if (newsletterInfo.title) {\n <h3 class=\"contact__heading\">{{ newsletterInfo.title }}</h3>\n }\n\n @if (form) {\n <form class=\"contact__text\" [formGroup]=\"form\">\n <div class=\"contact__newsletterBox\">\n <div class=\"form__group\">\n <input\n type=\"text\"\n class=\"form__control\"\n [placeholder]=\"\n newsletterInfo.inputPlaceholder\n \"\n formControlName=\"email\"\n />\n <span class=\"contact__newsletter--icon\">\n <i class=\"icon-63\"></i>\n </span>\n </div>\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"check\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use href=\"#checkbox-tick\"></use>\n </svg>\n </span>\n <span\n [innerHTML]=\"newsletterInfo.conditionsLink\"\n ></span>\n </label>\n </div>\n @if (newsletterInfo.button) {\n <div class=\"btn__group\">\n <a\n class=\"btn__link\"\n (click)=\"send()\"\n [ngClass]=\"{\n 'pointer-none': form.invalid,\n }\"\n [attr.aria-label]=\"\n newsletterInfo.button.label\n \"\n >\n {{ newsletterInfo.button.label }}\n </a>\n </div>\n }\n </form>\n }\n </div>\n }\n </div>\n</section>\n", styles: [".contact__graphic{width:100%;position:relative;overflow:hidden;aspect-ratio:1920/288}@media (max-width: 768px){.contact__graphic{aspect-ratio:387/248}}.contact__graphic>picture{display:block;width:100%;height:100%}.contact__graphic--img{width:100%;height:100%;object-fit:cover;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "pipe", type: PuroContactLinkPipe, name: "contactLink" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroResizeZoomDirective, selector: "[resizeZoom]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
26
  }
43
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFooterInfoComponent, decorators: [{
44
28
  type: Component,
@@ -51,7 +35,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
51
35
  PuroDynamicHeadingComponent,
52
36
  AutoImageZoomWrapperDirective,
53
37
  PuroResizeZoomDirective,
54
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"contact\" resizeZoom>\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"contact__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"contact__graphic\">\n @if (resolvedImage) {\n <img\n [src]=\"resolvedImage.src\"\n class=\"contact__graphic--img\"\n [width]=\"resolvedImage.width\"\n [height]=\"resolvedImage.height\"\n [alt]=\"resolvedImage.alt\"\n loading=\"lazy\"\n />\n }\n <span class=\"contact__purobeach\">\n @if (logoImage) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logoImage.src\"\n [alt]=\"logoImage.alt\"\n data-no-zoom\n />\n }\n </span>\n </div>\n <div class=\"contact__container\">\n @if (socialMedia) {\n <div class=\"contact__followUs\">\n <span class=\"contact__purobeach\">\n @if (logo) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logo.src\"\n [alt]=\"logo.alt\"\n data-no-zoom\n />\n }\n </span>\n <ul class=\"contact__followUs--ItemList\">\n @for (item of socialMedia.items || []; track $index) {\n @if (item) {\n <li class=\"contact__followUs--ItemLink\">\n <a\n [href]=\"item.url\"\n linkType=\"external\"\n [attr.aria-label]=\"item.title\"\n ><i class=\"{{ item.icon }}\"></i\n ></a>\n </li>\n }\n }\n </ul>\n </div>\n }\n @if (addressInfo) {\n <div class=\"contact__address\">\n @if (addressInfo.title) {\n <h3 class=\"contact__heading\">{{ addressInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n @if (addressInfo.text) {\n <div [innerHTML]=\"addressInfo.text\"></div>\n }\n @if (addressInfo.button) {\n <div class=\"btn__group\">\n <a\n [href]=\"addressInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"addressInfo.button.label\"\n >{{ addressInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (contactInfo) {\n <div class=\"contact__contactLinks\">\n @if (contactInfo.title) {\n <h3 class=\"contact__heading\">{{ contactInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n <ul class=\"contact__links\">\n @for (link of contactInfo.links || []; track $index) {\n @if (link) {\n <li>\n <a\n [href]=\"link.url | contactLink\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n @if (contactInfo.button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"contactInfo.button.linkType\"\n [href]=\"contactInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"contactInfo.button.label\"\n >{{ contactInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (newsletterInfo) {\n <div class=\"contact__newsletter\">\n @if (newsletterInfo.title) {\n <h3 class=\"contact__heading\">{{ newsletterInfo.title }}</h3>\n }\n\n @if (form) {\n <form class=\"contact__text\" [formGroup]=\"form\">\n <div class=\"contact__newsletterBox\">\n <div class=\"form__group\">\n <input\n type=\"text\"\n class=\"form__control\"\n [placeholder]=\"\n newsletterInfo.inputPlaceholder\n \"\n formControlName=\"email\"\n />\n <span class=\"contact__newsletter--icon\">\n <i class=\"icon-63\"></i>\n </span>\n </div>\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"check\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use href=\"#checkbox-tick\"></use>\n </svg>\n </span>\n <span\n [innerHTML]=\"newsletterInfo.conditionsLink\"\n ></span>\n </label>\n </div>\n @if (newsletterInfo.button) {\n <div class=\"btn__group\">\n <a\n class=\"btn__link\"\n (click)=\"send()\"\n [ngClass]=\"{\n 'pointer-none': form.invalid,\n }\"\n [attr.aria-label]=\"\n newsletterInfo.button.label\n \"\n >\n {{ newsletterInfo.button.label }}\n </a>\n </div>\n }\n </form>\n }\n </div>\n }\n </div>\n</section>\n" }]
38
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"contact\" resizeZoom>\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"contact__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"contact__graphic\">\n @if (img) {\n <picture>\n @if (imgMobile) {\n <source\n [attr.srcset]=\"imgMobile.src\"\n media=\"(max-width: 768px)\"\n />\n }\n\n <img\n [src]=\"img.src\"\n class=\"contact__graphic--img\"\n [alt]=\"img.alt\"\n loading=\"lazy\"\n />\n </picture>\n }\n\n <span class=\"contact__purobeach\">\n @if (logoImage) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logoImage.src\"\n [alt]=\"logoImage.alt\"\n data-no-zoom\n />\n }\n </span>\n </div>\n <div class=\"contact__container\">\n @if (socialMedia) {\n <div class=\"contact__followUs\">\n <span class=\"contact__purobeach\">\n @if (logo) {\n <img\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"contact__purobeach--logo\"\n width=\"180\"\n height=\"20\"\n loading=\"lazy\"\n [src]=\"logo.src\"\n [alt]=\"logo.alt\"\n data-no-zoom\n />\n }\n </span>\n <ul class=\"contact__followUs--ItemList\">\n @for (item of socialMedia.items || []; track $index) {\n @if (item) {\n <li class=\"contact__followUs--ItemLink\">\n <a\n [href]=\"item.url\"\n linkType=\"external\"\n [attr.aria-label]=\"item.title\"\n ><i class=\"{{ item.icon }}\"></i\n ></a>\n </li>\n }\n }\n </ul>\n </div>\n }\n @if (addressInfo) {\n <div class=\"contact__address\">\n @if (addressInfo.title) {\n <h3 class=\"contact__heading\">{{ addressInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n @if (addressInfo.text) {\n <div [innerHTML]=\"addressInfo.text\"></div>\n }\n @if (addressInfo.button) {\n <div class=\"btn__group\">\n <a\n [href]=\"addressInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"addressInfo.button.label\"\n >{{ addressInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (contactInfo) {\n <div class=\"contact__contactLinks\">\n @if (contactInfo.title) {\n <h3 class=\"contact__heading\">{{ contactInfo.title }}</h3>\n }\n <div class=\"contact__text\">\n <ul class=\"contact__links\">\n @for (link of contactInfo.links || []; track $index) {\n @if (link) {\n <li>\n <a\n [href]=\"link.url | contactLink\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n @if (contactInfo.button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"contactInfo.button.linkType\"\n [href]=\"contactInfo.button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"contactInfo.button.label\"\n >{{ contactInfo.button.label }}</a\n >\n </div>\n }\n </div>\n </div>\n }\n @if (newsletterInfo) {\n <div class=\"contact__newsletter\">\n @if (newsletterInfo.title) {\n <h3 class=\"contact__heading\">{{ newsletterInfo.title }}</h3>\n }\n\n @if (form) {\n <form class=\"contact__text\" [formGroup]=\"form\">\n <div class=\"contact__newsletterBox\">\n <div class=\"form__group\">\n <input\n type=\"text\"\n class=\"form__control\"\n [placeholder]=\"\n newsletterInfo.inputPlaceholder\n \"\n formControlName=\"email\"\n />\n <span class=\"contact__newsletter--icon\">\n <i class=\"icon-63\"></i>\n </span>\n </div>\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"check\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use href=\"#checkbox-tick\"></use>\n </svg>\n </span>\n <span\n [innerHTML]=\"newsletterInfo.conditionsLink\"\n ></span>\n </label>\n </div>\n @if (newsletterInfo.button) {\n <div class=\"btn__group\">\n <a\n class=\"btn__link\"\n (click)=\"send()\"\n [ngClass]=\"{\n 'pointer-none': form.invalid,\n }\"\n [attr.aria-label]=\"\n newsletterInfo.button.label\n \"\n >\n {{ newsletterInfo.button.label }}\n </a>\n </div>\n }\n </form>\n }\n </div>\n }\n </div>\n</section>\n", styles: [".contact__graphic{width:100%;position:relative;overflow:hidden;aspect-ratio:1920/288}@media (max-width: 768px){.contact__graphic{aspect-ratio:387/248}}.contact__graphic>picture{display:block;width:100%;height:100%}.contact__graphic--img{width:100%;height:100%;object-fit:cover;display:block}\n"] }]
55
39
  }], propDecorators: { socialMedia: [{
56
40
  type: Input
57
41
  }], addressInfo: [{
@@ -79,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
79
63
  }], newsletterClick: [{
80
64
  type: Output
81
65
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mb290ZXItaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvY29tcG9uZW50cy9wdXJvLWZvb3Rlci1pbmZvL3B1cm8tZm9vdGVyLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mb290ZXItaW5mby9wdXJvLWZvb3Rlci1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUMxQixNQUFNLGtCQUFrQixDQUFDO0FBTzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQW9CaEYsTUFBTSxPQUFPLHVCQUF1QjtJQWxCcEM7UUFtQnFCLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQWNsRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FpQzFEO0lBN0JHLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3RCLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUV6QyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2QsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN6QjtRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDOytHQWhEUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix1WkNsRHBDLDBnUUE4TEEseUREMUpRLFlBQVksNkhBQ1oscUJBQXFCLHVJQUNyQixtQkFBbUIsbURBQ25CLFdBQVcsNDBCQUNYLG1CQUFtQixnVkFDbkIsMkJBQTJCLGlJQUUzQiw2QkFBNkIscURBQzdCLHVCQUF1Qjs7NEZBTWxCLHVCQUF1QjtrQkFsQm5DLFNBQVM7K0JBQ0ksc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUUzQiw2QkFBNkI7d0JBQzdCLHVCQUF1QjtxQkFDMUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxuICAgIFB1cm9SZXNpemVab29tRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7XG4gICAgUHVyb0J1dHRvbkksXG4gICAgUHVyb0ltYWdlSSxcbiAgICBQdXJvVGFnc0ksXG4gICAgUHVyb1RleHRzQ29sb3JzSSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvQ29udGFjdExpbmtQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3B1cm8tZHluYW1pYy1oZWFkaW5nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1mb290ZXItaW5mbycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxuICAgICAgICBQdXJvQ29udGFjdExpbmtQaXBlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuXG4gICAgICAgIEF1dG9JbWFnZVpvb21XcmFwcGVyRGlyZWN0aXZlLFxuICAgICAgICBQdXJvUmVzaXplWm9vbURpcmVjdGl2ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWZvb3Rlci1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1mb290ZXItaW5mby5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9Gb290ZXJJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcbiAgICBASW5wdXQoKSBzb2NpYWxNZWRpYT86IFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvO1xuICAgIEBJbnB1dCgpIGFkZHJlc3NJbmZvPzogUHVyb0Zvb3RlckluZm9BZGRyZXNzSW5mbztcbiAgICBASW5wdXQoKSBjb250YWN0SW5mbz86IFB1cm9Gb290ZXJJbmZvQ29udGFjdEluZm87XG4gICAgQElucHV0KCkgbmV3c2xldHRlckluZm8/OiBQdXJvRm9vdGVySW5mb05ld3NsZXR0ZXJJbmZvO1xuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUZvb3RlckluZm9JO1xuICAgIEBJbnB1dCgpIGltZ01vYmlsZT86IFB1cm9JbWFnZUZvb3RlckluZm9JO1xuICAgIEBJbnB1dCgpIGxvZ29JbWFnZT86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgbG9nbz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGFncz86IFB1cm9UYWdzSTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogUHVyb1RleHRzQ29sb3JzSTtcblxuICAgIEBPdXRwdXQoKSBuZXdzbGV0dGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGZvcm0/OiBGb3JtR3JvdXA7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgY2hlY2s6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRUcnVlXV0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV3c2xldHRlckNsaWNrLmVtaXQodGhpcy5mb3JtPy52YWx1ZS5lbWFpbCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5zY3JlZW5TaXplci52aWV3cG9ydFdpZHRoO1xuXG4gICAgICAgIC8vIOKblO+4jyBzaSBhw7puIG5vIHNhYmVtb3MgZWwgdmlld3BvcnQsIE5PIGVzIG1vYmlsZVxuICAgICAgICBpZiAoIXcgfHwgdyA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdyA8PSA3Njg7XG4gICAgfVxuICAgIFxuICAgIGdldCByZXNvbHZlZEltYWdlKCk6IFB1cm9JbWFnZUZvb3RlckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgdGhpcy5pbWdNb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmltZ01vYmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmltZztcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb0Zvb3RlckluZm9OZXdzbGV0dGVySW5mbyB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaW5wdXRQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBjb25kaXRpb25zTGluaz86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvRm9vdGVySW5mb0FkZHJlc3NJbmZvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpdGVtcz86IHsgdXJsPzogc3RyaW5nOyBpY29uPzogc3RyaW5nOyB0aXRsZT86IHN0cmluZyB9W107XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb0Zvb3RlckluZm9Db250YWN0SW5mbyB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9JbWFnZUZvb3RlckluZm9JIHtcbiAgICBzcmM6IHN0cmluZztcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250YWN0XCIgcmVzaXplWm9vbT5cbiAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgIDxsaWItcHVyby1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ3NwYW4nXCJcbiAgICAgICAgICAgIGNzc0NsYXNzPVwiY29udGFjdF9fdGl0bGVcIlxuICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFjdF9fZ3JhcGhpY1wiPlxuICAgICAgICBAaWYgKHJlc29sdmVkSW1hZ2UpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cInJlc29sdmVkSW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRhY3RfX2dyYXBoaWMtLWltZ1wiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cInJlc29sdmVkSW1hZ2Uud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwicmVzb2x2ZWRJbWFnZS5oZWlnaHRcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwicmVzb2x2ZWRJbWFnZS5hbHRcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2hcIj5cbiAgICAgICAgICAgIEBpZiAobG9nb0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGFjdF9fcHVyb2JlYWNoLS1sb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxODBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJsb2dvSW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJsb2dvSW1hZ2UuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1uby16b29tXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X19jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChzb2NpYWxNZWRpYSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2ZvbGxvd1VzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChsb2dvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2gtLWxvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTgwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibG9nby5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwibG9nby5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbm8tem9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb250YWN0X19mb2xsb3dVcy0tSXRlbUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzb2NpYWxNZWRpYS5pdGVtcyB8fCBbXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjb250YWN0X19mb2xsb3dVcy0tSXRlbUxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlPVwiZXh0ZXJuYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChhZGRyZXNzSW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2FkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3NJbmZvLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNvbnRhY3RfX2hlYWRpbmdcIj57eyBhZGRyZXNzSW5mby50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWRkcmVzc0luZm8udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImFkZHJlc3NJbmZvLnRleHRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3NJbmZvLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJhZGRyZXNzSW5mby5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFkZHJlc3NJbmZvLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBhZGRyZXNzSW5mby5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChjb250YWN0SW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2NvbnRhY3RMaW5rc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY29udGFjdEluZm8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY29udGFjdF9faGVhZGluZ1wiPnt7IGNvbnRhY3RJbmZvLnRpdGxlIH19PC9oMz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29udGFjdF9fbGlua3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdEluZm8ubGlua3MgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsIHwgY29udGFjdExpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGFjdEluZm8uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJjb250YWN0SW5mby5idXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJjb250YWN0SW5mby5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnRhY3RJbmZvLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjb250YWN0SW5mby5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChuZXdzbGV0dGVySW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX25ld3NsZXR0ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKG5ld3NsZXR0ZXJJbmZvLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNvbnRhY3RfX2hlYWRpbmdcIj57eyBuZXdzbGV0dGVySW5mby50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiY29udGFjdF9fdGV4dFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX25ld3NsZXR0ZXJCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvLmlucHV0UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdF9fbmV3c2xldHRlci0taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTYzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybV9fY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjY2hlY2tib3gtdGlja1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibmV3c2xldHRlckluZm8uY29uZGl0aW9uc0xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmV3c2xldHRlckluZm8uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyLW5vbmUnOiBmb3JtLmludmFsaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3c2xldHRlckluZm8uYnV0dG9uLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXdzbGV0dGVySW5mby5idXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mb290ZXItaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvY29tcG9uZW50cy9wdXJvLWZvb3Rlci1pbmZvL3B1cm8tZm9vdGVyLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mb290ZXItaW5mby9wdXJvLWZvb3Rlci1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUMxQixNQUFNLGtCQUFrQixDQUFDO0FBTzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQW9CaEYsTUFBTSxPQUFPLHVCQUF1QjtJQWxCcEM7UUFtQnFCLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFjaEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBYzFEO0lBVkcsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0E1QlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsdVpDakRwQyw2cVFBc01BLDhWRG5LUSxZQUFZLDZIQUNaLHFCQUFxQix1SUFDckIsbUJBQW1CLG1EQUNuQixXQUFXLDQwQkFDWCxtQkFBbUIsZ1ZBQ25CLDJCQUEyQixpSUFFM0IsNkJBQTZCLHFEQUM3Qix1QkFBdUI7OzRGQU1sQix1QkFBdUI7a0JBbEJuQyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFFM0IsNkJBQTZCO3dCQUM3Qix1QkFBdUI7cUJBQzFCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEF1dG9JbWFnZVpvb21XcmFwcGVyRGlyZWN0aXZlLFxuICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICBQdXJvUmVzaXplWm9vbURpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQge1xuICAgIFB1cm9CdXR0b25JLFxuICAgIFB1cm9JbWFnZUksXG4gICAgUHVyb1RhZ3NJLFxuICAgIFB1cm9UZXh0c0NvbG9yc0ksXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHVyb0NvbnRhY3RMaW5rUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZm9vdGVyLWluZm8nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0NvbnRhY3RMaW5rUGlwZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCxcblxuICAgICAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb1Jlc2l6ZVpvb21EaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1mb290ZXItaW5mby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3B1cm8tZm9vdGVyLWluZm8uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRm9vdGVySW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgQElucHV0KCkgc29jaWFsTWVkaWE/OiBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbztcbiAgICBASW5wdXQoKSBhZGRyZXNzSW5mbz86IFB1cm9Gb290ZXJJbmZvQWRkcmVzc0luZm87XG4gICAgQElucHV0KCkgY29udGFjdEluZm8/OiBQdXJvRm9vdGVySW5mb0NvbnRhY3RJbmZvO1xuICAgIEBJbnB1dCgpIG5ld3NsZXR0ZXJJbmZvPzogUHVyb0Zvb3RlckluZm9OZXdzbGV0dGVySW5mbztcbiAgICBASW5wdXQoKSBpbWc/OiBQdXJvSW1hZ2VGb290ZXJJbmZvSTtcbiAgICBASW5wdXQoKSBpbWdNb2JpbGU/OiBQdXJvSW1hZ2VGb290ZXJJbmZvSTtcbiAgICBASW5wdXQoKSBsb2dvSW1hZ2U/OiBQdXJvSW1hZ2VJO1xuICAgIEBJbnB1dCgpIGxvZ28/OiBQdXJvSW1hZ2VJO1xuICAgIEBJbnB1dCgpIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBQdXJvVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IFB1cm9UZXh0c0NvbG9yc0k7XG5cbiAgICBAT3V0cHV0KCkgbmV3c2xldHRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBmb3JtPzogRm9ybUdyb3VwO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgICAgIGNoZWNrOiBbZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV1dLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5ld3NsZXR0ZXJDbGljay5lbWl0KHRoaXMuZm9ybT8udmFsdWUuZW1haWwpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvRm9vdGVySW5mb05ld3NsZXR0ZXJJbmZvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpbnB1dFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGNvbmRpdGlvbnNMaW5rPzogc3RyaW5nO1xuICAgIGJ1dHRvbj86IFB1cm9CdXR0b25JO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Gb290ZXJJbmZvQWRkcmVzc0luZm8ge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8ge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGl0ZW1zPzogeyB1cmw/OiBzdHJpbmc7IGljb24/OiBzdHJpbmc7IHRpdGxlPzogc3RyaW5nIH1bXTtcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvRm9vdGVySW5mb0NvbnRhY3RJbmZvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBsaW5rcz86IFB1cm9CdXR0b25JW107XG4gICAgYnV0dG9uPzogUHVyb0J1dHRvbkk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb0ltYWdlRm9vdGVySW5mb0kge1xuICAgIHNyYzogc3RyaW5nO1xuICAgIGFsdD86IHN0cmluZztcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImNvbnRhY3RcIiByZXNpemVab29tPlxuICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgPGxpYi1wdXJvLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgW3RhZ109XCJ0YWdzPy50aXRsZSB8fCAnc3BhbidcIlxuICAgICAgICAgICAgY3NzQ2xhc3M9XCJjb250YWN0X190aXRsZVwiXG4gICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8udGl0bGVcIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVcIlxuICAgICAgICA+PC9saWItcHVyby1keW5hbWljLWhlYWRpbmc+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X19ncmFwaGljXCI+XG4gICAgICAgIEBpZiAoaW1nKSB7XG4gICAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgICAgICBAaWYgKGltZ01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zcmNzZXRdPVwiaW1nTW9iaWxlLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYT1cIihtYXgtd2lkdGg6IDc2OHB4KVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRhY3RfX2dyYXBoaWMtLWltZ1wiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaW1nLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICB9XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2hcIj5cbiAgICAgICAgICAgIEBpZiAobG9nb0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGFjdF9fcHVyb2JlYWNoLS1sb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxODBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJsb2dvSW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJsb2dvSW1hZ2UuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1uby16b29tXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X19jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChzb2NpYWxNZWRpYSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2ZvbGxvd1VzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChsb2dvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250YWN0X19wdXJvYmVhY2gtLWxvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTgwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibG9nby5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwibG9nby5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbm8tem9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb250YWN0X19mb2xsb3dVcy0tSXRlbUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzb2NpYWxNZWRpYS5pdGVtcyB8fCBbXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjb250YWN0X19mb2xsb3dVcy0tSXRlbUxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIml0ZW0udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlPVwiZXh0ZXJuYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChhZGRyZXNzSW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2FkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3NJbmZvLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNvbnRhY3RfX2hlYWRpbmdcIj57eyBhZGRyZXNzSW5mby50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0X190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWRkcmVzc0luZm8udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImFkZHJlc3NJbmZvLnRleHRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFkZHJlc3NJbmZvLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJhZGRyZXNzSW5mby5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFkZHJlc3NJbmZvLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBhZGRyZXNzSW5mby5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChjb250YWN0SW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX2NvbnRhY3RMaW5rc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY29udGFjdEluZm8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY29udGFjdF9faGVhZGluZ1wiPnt7IGNvbnRhY3RJbmZvLnRpdGxlIH19PC9oMz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29udGFjdF9fbGlua3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdEluZm8ubGlua3MgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsIHwgY29udGFjdExpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxpbmsubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29udGFjdEluZm8uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJjb250YWN0SW5mby5idXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJjb250YWN0SW5mby5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnRhY3RJbmZvLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBjb250YWN0SW5mby5idXR0b24ubGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChuZXdzbGV0dGVySW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX25ld3NsZXR0ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKG5ld3NsZXR0ZXJJbmZvLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNvbnRhY3RfX2hlYWRpbmdcIj57eyBuZXdzbGV0dGVySW5mby50aXRsZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiY29udGFjdF9fdGV4dFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RfX25ld3NsZXR0ZXJCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1fX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvLmlucHV0UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGFjdF9fbmV3c2xldHRlci0taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLTYzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybV9fY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjY2hlY2tib3gtdGlja1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibmV3c2xldHRlckluZm8uY29uZGl0aW9uc0xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmV3c2xldHRlckluZm8uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyLW5vbmUnOiBmb3JtLmludmFsaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3c2xldHRlckluZm8uYnV0dG9uLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXdzbGV0dGVySW5mby5idXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==