@snabcentr/client-ui 3.17.12 → 3.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/sc-accordion.component.d.ts +5 -1
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +9 -1
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +9 -1
- package/delivery-address/sc-delivery-address.module.d.ts +2 -1
- package/esm2022/accordion/sc-accordion.component.mjs +8 -4
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +1 -1
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +1 -1
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +1 -1
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +14 -3
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +1 -1
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +17 -5
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +12 -5
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +4 -4
- package/esm2022/icons/sc-client-ui-icons-name.mjs +2 -1
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +42 -54
- package/esm2022/providers/index.mjs +2 -1
- package/esm2022/providers/sc-country-ids.mjs +6 -0
- package/esm2022/providers/sc-user-providers.mjs +24 -18
- package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +7 -7
- package/esm2022/services/sc-help-notification.service.mjs +11 -3
- package/fesm2022/snabcentr-client-ui.mjs +125 -93
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/icons/svg-pack/img/phone.svg +25 -0
- package/package.json +2 -2
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +21 -24
- package/providers/index.d.ts +1 -0
- package/providers/sc-country-ids.d.ts +5 -0
- package/providers/sc-user-providers.d.ts +10 -6
- package/release_notes.tmp +2 -2
- package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +5 -5
- package/services/sc-help-notification.service.d.ts +8 -0
- package/styles/tailwind/tailwind.scss +4 -0
package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs
CHANGED
@@ -41,19 +41,19 @@ export class ScPreviewSamplesMosquitoComponent {
|
|
41
41
|
*/
|
42
42
|
this.openConsultationClick = output();
|
43
43
|
/**
|
44
|
-
*
|
44
|
+
* Интервал автоматического прочитывания списка товаров в миллисекундах.
|
45
45
|
*/
|
46
|
-
this.
|
46
|
+
this.autoSlideIntervale = input(0);
|
47
47
|
/**
|
48
|
-
*
|
48
|
+
* Признак, что необходимо отображать переключатели на карусели.
|
49
49
|
*/
|
50
|
-
this.
|
50
|
+
this.isShowCarouselSwitches = input(!inject(TUI_IS_MOBILE));
|
51
51
|
}
|
52
52
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScPreviewSamplesMosquitoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScPreviewSamplesMosquitoComponent, isStandalone: true, selector: "sc-preview-samples-mosquito", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isShowCarouselSwitches: { classPropertyName: "isShowCarouselSwitches", publicName: "isShowCarouselSwitches", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConfiguratorClick: "openConfiguratorClick", openConsultationClick: "openConsultationClick" }, ngImport: i0, template: "@let descriptions = config().descriptions;\n@let colors = config().color;\n@let netTypes = config().netType;\n\n<!-- \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0441 \u0441\u0435\u0442\u043A\u043E\u0439. -->\n<div class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <!-- \u041B\u0435\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439. -->\n <div class=\"flex flex-col gap-4\">\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"flex flex-wrap gap-4\">\n <button\n *ngFor=\"let item of netTypes; let itemIndex = index\"\n tuiCardLarge\n tuiHeader\n tuiSurface=\"floating\"\n type=\"button\"\n (click)=\"netTypeIndex.set(itemIndex)\"\n [class.active]=\"netTypeIndex() === itemIndex\"\n class=\"h-12 !items-center gap-2 !rounded-xl !px-4 !py-0\"\n >\n <img\n [src]=\"config().icons[item]\"\n [alt]=\"descriptions['netType'][item]\"\n class=\"size-8\"\n />\n <div>{{ descriptions['netType'][item] }}</div>\n </button>\n </div>\n\n <!-- \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"text-body-l-bold\">\u0421\u0435\u0442\u043A\u0430 {{ descriptions['netType'][netTypeIndexSelected()] }}</div>\n {{ config().subtitles[netTypeIndexSelected()] }}\n\n <!-- \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0431\u0435\u0439\u0434\u0436\u0438. -->\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ colors.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0432\u0435\u0442\u043E\u0432 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\n </div>\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ netTypes.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0442\u0438\u043F\u043E\u0432 \u0441\u0435\u0442\u043E\u043A\n </div>\n\n <!-- \u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u0435\u0442\u043E\u043A. -->\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-height-arrow\" />\n \u0412\u044B\u0441\u043E\u0442\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minHeight }} \u0434\u043E {{ config().maxHeights[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-width-arrow\" />\n \u0428\u0438\u0440\u0438\u043D\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minWidth }} \u0434\u043E {{ config().maxWidths[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n\n <!-- \u0422\u0435\u0433\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A. -->\n <div class=\"flex flex-wrap gap-2\">\n <button\n *ngFor=\"let tag of config().tags[netTypeIndexSelected()]\"\n tuiChip\n appearance=\"neutral\"\n >\n {{ tag }}\n </button>\n </div>\n\n <!-- \u0412\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430 \u043F\u0440\u043E\u0444\u0438\u043B\u044F. -->\n <div class=\"flex gap-4\">\n <img\n *ngFor=\"let image of config().color; let itemIndex = index\"\n [src]=\"config().colorsIcons[image]\"\n [alt]=\"descriptions['color'][itemIndex]\"\n (tuiHoveredChange)=\"colorIndex.set(itemIndex)\"\n [class.active]=\"colorIndex() === itemIndex\"\n class=\"size-11 rounded-xl\"\n />\n </div>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. -->\n <div class=\"flex gap-2\">\n <button\n tuiButton\n (click)=\"openConfiguratorClick.emit()\"\n iconStart=\"@tui.sliders-horizontal\"\n >\n \u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0440\u0430\u0441\u0447\u0435\u0442\n </button>\n\n <button\n tuiButton\n (click)=\"openConsultationClick.emit()\"\n iconStart=\"@tui.messages-square\"\n >\n \u041A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044F\n </button>\n </div>\n </div>\n\n <!-- \u041F\u0440\u0430\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u043A\u0430\u0440\u0443\u0441\u0435\u043B\u044C\u044E \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. -->\n <div class=\"relative -order-1 h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:order-2 lg:h-[28rem]\">\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n (click)=\"carousel.prev()\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n #carousel\n [duration]=\"autoSlideIntervale\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n @for (item of config().imagePreviewsByColor[colorIndexSelected()]; track $index) {\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n }\n </tui-carousel>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n (click)=\"carousel.next()\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}img.active{--tw-ring-color: var(--tui-background-accent-1);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}button[tuicardlarge]{border:solid 2px white}button[tuicardlarge].active{border-color:var(--tui-background-accent-1)}\n"], dependencies: [{ kind: "directive", type: i1.TuiItem, selector: "[tuiItem]" }, { kind: "component", type: i2.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiChip, selector: "tui-chip,[tuiChip]", inputs: ["size"] }, { kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiCardLarge, selector: "[tuiCardLarge]", inputs: ["tuiCardLarge"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "directive", type: TuiSurface, selector: "[tuiSurface]", inputs: ["tuiSurface"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScPreviewSamplesMosquitoComponent, isStandalone: true, selector: "sc-preview-samples-mosquito", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, autoSlideIntervale: { classPropertyName: "autoSlideIntervale", publicName: "autoSlideIntervale", isSignal: true, isRequired: false, transformFunction: null }, isShowCarouselSwitches: { classPropertyName: "isShowCarouselSwitches", publicName: "isShowCarouselSwitches", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openConfiguratorClick: "openConfiguratorClick", openConsultationClick: "openConsultationClick" }, ngImport: i0, template: "@let descriptions = config().descriptions;\n@let colors = config().color;\n@let netTypes = config().netType;\n\n<!-- \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0441 \u0441\u0435\u0442\u043A\u043E\u0439. -->\n<div class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <!-- \u041B\u0435\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439. -->\n <div class=\"flex flex-col gap-4\">\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"flex flex-wrap gap-4\">\n <button\n *ngFor=\"let item of netTypes; let itemIndex = index\"\n tuiCardLarge\n tuiHeader\n tuiSurface=\"floating\"\n type=\"button\"\n (click)=\"netTypeIndex.set(itemIndex)\"\n [class.active]=\"netTypeIndex() === itemIndex\"\n class=\"h-12 !items-center gap-2 !rounded-xl !px-4 !py-0\"\n >\n <img\n [src]=\"config().icons[item]\"\n [alt]=\"descriptions['netType'][item]\"\n class=\"size-8\"\n />\n <div>{{ descriptions['netType'][item] }}</div>\n </button>\n </div>\n\n <!-- \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"text-body-l-bold\">\u0421\u0435\u0442\u043A\u0430 {{ descriptions['netType'][netTypeIndexSelected()] }}</div>\n {{ config().subtitles[netTypeIndexSelected()] }}\n\n <!-- \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0431\u0435\u0439\u0434\u0436\u0438. -->\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ colors.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0432\u0435\u0442\u043E\u0432 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\n </div>\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ netTypes.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0442\u0438\u043F\u043E\u0432 \u0441\u0435\u0442\u043E\u043A\n </div>\n\n <!-- \u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u0435\u0442\u043E\u043A. -->\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-height-arrow\" />\n \u0412\u044B\u0441\u043E\u0442\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minHeight }} \u0434\u043E {{ config().maxHeights[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-width-arrow\" />\n \u0428\u0438\u0440\u0438\u043D\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minWidth }} \u0434\u043E {{ config().maxWidths[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n\n <!-- \u0422\u0435\u0433\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A. -->\n <div class=\"flex flex-wrap gap-2\">\n <button\n *ngFor=\"let tag of config().tags[netTypeIndexSelected()]\"\n tuiChip\n appearance=\"neutral\"\n >\n {{ tag }}\n </button>\n </div>\n\n <!-- \u0412\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430 \u043F\u0440\u043E\u0444\u0438\u043B\u044F. -->\n <div class=\"flex gap-4\">\n <img\n *ngFor=\"let image of config().color; let itemIndex = index\"\n [src]=\"config().colorsIcons[image]\"\n [alt]=\"descriptions['color'][itemIndex]\"\n (tuiHoveredChange)=\"colorIndex.set(itemIndex)\"\n [class.active]=\"colorIndex() === itemIndex\"\n class=\"size-11 rounded-xl\"\n />\n </div>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. -->\n <div class=\"flex gap-2\">\n <button\n tuiButton\n (click)=\"openConfiguratorClick.emit()\"\n iconStart=\"@tui.sliders-horizontal\"\n >\n \u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0440\u0430\u0441\u0447\u0435\u0442\n </button>\n\n <button\n tuiButton\n (click)=\"openConsultationClick.emit()\"\n iconStart=\"@tui.messages-square\"\n >\n \u041A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044F\n </button>\n </div>\n </div>\n\n <!-- \u041F\u0440\u0430\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u043A\u0430\u0440\u0443\u0441\u0435\u043B\u044C\u044E \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. -->\n <div class=\"relative -order-1 h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:order-2 lg:h-[28rem]\">\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n (click)=\"carousel.prev()\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n #carousel\n [duration]=\"autoSlideIntervale()\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n @for (item of config().imagePreviewsByColor[colorIndexSelected()]; track $index) {\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n }\n </tui-carousel>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n (click)=\"carousel.next()\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}img.active{--tw-ring-color: var(--tui-background-accent-1);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}button[tuicardlarge]{border:solid 2px white}button[tuicardlarge].active{border-color:var(--tui-background-accent-1)}\n"], dependencies: [{ kind: "directive", type: i1.TuiItem, selector: "[tuiItem]" }, { kind: "component", type: i2.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiChip, selector: "tui-chip,[tuiChip]", inputs: ["size"] }, { kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiCardLarge, selector: "[tuiCardLarge]", inputs: ["tuiCardLarge"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "directive", type: TuiSurface, selector: "[tuiSurface]", inputs: ["tuiSurface"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
54
54
|
}
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScPreviewSamplesMosquitoComponent, decorators: [{
|
56
56
|
type: Component,
|
57
|
-
args: [{ standalone: true, selector: 'sc-preview-samples-mosquito', imports: [TuiCarousel, TuiButton, TuiIcon, TuiChip, TuiBadge, NgFor, TuiAppearance, TuiHovered, TuiCardLarge, TuiHeader, TuiIcon, TuiSurface], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let descriptions = config().descriptions;\n@let colors = config().color;\n@let netTypes = config().netType;\n\n<!-- \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0441 \u0441\u0435\u0442\u043A\u043E\u0439. -->\n<div class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <!-- \u041B\u0435\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439. -->\n <div class=\"flex flex-col gap-4\">\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"flex flex-wrap gap-4\">\n <button\n *ngFor=\"let item of netTypes; let itemIndex = index\"\n tuiCardLarge\n tuiHeader\n tuiSurface=\"floating\"\n type=\"button\"\n (click)=\"netTypeIndex.set(itemIndex)\"\n [class.active]=\"netTypeIndex() === itemIndex\"\n class=\"h-12 !items-center gap-2 !rounded-xl !px-4 !py-0\"\n >\n <img\n [src]=\"config().icons[item]\"\n [alt]=\"descriptions['netType'][item]\"\n class=\"size-8\"\n />\n <div>{{ descriptions['netType'][item] }}</div>\n </button>\n </div>\n\n <!-- \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"text-body-l-bold\">\u0421\u0435\u0442\u043A\u0430 {{ descriptions['netType'][netTypeIndexSelected()] }}</div>\n {{ config().subtitles[netTypeIndexSelected()] }}\n\n <!-- \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0431\u0435\u0439\u0434\u0436\u0438. -->\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ colors.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0432\u0435\u0442\u043E\u0432 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\n </div>\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ netTypes.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0442\u0438\u043F\u043E\u0432 \u0441\u0435\u0442\u043E\u043A\n </div>\n\n <!-- \u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u0435\u0442\u043E\u043A. -->\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-height-arrow\" />\n \u0412\u044B\u0441\u043E\u0442\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minHeight }} \u0434\u043E {{ config().maxHeights[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-width-arrow\" />\n \u0428\u0438\u0440\u0438\u043D\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minWidth }} \u0434\u043E {{ config().maxWidths[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n\n <!-- \u0422\u0435\u0433\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A. -->\n <div class=\"flex flex-wrap gap-2\">\n <button\n *ngFor=\"let tag of config().tags[netTypeIndexSelected()]\"\n tuiChip\n appearance=\"neutral\"\n >\n {{ tag }}\n </button>\n </div>\n\n <!-- \u0412\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430 \u043F\u0440\u043E\u0444\u0438\u043B\u044F. -->\n <div class=\"flex gap-4\">\n <img\n *ngFor=\"let image of config().color; let itemIndex = index\"\n [src]=\"config().colorsIcons[image]\"\n [alt]=\"descriptions['color'][itemIndex]\"\n (tuiHoveredChange)=\"colorIndex.set(itemIndex)\"\n [class.active]=\"colorIndex() === itemIndex\"\n class=\"size-11 rounded-xl\"\n />\n </div>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. -->\n <div class=\"flex gap-2\">\n <button\n tuiButton\n (click)=\"openConfiguratorClick.emit()\"\n iconStart=\"@tui.sliders-horizontal\"\n >\n \u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0440\u0430\u0441\u0447\u0435\u0442\n </button>\n\n <button\n tuiButton\n (click)=\"openConsultationClick.emit()\"\n iconStart=\"@tui.messages-square\"\n >\n \u041A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044F\n </button>\n </div>\n </div>\n\n <!-- \u041F\u0440\u0430\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u043A\u0430\u0440\u0443\u0441\u0435\u043B\u044C\u044E \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. -->\n <div class=\"relative -order-1 h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:order-2 lg:h-[28rem]\">\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n (click)=\"carousel.prev()\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n #carousel\n [duration]=\"autoSlideIntervale\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n @for (item of config().imagePreviewsByColor[colorIndexSelected()]; track $index) {\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n }\n </tui-carousel>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n (click)=\"carousel.next()\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}img.active{--tw-ring-color: var(--tui-background-accent-1);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}button[tuicardlarge]{border:solid 2px white}button[tuicardlarge].active{border-color:var(--tui-background-accent-1)}\n"] }]
|
57
|
+
args: [{ standalone: true, selector: 'sc-preview-samples-mosquito', imports: [TuiCarousel, TuiButton, TuiIcon, TuiChip, TuiBadge, NgFor, TuiAppearance, TuiHovered, TuiCardLarge, TuiHeader, TuiIcon, TuiSurface], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let descriptions = config().descriptions;\n@let colors = config().color;\n@let netTypes = config().netType;\n\n<!-- \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 \u0441 \u0441\u0435\u0442\u043A\u043E\u0439. -->\n<div class=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <!-- \u041B\u0435\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0435\u0439. -->\n <div class=\"flex flex-col gap-4\">\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"flex flex-wrap gap-4\">\n <button\n *ngFor=\"let item of netTypes; let itemIndex = index\"\n tuiCardLarge\n tuiHeader\n tuiSurface=\"floating\"\n type=\"button\"\n (click)=\"netTypeIndex.set(itemIndex)\"\n [class.active]=\"netTypeIndex() === itemIndex\"\n class=\"h-12 !items-center gap-2 !rounded-xl !px-4 !py-0\"\n >\n <img\n [src]=\"config().icons[item]\"\n [alt]=\"descriptions['netType'][item]\"\n class=\"size-8\"\n />\n <div>{{ descriptions['netType'][item] }}</div>\n </button>\n </div>\n\n <!-- \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0441\u0435\u0442\u043A\u0438. -->\n <div class=\"text-body-l-bold\">\u0421\u0435\u0442\u043A\u0430 {{ descriptions['netType'][netTypeIndexSelected()] }}</div>\n {{ config().subtitles[netTypeIndexSelected()] }}\n\n <!-- \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0431\u0435\u0439\u0434\u0436\u0438. -->\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ colors.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0432\u0435\u0442\u043E\u0432 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\n </div>\n <div class=\"flex flex-wrap items-center gap-1 text-body-m\">\n <tui-badge\n appearance=\"custom\"\n class=\"rounded-full border-2 border-solid border-tui-text-primary bg-white !p-[0.4rem] font-bold text-tui-text-primary\"\n >\n {{ netTypes.length }}\n </tui-badge>\n - \u043A\u043E\u043B\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0442\u0438\u043F\u043E\u0432 \u0441\u0435\u0442\u043E\u043A\n </div>\n\n <!-- \u0420\u0430\u0437\u043C\u0435\u0440\u044B \u0441\u0435\u0442\u043E\u043A. -->\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-height-arrow\" />\n \u0412\u044B\u0441\u043E\u0442\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minHeight }} \u0434\u043E {{ config().maxHeights[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n <div class=\"text-body-m\">\n <tui-icon icon=\"@tui.sc.grid-width-arrow\" />\n \u0428\u0438\u0440\u0438\u043D\u0430 \u0441\u0435\u0442\u043E\u043A \u043E\u0442 {{ config().minWidth }} \u0434\u043E {{ config().maxWidths[netTypeIndexSelected()] }} \u043C\u043C\n </div>\n\n <!-- \u0422\u0435\u0433\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A. -->\n <div class=\"flex flex-wrap gap-2\">\n <button\n *ngFor=\"let tag of config().tags[netTypeIndexSelected()]\"\n tuiChip\n appearance=\"neutral\"\n >\n {{ tag }}\n </button>\n </div>\n\n <!-- \u0412\u044B\u0431\u043E\u0440 \u0446\u0432\u0435\u0442\u0430 \u043F\u0440\u043E\u0444\u0438\u043B\u044F. -->\n <div class=\"flex gap-4\">\n <img\n *ngFor=\"let image of config().color; let itemIndex = index\"\n [src]=\"config().colorsIcons[image]\"\n [alt]=\"descriptions['color'][itemIndex]\"\n (tuiHoveredChange)=\"colorIndex.set(itemIndex)\"\n [class.active]=\"colorIndex() === itemIndex\"\n class=\"size-11 rounded-xl\"\n />\n </div>\n\n <!-- \u041A\u043D\u043E\u043F\u043A\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. -->\n <div class=\"flex gap-2\">\n <button\n tuiButton\n (click)=\"openConfiguratorClick.emit()\"\n iconStart=\"@tui.sliders-horizontal\"\n >\n \u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0440\u0430\u0441\u0447\u0435\u0442\n </button>\n\n <button\n tuiButton\n (click)=\"openConsultationClick.emit()\"\n iconStart=\"@tui.messages-square\"\n >\n \u041A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044F\n </button>\n </div>\n </div>\n\n <!-- \u041F\u0440\u0430\u0432\u0430\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0430 \u0441 \u043A\u0430\u0440\u0443\u0441\u0435\u043B\u044C\u044E \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. -->\n <div class=\"relative -order-1 h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:order-2 lg:h-[28rem]\">\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n (click)=\"carousel.prev()\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n #carousel\n [duration]=\"autoSlideIntervale()\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n @for (item of config().imagePreviewsByColor[colorIndexSelected()]; track $index) {\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n }\n </tui-carousel>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n (click)=\"carousel.next()\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}img.active{--tw-ring-color: var(--tui-background-accent-1);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}button[tuicardlarge]{border:solid 2px white}button[tuicardlarge].active{border-color:var(--tui-background-accent-1)}\n"] }]
|
58
58
|
}] });
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJldmlldy1zYW1wbGVzLW1vc3F1aXRvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zYW1wbGVzL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by9zYy1wcmV2aWV3LXNhbXBsZXMtbW9zcXVpdG8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3NhbXBsZXMvc2MtcHJldmlldy1zYW1wbGVzLW1vc3F1aXRvL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQTRCLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBSTNEOztHQUVHO0FBU0gsTUFBTSxPQUFPLGlDQUFpQztJQVI5QztRQVNJOztXQUVHO1FBQ2EsZUFBVSxHQUEyQixNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFdkU7O1dBRUc7UUFDYSxpQkFBWSxHQUEyQixNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDYSx5QkFBb0IsR0FBbUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsSDs7V0FFRztRQUNhLHVCQUFrQixHQUFtQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVHOztXQUVHO1FBQ2EsV0FBTSxHQUF5QyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO1FBRXpHOztXQUVHO1FBQ2EsMEJBQXFCLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRXpFOztXQUVHO1FBQ2EsMEJBQXFCLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRXpFOztXQUVHO1FBQ2dCLDJCQUFzQixHQUF5QixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUVoRzs7V0FFRztRQUNnQix1QkFBa0IsR0FBVyxJQUFJLENBQUM7S0FDeEQ7K0dBN0NZLGlDQUFpQzttR0FBakMsaUNBQWlDLHFmQ3BCOUMsaXdOQTBJQSwwekJEekgyQixTQUFTLG9JQUFFLE9BQU8scUZBQUUsT0FBTyxpRkFBRSxRQUFRLG1GQUFFLEtBQUssbUhBQWlCLFVBQVUsOEZBQUUsWUFBWSxxRkFBRSxTQUFTLCtFQUFXLFVBQVU7OzRGQUduSSxpQ0FBaUM7a0JBUjdDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDZCQUE2QixXQUc5QixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLG1CQUM1SCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVFVJX0lTX01PQklMRSwgVHVpSG92ZXJlZCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpQnV0dG9uLCBUdWlJY29uLCBUdWlTdXJmYWNlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQmFkZ2UsIFR1aUNhcm91c2VsLCBUdWlDaGlwIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlDYXJkTGFyZ2UsIFR1aUhlYWRlciB9IGZyb20gJ0B0YWlnYS11aS9sYXlvdXQnO1xuXG5pbXBvcnQgeyBTY1ByZXZpZXdNb3NxdWl0b0NvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRjyDQvNC+0YHQutC40YLQvdC+0Lkg0YHQtdGC0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0bycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by5jb21wb25lbnQuc2NzcycsXG4gICAgaW1wb3J0czogW1R1aUNhcm91c2VsLCBUdWlCdXR0b24sIFR1aUljb24sIFR1aUNoaXAsIFR1aUJhZGdlLCBOZ0ZvciwgVHVpQXBwZWFyYW5jZSwgVHVpSG92ZXJlZCwgVHVpQ2FyZExhcmdlLCBUdWlIZWFkZXIsIFR1aUljb24sIFR1aVN1cmZhY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1ByZXZpZXdTYW1wbGVzTW9zcXVpdG9Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDQuNC90LTQtdC60YEg0YbQstC10YLQsCDQv9GA0L7RhNC40LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sb3JJbmRleDogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gICAgLyoqXG4gICAgICog0JLRi9Cx0YDQsNC90L3Ri9C5INC40L3QtNC10LrRgSDRgtC40L/QsCDRgdC10YLQutC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBuZXRUeXBlSW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDRgtC40L8g0YHQtdGC0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV0VHlwZUluZGV4U2VsZWN0ZWQ6IFNpZ25hbDxzdHJpbmc+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5uZXRUeXBlW3RoaXMubmV0VHlwZUluZGV4KCldKTtcblxuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDRhtCy0LXRgiDQv9GA0L7RhNC40LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sb3JJbmRleFNlbGVjdGVkOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuY29sb3JbdGhpcy5jb2xvckluZGV4KCldKTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQvtCx0YDQsNC30YbQsCDQvNC+0YHQutC40YLQvdC+0Lkg0YHQtdGC0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBJbnB1dFNpZ25hbDxTY1ByZXZpZXdNb3NxdWl0b0NvbmZpZz4gPSBpbnB1dC5yZXF1aXJlZDxTY1ByZXZpZXdNb3NxdWl0b0NvbmZpZz4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1LCDQutC+0YLQvtGA0L7QtSDQv9GA0L7QuNGB0YXQvtC00LjRgiDQv9GA0Lgg0L3QsNC20LDRgtC40Lgg0L3QsCDQutC90L7Qv9C60YMgXCLQndCw0LfQsNC0INCyINCa0L7QvdGE0LjQs9GD0YDQsNGC0L7RgFwiLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvcGVuQ29uZmlndXJhdG9yQ2xpY2s6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1LCDQutC+0YLQvtGA0L7QtSDQv9GA0L7QuNGB0YXQvtC00LjRgiDQv9GA0Lgg0L3QsNC20LDRgtC40Lgg0L3QsCDQutC90L7Qv9C60YMgXCLQmtC+0L3RgdGD0LvRjNGC0LDRhtC40Y9cIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BlbkNvbnN1bHRhdGlvbkNsaWNrOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC20LDRgtGMINC/0LXRgNC10LrQu9GO0YfQsNGC0LXQu9C4INC90LAg0LrQsNGA0YPRgdC10LvQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTaG93Q2Fyb3VzZWxTd2l0Y2hlczogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dCghaW5qZWN0KFRVSV9JU19NT0JJTEUpKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3RgtC10YDQstCw0Lsg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INC/0YDQvtGH0LjRgtGL0LLQsNC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LIg0LzQuNC70LvQuNGB0LXQutGD0L3QtNCw0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1dG9TbGlkZUludGVydmFsZTogbnVtYmVyID0gNTAwMDtcbn1cbiIsIkBsZXQgZGVzY3JpcHRpb25zID0gY29uZmlnKCkuZGVzY3JpcHRpb25zO1xuQGxldCBjb2xvcnMgPSBjb25maWcoKS5jb2xvcjtcbkBsZXQgbmV0VHlwZXMgPSBjb25maWcoKS5uZXRUeXBlO1xuXG48IS0tINCe0YHQvdC+0LLQvdC+0Lkg0LrQvtC90YLQtdC50L3QtdGAINGBINGB0LXRgtC60L7QuS4gLS0+XG48ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBsZzpncmlkLWNvbHMtMlwiPlxuICAgIDwhLS0g0JvQtdCy0LDRjyDQutC+0LvQvtC90LrQsCDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5LiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICA8IS0tINCa0L3QvtC/0LrQuCDQstGL0LHQvtGA0LAg0YLQuNC/0LAg0YHQtdGC0LrQuC4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtNFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5ldFR5cGVzOyBsZXQgaXRlbUluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIHR1aUNhcmRMYXJnZVxuICAgICAgICAgICAgICAgIHR1aUhlYWRlclxuICAgICAgICAgICAgICAgIHR1aVN1cmZhY2U9XCJmbG9hdGluZ1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5ldFR5cGVJbmRleC5zZXQoaXRlbUluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJuZXRUeXBlSW5kZXgoKSA9PT0gaXRlbUluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTIgIWl0ZW1zLWNlbnRlciBnYXAtMiAhcm91bmRlZC14bCAhcHgtNCAhcHktMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbmZpZygpLmljb25zW2l0ZW1dXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJkZXNjcmlwdGlvbnNbJ25ldFR5cGUnXVtpdGVtXVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS04XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZGVzY3JpcHRpb25zWyduZXRUeXBlJ11baXRlbV0gfX08L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tINCe0L/QuNGB0LDQvdC40LUg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0YLQuNC/0LAg0YHQtdGC0LrQuC4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktbC1ib2xkXCI+0KHQtdGC0LrQsCB7eyBkZXNjcmlwdGlvbnNbJ25ldFR5cGUnXVtuZXRUeXBlSW5kZXhTZWxlY3RlZCgpXSB9fTwvZGl2PlxuICAgICAgICB7eyBjb25maWcoKS5zdWJ0aXRsZXNbbmV0VHlwZUluZGV4U2VsZWN0ZWQoKV0gfX1cblxuICAgICAgICA8IS0tINCY0L3RhNC+0YDQvNCw0YbQuNC+0L3QvdGL0LUg0LHQtdC50LTQttC4LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LWJvZHktbVwiPlxuICAgICAgICAgICAgPHR1aS1iYWRnZVxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJjdXN0b21cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1zb2xpZCBib3JkZXItdHVpLXRleHQtcHJpbWFyeSBiZy13aGl0ZSAhcC1bMC40cmVtXSBmb250LWJvbGQgdGV4dC10dWktdGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb2xvcnMubGVuZ3RoIH19XG4gICAgICAgICAgICA8L3R1aS1iYWRnZT5cbiAgICAgICAgICAgIC0g0LrQvtC70LvQuNGH0LXRgdGC0LLQviDRhtCy0LXRgtC+0LIg0L/RgNC+0YTQuNC70Y9cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1ib2R5LW1cIj5cbiAgICAgICAgICAgIDx0dWktYmFkZ2VcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiY3VzdG9tXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItc29saWQgYm9yZGVyLXR1aS10ZXh0LXByaW1hcnkgYmctd2hpdGUgIXAtWzAuNHJlbV0gZm9udC1ib2xkIHRleHQtdHVpLXRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbmV0VHlwZXMubGVuZ3RoIH19XG4gICAgICAgICAgICA8L3R1aS1iYWRnZT5cbiAgICAgICAgICAgIC0g0LrQvtC70LvQuNGH0LXRgdGC0LLQviDRgtC40L/QvtCyINGB0LXRgtC+0LpcbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSDQoNCw0LfQvNC10YDRiyDRgdC10YLQvtC6LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYm9keS1tXCI+XG4gICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkuc2MuZ3JpZC1oZWlnaHQtYXJyb3dcIiAvPlxuICAgICAgICAgICAg0JLRi9GB0L7RgtCwINGB0LXRgtC+0Log0L7RgiB7eyBjb25maWcoKS5taW5IZWlnaHQgfX0g0LTQviB7eyBjb25maWcoKS5tYXhIZWlnaHRzW25ldFR5cGVJbmRleFNlbGVjdGVkKCldIH19INC80LxcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktbVwiPlxuICAgICAgICAgICAgPHR1aS1pY29uIGljb249XCJAdHVpLnNjLmdyaWQtd2lkdGgtYXJyb3dcIiAvPlxuICAgICAgICAgICAg0KjQuNGA0LjQvdCwINGB0LXRgtC+0Log0L7RgiB7eyBjb25maWcoKS5taW5XaWR0aCB9fSDQtNC+IHt7IGNvbmZpZygpLm1heFdpZHRoc1tuZXRUeXBlSW5kZXhTZWxlY3RlZCgpXSB9fSDQvNC8XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0g0KLQtdCz0Lgg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LouIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIGNvbmZpZygpLnRhZ3NbbmV0VHlwZUluZGV4U2VsZWN0ZWQoKV1cIlxuICAgICAgICAgICAgICAgIHR1aUNoaXBcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwibmV1dHJhbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdGFnIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSDQktGL0LHQvtGAINGG0LLQtdGC0LAg0L/RgNC+0YTQuNC70Y8uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBjb25maWcoKS5jb2xvcjsgbGV0IGl0ZW1JbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImNvbmZpZygpLmNvbG9yc0ljb25zW2ltYWdlXVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJkZXNjcmlwdGlvbnNbJ2NvbG9yJ11baXRlbUluZGV4XVwiXG4gICAgICAgICAgICAgICAgKHR1aUhvdmVyZWRDaGFuZ2UpPVwiY29sb3JJbmRleC5zZXQoaXRlbUluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjb2xvckluZGV4KCkgPT09IGl0ZW1JbmRleFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLTExIHJvdW5kZWQteGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSDQmtC90L7Qv9C60Lgg0LTQtdC50YHRgtCy0LjQuS4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db25maWd1cmF0b3JDbGljay5lbWl0KClcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2xpZGVycy1ob3Jpem9udGFsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQodC00LXQu9Cw0YLRjCDRgNCw0YHRh9C10YJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db25zdWx0YXRpb25DbGljay5lbWl0KClcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkubWVzc2FnZXMtc3F1YXJlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQmtC+0L3RgdGD0LvRjNGC0LDRhtC40Y9cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g0J/RgNCw0LLQsNGPINC60L7Qu9C+0L3QutCwINGBINC60LDRgNGD0YHQtdC70YzRjiDQuNC30L7QsdGA0LDQttC10L3QuNC5LiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgLW9yZGVyLTEgaC1bMTllbV0gZmxleC0xIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsIHNoYWRvdy10dWktc2hhZG93IG1kOmgtOTYgbGc6b3JkZXItMiBsZzpoLVsyOHJlbV1cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhcm91c2VsLnByZXYoKVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICBjbGFzcz1cIiFhYnNvbHV0ZSBsZWZ0LTAgdG9wLTEvMiB6LTEwIG1sLTIgLXRyYW5zbGF0ZS15LTEvMlwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8dHVpLWNhcm91c2VsXG4gICAgICAgICAgICAjY2Fyb3VzZWxcbiAgICAgICAgICAgIFtkdXJhdGlvbl09XCJhdXRvU2xpZGVJbnRlcnZhbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJoLVsxOWVtXSB3LWZ1bGwgbWQ6aC05NiBsZzpoLVsyOHJlbV1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGNvbmZpZygpLmltYWdlUHJldmlld3NCeUNvbG9yW2NvbG9ySW5kZXhTZWxlY3RlZCgpXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqdHVpSXRlbVxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIid1cmwoJyArIGl0ZW0gKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtWzE5ZW1dIHctZnVsbCBiZy1jb3ZlciBiZy1yaWdodCBtZDpoLTk2IGxnOmgtWzI4cmVtXVwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3R1aS1jYXJvdXNlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5jaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJvdXNlbC5uZXh0KClcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMCB0b3AtMS8yIHotMTAgbXItMiAtdHJhbnNsYXRlLXktMS8yXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJldmlldy1zYW1wbGVzLW1vc3F1aXRvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zYW1wbGVzL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by9zYy1wcmV2aWV3LXNhbXBsZXMtbW9zcXVpdG8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3NhbXBsZXMvc2MtcHJldmlldy1zYW1wbGVzLW1vc3F1aXRvL3NjLXByZXZpZXctc2FtcGxlcy1tb3NxdWl0by5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxNQUFNLEVBQTRCLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBSTNEOztHQUVHO0FBU0gsTUFBTSxPQUFPLGlDQUFpQztJQVI5QztRQVNJOztXQUVHO1FBQ2EsZUFBVSxHQUEyQixNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFdkU7O1dBRUc7UUFDYSxpQkFBWSxHQUEyQixNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDYSx5QkFBb0IsR0FBbUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsSDs7V0FFRztRQUNhLHVCQUFrQixHQUFtQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVHOztXQUVHO1FBQ2EsV0FBTSxHQUF5QyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO1FBRXpHOztXQUVHO1FBQ2EsMEJBQXFCLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRXpFOztXQUVHO1FBQ2EsMEJBQXFCLEdBQTJCLE1BQU0sRUFBRSxDQUFDO1FBRXpFOztXQUVHO1FBQ2EsdUJBQWtCLEdBQXdCLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUUzRTs7V0FFRztRQUNnQiwyQkFBc0IsR0FBeUIsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7K0dBN0NZLGlDQUFpQzttR0FBakMsaUNBQWlDLG9wQkNwQjlDLG13TkEwSUEsMHpCRHpIMkIsU0FBUyxvSUFBRSxPQUFPLHFGQUFFLE9BQU8saUZBQUUsUUFBUSxtRkFBRSxLQUFLLG1IQUFpQixVQUFVLDhGQUFFLFlBQVkscUZBQUUsU0FBUywrRUFBVyxVQUFVOzs0RkFHbkksaUNBQWlDO2tCQVI3QyxTQUFTO2lDQUNNLElBQUksWUFDTiw2QkFBNkIsV0FHOUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxtQkFDNUgsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmLCBTaWduYWwsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIFR1aUhvdmVyZWQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUFwcGVhcmFuY2UsIFR1aUJ1dHRvbiwgVHVpSWNvbiwgVHVpU3VyZmFjZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUJhZGdlLCBUdWlDYXJvdXNlbCwgVHVpQ2hpcCB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpQ2FyZExhcmdlLCBUdWlIZWFkZXIgfSBmcm9tICdAdGFpZ2EtdWkvbGF5b3V0JztcblxuaW1wb3J0IHsgU2NQcmV2aWV3TW9zcXVpdG9Db25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8g0LzQvtGB0LrQuNGC0L3QvtC5INGB0LXRgtC60LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1wcmV2aWV3LXNhbXBsZXMtbW9zcXVpdG8nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1wcmV2aWV3LXNhbXBsZXMtbW9zcXVpdG8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zYy1wcmV2aWV3LXNhbXBsZXMtbW9zcXVpdG8uY29tcG9uZW50LnNjc3MnLFxuICAgIGltcG9ydHM6IFtUdWlDYXJvdXNlbCwgVHVpQnV0dG9uLCBUdWlJY29uLCBUdWlDaGlwLCBUdWlCYWRnZSwgTmdGb3IsIFR1aUFwcGVhcmFuY2UsIFR1aUhvdmVyZWQsIFR1aUNhcmRMYXJnZSwgVHVpSGVhZGVyLCBUdWlJY29uLCBUdWlTdXJmYWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcmV2aWV3U2FtcGxlc01vc3F1aXRvQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQktGL0LHRgNCw0L3QvdGL0Lkg0LjQvdC00LXQutGBINGG0LLQtdGC0LAg0L/RgNC+0YTQuNC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbG9ySW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDQuNC90LTQtdC60YEg0YLQuNC/0LAg0YHQtdGC0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmV0VHlwZUluZGV4OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LHRgNCw0L3QvdGL0Lkg0YLQuNC/INGB0LXRgtC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG5ldFR5cGVJbmRleFNlbGVjdGVkOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkubmV0VHlwZVt0aGlzLm5ldFR5cGVJbmRleCgpXSk7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LHRgNCw0L3QvdGL0Lkg0YbQstC10YIg0L/RgNC+0YTQuNC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbG9ySW5kZXhTZWxlY3RlZDogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmNvbG9yW3RoaXMuY29sb3JJbmRleCgpXSk7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40Y8g0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L7QsdGA0LDQt9GG0LAg0LzQvtGB0LrQuNGC0L3QvtC5INGB0LXRgtC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogSW5wdXRTaWduYWw8U2NQcmV2aWV3TW9zcXVpdG9Db25maWc+ID0gaW5wdXQucmVxdWlyZWQ8U2NQcmV2aWV3TW9zcXVpdG9Db25maWc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSwg0LrQvtGC0L7RgNC+0LUg0L/RgNC+0LjRgdGF0L7QtNC40YIg0L/RgNC4INC90LDQttCw0YLQuNC4INC90LAg0LrQvdC+0L/QutGDIFwi0J3QsNC30LDQtCDQsiDQmtC+0L3RhNC40LPRg9GA0LDRgtC+0YBcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BlbkNvbmZpZ3VyYXRvckNsaWNrOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSwg0LrQvtGC0L7RgNC+0LUg0L/RgNC+0LjRgdGF0L7QtNC40YIg0L/RgNC4INC90LDQttCw0YLQuNC4INC90LAg0LrQvdC+0L/QutGDIFwi0JrQvtC90YHRg9C70YzRgtCw0YbQuNGPXCIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9wZW5Db25zdWx0YXRpb25DbGljazogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdGC0LXRgNCy0LDQuyDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtCz0L4g0L/RgNC+0YfQuNGC0YvQstCw0L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQsiDQvNC40LvQu9C40YHQtdC60YPQvdC00LDRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0b1NsaWRlSW50ZXJ2YWxlOiBJbnB1dFNpZ25hbDxudW1iZXI+ID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0L/QtdGA0LXQutC70Y7Rh9Cw0YLQtdC70Lgg0L3QsCDQutCw0YDRg9GB0LXQu9C4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1Nob3dDYXJvdXNlbFN3aXRjaGVzOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KCFpbmplY3QoVFVJX0lTX01PQklMRSkpO1xufVxuIiwiQGxldCBkZXNjcmlwdGlvbnMgPSBjb25maWcoKS5kZXNjcmlwdGlvbnM7XG5AbGV0IGNvbG9ycyA9IGNvbmZpZygpLmNvbG9yO1xuQGxldCBuZXRUeXBlcyA9IGNvbmZpZygpLm5ldFR5cGU7XG5cbjwhLS0g0J7RgdC90L7QstC90L7QuSDQutC+0L3RgtC10LnQvdC10YAg0YEg0YHQtdGC0LrQvtC5LiAtLT5cbjxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC00IGxnOmdyaWQtY29scy0yXCI+XG4gICAgPCEtLSDQm9C10LLQsNGPINC60L7Qu9C+0L3QutCwINGBINC40L3RhNC+0YDQvNCw0YbQuNC10LkuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICAgIDwhLS0g0JrQvdC+0L/QutC4INCy0YvQsdC+0YDQsCDRgtC40L/QsCDRgdC10YLQutC4LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC00XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbmV0VHlwZXM7IGxldCBpdGVtSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgdHVpQ2FyZExhcmdlXG4gICAgICAgICAgICAgICAgdHVpSGVhZGVyXG4gICAgICAgICAgICAgICAgdHVpU3VyZmFjZT1cImZsb2F0aW5nXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV0VHlwZUluZGV4LnNldChpdGVtSW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIm5ldFR5cGVJbmRleCgpID09PSBpdGVtSW5kZXhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMiAhaXRlbXMtY2VudGVyIGdhcC0yICFyb3VuZGVkLXhsICFweC00ICFweS0wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29uZmlnKCkuaWNvbnNbaXRlbV1cIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImRlc2NyaXB0aW9uc1snbmV0VHlwZSddW2l0ZW1dXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLThcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdj57eyBkZXNjcmlwdGlvbnNbJ25ldFR5cGUnXVtpdGVtXSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0g0J7Qv9C40YHQsNC90LjQtSDQstGL0LHRgNCw0L3QvdC+0LPQviDRgtC40L/QsCDRgdC10YLQutC4LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYm9keS1sLWJvbGRcIj7QodC10YLQutCwIHt7IGRlc2NyaXB0aW9uc1snbmV0VHlwZSddW25ldFR5cGVJbmRleFNlbGVjdGVkKCldIH19PC9kaXY+XG4gICAgICAgIHt7IGNvbmZpZygpLnN1YnRpdGxlc1tuZXRUeXBlSW5kZXhTZWxlY3RlZCgpXSB9fVxuXG4gICAgICAgIDwhLS0g0JjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvQtSDQsdC10LnQtNC20LguIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtYm9keS1tXCI+XG4gICAgICAgICAgICA8dHVpLWJhZGdlXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImN1c3RvbVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXNvbGlkIGJvcmRlci10dWktdGV4dC1wcmltYXJ5IGJnLXdoaXRlICFwLVswLjRyZW1dIGZvbnQtYm9sZCB0ZXh0LXR1aS10ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvbG9ycy5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvdHVpLWJhZGdlPlxuICAgICAgICAgICAgLSDQutC+0LvQu9C40YfQtdGB0YLQstC+INGG0LLQtdGC0L7QsiDQv9GA0L7RhNC40LvRj1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LWJvZHktbVwiPlxuICAgICAgICAgICAgPHR1aS1iYWRnZVxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJjdXN0b21cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1zb2xpZCBib3JkZXItdHVpLXRleHQtcHJpbWFyeSBiZy13aGl0ZSAhcC1bMC40cmVtXSBmb250LWJvbGQgdGV4dC10dWktdGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBuZXRUeXBlcy5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvdHVpLWJhZGdlPlxuICAgICAgICAgICAgLSDQutC+0LvQu9C40YfQtdGB0YLQstC+INGC0LjQv9C+0LIg0YHQtdGC0L7QulxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tINCg0LDQt9C80LXRgNGLINGB0LXRgtC+0LouIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ib2R5LW1cIj5cbiAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5zYy5ncmlkLWhlaWdodC1hcnJvd1wiIC8+XG4gICAgICAgICAgICDQktGL0YHQvtGC0LAg0YHQtdGC0L7QuiDQvtGCIHt7IGNvbmZpZygpLm1pbkhlaWdodCB9fSDQtNC+IHt7IGNvbmZpZygpLm1heEhlaWdodHNbbmV0VHlwZUluZGV4U2VsZWN0ZWQoKV0gfX0g0LzQvFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYm9keS1tXCI+XG4gICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkuc2MuZ3JpZC13aWR0aC1hcnJvd1wiIC8+XG4gICAgICAgICAgICDQqNC40YDQuNC90LAg0YHQtdGC0L7QuiDQvtGCIHt7IGNvbmZpZygpLm1pbldpZHRoIH19INC00L4ge3sgY29uZmlnKCkubWF4V2lkdGhzW25ldFR5cGVJbmRleFNlbGVjdGVkKCldIH19INC80LxcbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSDQotC10LPQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQui4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgY29uZmlnKCkudGFnc1tuZXRUeXBlSW5kZXhTZWxlY3RlZCgpXVwiXG4gICAgICAgICAgICAgICAgdHVpQ2hpcFxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0YWcgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tINCS0YvQsdC+0YAg0YbQstC10YLQsCDQv9GA0L7RhNC40LvRjy4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00XCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGltYWdlIG9mIGNvbmZpZygpLmNvbG9yOyBsZXQgaXRlbUluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiY29uZmlnKCkuY29sb3JzSWNvbnNbaW1hZ2VdXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImRlc2NyaXB0aW9uc1snY29sb3InXVtpdGVtSW5kZXhdXCJcbiAgICAgICAgICAgICAgICAodHVpSG92ZXJlZENoYW5nZSk9XCJjb2xvckluZGV4LnNldChpdGVtSW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImNvbG9ySW5kZXgoKSA9PT0gaXRlbUluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtMTEgcm91bmRlZC14bFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tINCa0L3QvtC/0LrQuCDQtNC10LnRgdGC0LLQuNC5LiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbmZpZ3VyYXRvckNsaWNrLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zbGlkZXJzLWhvcml6b250YWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCh0LTQtdC70LDRgtGMINGA0LDRgdGH0LXRglxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbnN1bHRhdGlvbkNsaWNrLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5tZXNzYWdlcy1zcXVhcmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCa0L7QvdGB0YPQu9GM0YLQsNGG0LjRj1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSDQn9GA0LDQstCw0Y8g0LrQvtC70L7QvdC60LAg0YEg0LrQsNGA0YPRgdC10LvRjNGOINC40LfQvtCx0YDQsNC20LXQvdC40LkuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSAtb3JkZXItMSBoLVsxOWVtXSBmbGV4LTEgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgc2hhZG93LXR1aS1zaGFkb3cgbWQ6aC05NiBsZzpvcmRlci0yIGxnOmgtWzI4cmVtXVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLmNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwucHJldigpXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIGxlZnQtMCB0b3AtMS8yIHotMTAgbWwtMiAtdHJhbnNsYXRlLXktMS8yXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDx0dWktY2Fyb3VzZWxcbiAgICAgICAgICAgICNjYXJvdXNlbFxuICAgICAgICAgICAgW2R1cmF0aW9uXT1cImF1dG9TbGlkZUludGVydmFsZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaC1bMTllbV0gdy1mdWxsIG1kOmgtOTYgbGc6aC1bMjhyZW1dXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjb25maWcoKS5pbWFnZVByZXZpZXdzQnlDb2xvcltjb2xvckluZGV4U2VsZWN0ZWQoKV07IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRJbWFnZV09XCIndXJsKCcgKyBpdGVtICsgJyknXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLVsxOWVtXSB3LWZ1bGwgYmctY292ZXIgYmctcmlnaHQgbWQ6aC05NiBsZzpoLVsyOHJlbV1cIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90dWktY2Fyb3VzZWw+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2Fyb3VzZWwubmV4dCgpXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIHJpZ2h0LTAgdG9wLTEvMiB6LTEwIG1yLTIgLXRyYW5zbGF0ZS15LTEvMlwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
2
|
-
import { ScContactsService } from '@snabcentr/client-core';
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
2
|
+
import { ScContactsService, ScUserService } from '@snabcentr/client-core';
|
3
|
+
import { BehaviorSubject, of, shareReplay, switchMap } from 'rxjs';
|
4
4
|
import { SC_HELP_NOTIFICATION_CLOSE } from '../providers/sc-help-notification-close';
|
5
5
|
import { SC_HELP_NOTIFICATION_LIMIT } from '../providers/sc-help-notification-limit';
|
6
6
|
import * as i0 from "@angular/core";
|
@@ -28,6 +28,14 @@ export class ScHelpNotificationService {
|
|
28
28
|
* Поток для закрытия уведомлений.
|
29
29
|
*/
|
30
30
|
this.close$ = inject(SC_HELP_NOTIFICATION_CLOSE);
|
31
|
+
/**
|
32
|
+
* Сервис для работы с пользователем.
|
33
|
+
*/
|
34
|
+
this.userService = inject(ScUserService);
|
35
|
+
/**
|
36
|
+
* Список контактов для показа в уведомлении.
|
37
|
+
*/
|
38
|
+
this.userHelpContacts = this.userService.getUserChange$().pipe(switchMap((user) => (user.isGuest ? of([]) : this.contactsService.getHelpContacts$({ phone: user.contacts.phone.value }))), shareReplay(1));
|
31
39
|
this.close$.subscribe(() => {
|
32
40
|
this.closeAllHelpNotification();
|
33
41
|
});
|
@@ -79,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
79
87
|
providedIn: 'root',
|
80
88
|
}]
|
81
89
|
}], ctorParameters: () => [] });
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaGVscC1ub3RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9zZXJ2aWNlcy9zYy1oZWxwLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFckY7O0dBRUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBa0NsQzs7T0FFRztJQUNIO1FBcENBOztXQUVHO1FBQ2MsaUJBQVksR0FBcUMsSUFBSSxlQUFlLENBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRTNHOztXQUVHO1FBQ2Msb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3RDs7V0FFRztRQUNjLHNCQUFpQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRXhFOztXQUVHO1FBQ2MsV0FBTSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRTdEOztXQUVHO1FBQ2MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckQ7O1dBRUc7UUFDYSxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDckUsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUgsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBTUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsR0FBRyxRQUF5QjtRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxPQUFzQjtRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQ7O09BRUc7SUFDSSx3QkFBd0I7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx1QkFBdUIsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBcEZRLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnRCLE1BQU07OzRGQUVULHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjQ29udGFjdHNTZXJ2aWNlLCBTY0lPcmdDb250YWN0LCBTY1VzZXJTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNDX0hFTFBfTk9USUZJQ0FUSU9OX0NMT1NFIH0gZnJvbSAnLi4vcHJvdmlkZXJzL3NjLWhlbHAtbm90aWZpY2F0aW9uLWNsb3NlJztcbmltcG9ydCB7IFNDX0hFTFBfTk9USUZJQ0FUSU9OX0xJTUlUIH0gZnJvbSAnLi4vcHJvdmlkZXJzL3NjLWhlbHAtbm90aWZpY2F0aW9uLWxpbWl0JztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8gUHVzaC3Rg9Cy0LXQtNC+0LzQu9C10L3QuNC5INGBINC60L7QvdGC0LDQutGC0LDQvNC4INC00LvRjyDQv9C+0LzQvtGJ0Lgg0LrQu9C40LXQvdGC0YMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIg0LTQu9GPINC/0L7QutCw0LfQsCDQsiDRg9Cy0LXQtNC+0LzQu9C10L3QuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFjdHNTaG93OiBCZWhhdmlvclN1YmplY3Q8U2NJT3JnQ29udGFjdFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NJT3JnQ29udGFjdFtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0L3RgtCw0LrRgtC90YvQvNC4INC70LjRhtCw0LzQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhY3RzU2VydmljZSA9IGluamVjdChTY0NvbnRhY3RzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25MaW1pdCA9IGluamVjdChTQ19IRUxQX05PVElGSUNBVElPTl9MSU1JVCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0YLQvtC6INC00LvRjyDQt9Cw0LrRgNGL0YLQuNGPINGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbG9zZSQgPSBpbmplY3QoU0NfSEVMUF9OT1RJRklDQVRJT05fQ0xPU0UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZSA9IGluamVjdChTY1VzZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIg0LTQu9GPINC/0L7QutCw0LfQsCDQsiDRg9Cy0LXQtNC+0LzQu9C10L3QuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB1c2VySGVscENvbnRhY3RzID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VyQ2hhbmdlJCgpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcikgPT4gKHVzZXIuaXNHdWVzdCA/IG9mKFtdKSA6IHRoaXMuY29udGFjdHNTZXJ2aWNlLmdldEhlbHBDb250YWN0cyQoeyBwaG9uZTogdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSB9KSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jbG9zZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGxIZWxwTm90aWZpY2F0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QvtCy0LjRgtGMINGB0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIg0LTQu9GPINC/0L7QutCw0LfQsCDQsiDRg9Cy0LXQtNC+0LzQu9C10L3QuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRhY3RzINCU0LDQvdC90YvQtSDQutC+0L3RgtCw0LrRgtC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHNldFNob3dDb250YWN0cyguLi5jb250YWN0czogU2NJT3JnQ29udGFjdFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFjdHNTaG93Lm5leHQoY29udGFjdHMuc2xpY2UoMCwgdGhpcy5ub3RpZmljYXRpb25MaW1pdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQvNC10L3QtdC00LbQtdGA0L7QsiDQtNC70Y8g0L/QvtC60LDQt9CwINCyINGD0LLQtdC00L7QvNC70LXQvdC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldENvbnRhY3RzU2hvdyQoKTogT2JzZXJ2YWJsZTxTY0lPcmdDb250YWN0W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFjdHNTaG93LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQutGA0YvQstCw0LXRgiDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGFjdCDQmtC+0L3RgtCw0LrRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VIZWxwTm90aWZpY2F0aW9uKGNvbnRhY3Q6IFNjSU9yZ0NvbnRhY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWN0c1Nob3cubmV4dCh0aGlzLmNvbnRhY3RzU2hvdy5nZXRWYWx1ZSgpLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gY29udGFjdC5pZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQutGA0YvQstCw0LXRgiDQstGB0LUg0YPQstC10LTQvtC80LvQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VBbGxIZWxwTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRhY3RzU2hvdy5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LrQsNC30LDRgtGMINGD0LLQtdC00L7QvNC70LXQvdC40LUg0L/QviDQvdC+0LzQtdGA0YMg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaG9uZSDQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIGhlbHBOb3RpZmljYXRpb25CeVBob25lKHBob25lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWN0c1NlcnZpY2UuZ2V0SGVscENvbnRhY3RzJCh7IHBob25lIH0pLnN1YnNjcmliZSgoY29udGFjdHMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbnRhY3RzKC4uLmNvbnRhY3RzKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|