@snabcentr/client-ui 2.7.0 → 2.8.1
Sign up to get free protection for your applications and to get access to all the features.
- package/banner/sc-banner.component.d.ts +1 -1
- package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +0 -2
- package/catalog/categories-list/sc-categories-list.component.d.ts +1 -1
- package/catalog/category-card/sc-category-card.component.d.ts +2 -2
- package/catalog/index.d.ts +1 -1
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +2 -2
- package/catalog/sc-catalog.module.d.ts +2 -2
- package/catalog/{sc-favorite-btn/sc-favorite-btn.component.d.ts → sc-favorite-button/sc-favorite-button.component.d.ts} +3 -3
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +1 -1
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +2 -2
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +2 -2
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +3 -3
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +1 -1
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +2 -2
- package/esm2022/accordion/sc-accordion-content.directive.mjs +4 -4
- package/esm2022/accordion/sc-accordion.component.mjs +4 -4
- package/esm2022/accordion/sc-accordion.module.mjs +5 -5
- package/esm2022/auth/sc-auth.module.mjs +5 -5
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +5 -4
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +5 -4
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +4 -4
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +8 -5
- package/esm2022/banner/sc-banner.component.mjs +8 -6
- package/esm2022/banner/sc-banner.module.mjs +5 -5
- package/esm2022/brands-list/sc-brands-list.component.mjs +4 -4
- package/esm2022/brands-list/sc-brands-list.module.mjs +5 -5
- package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +4 -6
- package/esm2022/cart/sc-cart.module.mjs +5 -5
- package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +6 -6
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +7 -7
- package/esm2022/catalog/index.mjs +2 -2
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +4 -4
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +6 -6
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +4 -4
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +4 -4
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +6 -6
- package/esm2022/catalog/sc-catalog.module.mjs +6 -6
- package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +42 -0
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +5 -4
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +6 -6
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +5 -5
- package/esm2022/contacts/sc-contacts.module.mjs +5 -5
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +5 -4
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +9 -6
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +5 -5
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +6 -6
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +5 -5
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +13 -8
- package/esm2022/contragents/sc-contragents.module.mjs +5 -5
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +7 -6
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +6 -6
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +6 -6
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +5 -5
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +4 -4
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +4 -4
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +5 -5
- package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +4 -4
- package/esm2022/directives/tel-link/sc-tel-link.module.mjs +5 -5
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +4 -4
- package/esm2022/files/directives/tree-top.directive.mjs +4 -4
- package/esm2022/files/directives/tree.directive.mjs +5 -5
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +4 -4
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +4 -4
- package/esm2022/files/files-and-documents.module.mjs +5 -5
- package/esm2022/files/services/tree-icon.service.mjs +4 -4
- package/esm2022/files/services/tree-loader.service.mjs +7 -5
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +16 -7
- package/esm2022/form-fields/form-fields.module.mjs +5 -5
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +4 -4
- package/esm2022/helpers/sc-px-converter.mjs +5 -5
- package/esm2022/masks/sc-account-number-mask.mjs +2 -2
- package/esm2022/masks/sc-bic-mask.mjs +2 -2
- package/esm2022/masks/sc-correspondent-account-mask.mjs +2 -2
- package/esm2022/masks/sc-inn-mask.mjs +3 -3
- package/esm2022/masks/sc-kpp-mask.mjs +2 -2
- package/esm2022/masks/sc-okpo-mask.mjs +3 -3
- package/esm2022/masks/sc-phone-verification-code-mask.mjs +2 -2
- package/esm2022/news/news-card/sc-news-card.component.mjs +4 -4
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +4 -4
- package/esm2022/news/sc-news.module.mjs +5 -5
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +4 -4
- package/esm2022/order/sc-order.module.mjs +5 -5
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +5 -5
- package/esm2022/pipes/sc-formatted-phone.mjs +4 -4
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +6 -6
- package/esm2022/profile/sc-profile.module.mjs +5 -5
- package/esm2022/providers/index.mjs +2 -2
- package/esm2022/providers/sc-user-providers.mjs +27 -0
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +4 -4
- package/esm2022/qrcode/sc-qrcode.module.mjs +5 -5
- package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +5 -5
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +5 -5
- package/esm2022/samples/sc-sample.module.mjs +5 -5
- package/esm2022/share-button/sc-share-button.component.mjs +4 -4
- package/esm2022/share-button/sc-share-button.module.mjs +5 -5
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +9 -5
- package/esm2022/user/sc-user.module.mjs +5 -5
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +6 -5
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +4 -4
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +7 -6
- package/esm2022/validators/index.mjs +4 -4
- package/esm2022/validators/sc-bic-validator.mjs +10 -0
- package/esm2022/validators/sc-correspondent-account-validator.mjs +10 -0
- package/esm2022/validators/step-validator.mjs +18 -0
- package/esm2022/verification/sc-verification.module.mjs +5 -5
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +5 -5
- package/fesm2022/snabcentr-client-ui.mjs +355 -316
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/files/directives/tree.directive.d.ts +6 -6
- package/files/services/tree-loader.service.d.ts +1 -1
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -1
- package/news/news-card/sc-news-card.component.d.ts +1 -1
- package/package.json +28 -27
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +2 -2
- package/providers/index.d.ts +1 -1
- package/release_notes.tmp +2 -8
- package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +1 -1
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +1 -1
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +1 -1
- package/validators/index.d.ts +3 -3
- package/validators/{scBicValidator.d.ts → sc-bic-validator.d.ts} +3 -0
- package/validators/{scCorrespondentAccountValidator.d.ts → sc-correspondent-account-validator.d.ts} +3 -0
- package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +0 -42
- package/esm2022/providers/scUserProviders.mjs +0 -27
- package/esm2022/validators/scBicValidator.mjs +0 -7
- package/esm2022/validators/scCorrespondentAccountValidator.mjs +0 -7
- package/esm2022/validators/stepValidator.mjs +0 -18
- /package/providers/{scUserProviders.d.ts → sc-user-providers.d.ts} +0 -0
- /package/validators/{stepValidator.d.ts → step-validator.d.ts} +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
2
2
|
import * as i0 from "@angular/core";
|
3
3
|
import * as i1 from "@angular/common";
|
4
4
|
import * as i2 from "../../accordion/sc-accordion.component";
|
@@ -22,12 +22,12 @@ export class ScContactsAccordionComponent {
|
|
22
22
|
*/
|
23
23
|
this.deleteButtonClick = new EventEmitter();
|
24
24
|
}
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: { contacts$: "contacts$" }, outputs: { addContactClick: "addContactClick", deleteButtonClick: "deleteButtonClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: i3.ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: i4.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i4.TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "directive", type: i4.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i6.ScTerminalLinkDirective, selector: "a[href]" }, { kind: "directive", type: i7.ScTelLinkDirective, selector: "[scTelLink]", inputs: ["scTelLink"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.ScFormatePhonePipe, name: "scFormatePhone" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
27
27
|
}
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsAccordionComponent, decorators: [{
|
29
29
|
type: Component,
|
30
|
-
args: [{ selector: 'sc-contacts-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n
|
30
|
+
args: [{ selector: 'sc-contacts-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n \u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader\n *tuiLet=\"contacts$ | async as contacts\"\n [overlay]=\"true\"\n [showLoader]=\"contacts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div\n *ngFor=\"let contact of contacts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n {{ contact.name }}\n <a\n *ngIf=\"contact.phone\"\n tuiLink\n [scTelLink]=\"contact.phone\"\n iconStart=\"@tui.phone\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone | scFormatePhone }}\"\n >\n {{ contact.phone | scFormatePhone }}\n </a>\n <a\n *ngIf=\"contact.email\"\n tuiLink\n iconStart=\"@tui.mail\"\n [pseudo]=\"true\"\n href=\"mailto:{{ contact.email }}\"\n >\n {{ contact.email }}\n </a>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.</div>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
31
31
|
}], propDecorators: { contacts$: [{
|
32
32
|
type: Input
|
33
33
|
}], addContactClick: [{
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
35
35
|
}], deleteButtonClick: [{
|
36
36
|
type: Output
|
37
37
|
}] } });
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250YWN0cy9jb250YWN0cy1hY2NvcmRpb24vc2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250YWN0cy9jb250YWN0cy1hY2NvcmRpb24vc2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFJaEc7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNEJBQTRCO0lBTHpDO1FBWUk7O1dBRUc7UUFFSSxvQkFBZSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRFOztXQUVHO1FBRUksc0JBQWlCLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7S0FDdkY7K0dBbEJZLDRCQUE0QjttR0FBNUIsNEJBQTRCLDBMQ1p6Qyx5bUdBNkRBOzs0RkRqRGEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsU0FBUztzQkFEZixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLE1BQU07Z0JBT0EsaUJBQWlCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0lDb250YWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LIg0YHQv9C40YHQutC1LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNvbnRhY3RzLWFjY29yZGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWNvbnRhY3RzLWFjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29udGFjdHNBY2NvcmRpb25Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LDQutGC0L3Ri9C1INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbnRhY3RzJDogT2JzZXJ2YWJsZTxTY0lDb250YWN0W10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC00L7QsdCw0LLQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGFkZENvbnRhY3RDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkZWxldGVCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPFNjSUNvbnRhY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0lDb250YWN0PigpO1xufVxuIiwiPHNjLWFjY29yZGlvbiAoYWRkQnV0dG9uQ2xpY2spPVwiYWRkQ29udGFjdENsaWNrLmVtaXQoKVwiPlxuICAgINCa0L7QvdGC0LDQutGC0YtcbiAgICA8bmctdGVtcGxhdGUgc2NBY2NvcmRpb25Db250ZW50PlxuICAgICAgICA8dHVpLWxvYWRlclxuICAgICAgICAgICAgKnR1aUxldD1cImNvbnRhY3RzJCB8IGFzeW5jIGFzIGNvbnRhY3RzXCJcbiAgICAgICAgICAgIFtvdmVybGF5XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiY29udGFjdHMgPT09IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGFjdHMgfHwgY29udGFjdHMubGVuZ3RoOyBlbHNlIGNvbnRhY3RzTm90RXhpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC0yIGJvcmRlci1iIGJvcmRlci10dWktYmFzZS0wM1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb250YWN0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRhY3QucGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY1RlbExpbmtdPVwiY29udGFjdC5waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkucGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwidGVsOnt7IGNvbnRhY3QucGhvbmUgfCBzY0Zvcm1hdGVQaG9uZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb250YWN0LnBob25lIHwgc2NGb3JtYXRlUGhvbmUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWN0LmVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLm1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOnt7IGNvbnRhY3QuZW1haWwgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29udGFjdC5lbWFpbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDQpNGD0L3QutGG0LjQvtC90LDQuyDRg9C00LDQu9C10L3QuNGPINCy0YDQtdC80LXQvdC90L4g0L3QtSDQtNC+0YHRgtGD0L/QtdC9INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRji4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLnRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGRlbGV0ZUJ1dHRvbkNsaWNrLmVtaXQoY29udGFjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRhY3RzTm90RXhpc3Q+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktbm90aWZpY2F0aW9uIHNpemU9XCJsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMiBmb250LW1lZGl1bVwiPtCa0L7QvdGC0LDQutGC0Ysg0L3QtSDRg9C60LDQt9Cw0L3Riy48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS1ub3RpZmljYXRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3R1aS1sb2FkZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvc2MtYWNjb3JkaW9uPlxuIl19
|
@@ -18,13 +18,13 @@ export class ScNewContactFormComponent {
|
|
18
18
|
*/
|
19
19
|
this.suggestionType = ScISuggestionType;
|
20
20
|
}
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScNewContactFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScNewContactFormComponent, selector: "sc-new-contact-form", inputs: { form: "form" }, ngImport: i0, template: "<div\n [formGroup]=\"form\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-input-phone formControlName=\"phone\"> \u0422\u0435\u043B\u0435\u0444\u043E\u043D </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "directive", type: i3.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i5.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i5.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["phoneMaskAfterCountryCode", "allowText", "search", "countryCode"], outputs: ["searchChange"] }, { kind: "directive", type: i5.TuiInputPhoneDirective, selector: "tui-input-phone" }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
23
23
|
}
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScNewContactFormComponent, decorators: [{
|
25
25
|
type: Component,
|
26
|
-
args: [{ selector: 'sc-new-contact-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
26
|
+
args: [{ selector: 'sc-new-contact-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [formGroup]=\"form\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-input-phone formControlName=\"phone\"> \u0422\u0435\u043B\u0435\u0444\u043E\u043D </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n</div>\n" }]
|
27
27
|
}], propDecorators: { form: [{
|
28
28
|
type: Input
|
29
29
|
}] } });
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LWNvbnRhY3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udGFjdHMvbmV3LWNvbnRhY3QtZm9ybS9zYy1uZXctY29udGFjdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250YWN0cy9uZXctY29udGFjdC1mb3JtL3NjLW5ldy1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQUUzRDs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNSTs7V0FFRztRQUNhLG1CQUFjLEdBQTZCLGlCQUFpQixDQUFDO0tBWWhGOytHQWhCWSx5QkFBeUI7bUdBQXpCLHlCQUF5QixxRkNadEMsOGhFQWtEQTs7NEZEdENhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs4QkFZeEMsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY0lTdWdnZXN0aW9uVHlwZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtbmV3LWNvbnRhY3QtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLW5ldy1jb250YWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05ld0NvbnRhY3RGb3JtQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDRgSDQv9C+0LvRj9C80Lgg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA8e1xuICAgICAgICBuYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBlbWFpbDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIHBvc2l0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9Pjtcbn1cbiIsIjxkaXZcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQpC7QmC7Qni5cbiAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICDQpC7QmC7Qni5cbiAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgID48L3NjLXN1Z2dlc3Rpb24tZmllbGQ+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgID48L3R1aS1lcnJvcj5cbiAgICA8L2xhYmVsPlxuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgPHR1aS1pbnB1dC1waG9uZSBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiPiDQotC10LvQtdGE0L7QvSA8L3R1aS1pbnB1dC1waG9uZT5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgPjwvdHVpLWVycm9yPlxuICAgIDwvbGFiZWw+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCI+XG4gICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiXG4gICAgICAgICAgICA+PC9zYy1zdWdnZXN0aW9uLWZpZWxkPlxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgPjwvdHVpLWVycm9yPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCU0L7Qu9C20L3QvtGB0YLRjCDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicG9zaXRpb25cIj4g0JTQvtC70LbQvdC+0YHRgtGMINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAgPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgID48L3R1aS1lcnJvcj5cbiAgICA8L2xhYmVsPlxuPC9kaXY+XG4iXX0=
|
@@ -21,8 +21,8 @@ import * as i3 from "@taiga-ui/core/components/data-list";
|
|
21
21
|
* Модуль контактных лиц.
|
22
22
|
*/
|
23
23
|
export class ScContactsModule {
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
25
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
25
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ScContactsModule, declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent], imports: [CommonModule,
|
26
26
|
FormsModule,
|
27
27
|
ReactiveFormsModule,
|
28
28
|
ScAccordionModule,
|
@@ -42,7 +42,7 @@ export class ScContactsModule {
|
|
42
42
|
ScFormatePhonePipe,
|
43
43
|
ScTelLinkDirective,
|
44
44
|
TuiButtonLoading], exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent] }); }
|
45
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
45
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsModule, imports: [CommonModule,
|
46
46
|
FormsModule,
|
47
47
|
ReactiveFormsModule,
|
48
48
|
ScAccordionModule,
|
@@ -53,7 +53,7 @@ export class ScContactsModule {
|
|
53
53
|
TuiError,
|
54
54
|
TuiButtonLoading] }); }
|
55
55
|
}
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScContactsModule, decorators: [{
|
57
57
|
type: NgModule,
|
58
58
|
args: [{
|
59
59
|
declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],
|
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
85
85
|
exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],
|
86
86
|
}]
|
87
87
|
}] });
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udGFjdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbnRhY3RzL3NjLWNvbnRhY3RzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbkcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDcEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7O0FBRTdGOztHQUVHO0FBOEJILE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLGlCQTVCViw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsYUFFL0YsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFNBQVM7WUFDVCxTQUFTO1lBQ1QsTUFBTTtZQUNOLGVBQWU7WUFDZixPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsZUFBZSxnTEFHZixRQUFRO1lBQ1IsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixRQUFRO1lBQ1IsdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsZ0JBQWdCLGFBRVYsNEJBQTRCLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCO2dIQUVyRixnQkFBZ0IsWUExQnJCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUVqQixTQUFTO1lBSVQsa0JBQWtCO1lBR2xCLGVBQWUsOEdBSWYsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixRQUFRO1lBSVIsZ0JBQWdCOzs0RkFJWCxnQkFBZ0I7a0JBN0I1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLDRCQUE0QixFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixDQUFDO29CQUNwRyxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsTUFBTTt3QkFDTixlQUFlO3dCQUNmLE9BQU87d0JBQ1Asa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixHQUFHLFdBQVc7d0JBQ2QsR0FBRyxrQkFBa0I7d0JBQ3JCLFFBQVE7d0JBQ1IsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsQ0FBQztpQkFDbEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWFza2l0b0RpcmVjdGl2ZSB9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHVpTGV0IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURhdGFMaXN0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aUxvYWRlciwgVHVpTm90aWZpY2F0aW9uIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZywgVHVpRGF0YUxpc3RXcmFwcGVyLCBUdWlGaWVsZEVycm9yUGlwZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVNlbGVjdE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBTY0FjY29yZGlvbk1vZHVsZSB9IGZyb20gJy4uL2FjY29yZGlvbic7XG5pbXBvcnQgeyBTY1RlbExpbmtEaXJlY3RpdmUsIFNjVGVybWluYWxMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBTY0Zvcm1GaWVsZHNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkcy9mb3JtLWZpZWxkcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2NGb3JtYXRlUGhvbmVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgU2NBZGRDb250YWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtY29udGFjdC1kaWFsb2cvc2MtYWRkLWNvbnRhY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NvbnRhY3RzQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb250YWN0cy1hY2NvcmRpb24vc2MtY29udGFjdHMtYWNjb3JkaW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY05ld0NvbnRhY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctY29udGFjdC1mb3JtL3NjLW5ldy1jb250YWN0LWZvcm0uY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LrQvtC90YLQsNC60YLQvdGL0YUg0LvQuNGGLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjQ29udGFjdHNBY2NvcmRpb25Db21wb25lbnQsIFNjTmV3Q29udGFjdEZvcm1Db21wb25lbnQsIFNjQWRkQ29udGFjdERpYWxvZ0NvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBTY0FjY29yZGlvbk1vZHVsZSxcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBUdWlMb2FkZXIsXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpTm90aWZpY2F0aW9uLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBUdWlTZWxlY3RNb2R1bGUsXG4gICAgICAgIC4uLlR1aURhdGFMaXN0LFxuICAgICAgICAuLi5UdWlEYXRhTGlzdFdyYXBwZXIsXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRQaG9uZU1vZHVsZSxcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFNjVGVybWluYWxMaW5rRGlyZWN0aXZlLFxuICAgICAgICBTY0Zvcm1hdGVQaG9uZVBpcGUsXG4gICAgICAgIFNjVGVsTGlua0RpcmVjdGl2ZSxcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtTY0NvbnRhY3RzQWNjb3JkaW9uQ29tcG9uZW50LCBTY05ld0NvbnRhY3RGb3JtQ29tcG9uZW50LCBTY0FkZENvbnRhY3REaWFsb2dDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NvbnRhY3RzTW9kdWxlIHt9XG4iXX0=
|
@@ -52,6 +52,7 @@ export class ScAddContragentBankAccountsDialogComponent {
|
|
52
52
|
const { errors, message } = error.error;
|
53
53
|
for (const key in errors) {
|
54
54
|
if (Object.hasOwn(errors, key)) {
|
55
|
+
// eslint-disable-next-line security/detect-object-injection
|
55
56
|
this.form.get(key)?.setErrors({ serverResponse: errors[key] });
|
56
57
|
}
|
57
58
|
}
|
@@ -67,14 +68,14 @@ export class ScAddContragentBankAccountsDialogComponent {
|
|
67
68
|
*/
|
68
69
|
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
69
70
|
}
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, deps: [{ token: i1.ScContragentService }, { token: POLYMORPHEUS_CONTEXT }], target: i0.ɵɵFactoryTarget.Component }); }
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScAddContragentBankAccountsDialogComponent, selector: "sc-add-contragent-bank-account-dialog", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i5.ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: ["form"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
72
73
|
}
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, decorators: [{
|
74
75
|
type: Component,
|
75
76
|
args: [{ selector: 'sc-add-contragent-bank-account-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </div>\n</form>\n" }]
|
76
77
|
}], ctorParameters: () => [{ type: i1.ScContragentService }, { type: undefined, decorators: [{
|
77
78
|
type: Inject,
|
78
79
|
args: [POLYMORPHEUS_CONTEXT]
|
79
80
|
}] }] });
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy9zYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nL3NjLWFkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkVBQTJFO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFFbkY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMENBQTBDO0lBK0RuRDs7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Rjs7V0FFRztRQUNhLGFBQVEsR0FBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFZakYsQ0FBQzs4R0F6RUssMENBQTBDLHFEQXVFdkMsb0JBQW9CO2tHQXZFdkIsMENBQTBDLDZFQ3RCdkQsMDBCQTJCQTs7MkZETGEsMENBQTBDO2tCQUx0RCxTQUFTOytCQUNJLHVDQUF1QyxtQkFFaEMsdUJBQXVCLENBQUMsTUFBTTs7MEJBeUUxQyxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjQ29udHJhZ2VudFNlcnZpY2UsIFNjSUJhbmtBY2NvdW50LCBTY0lCYW5rQWNjb3VudE9uRGF0YUNyZWF0ZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpSXNGYWxzeSwgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMvYXBpLWVycm9yLXJlc3BvbnNlJztcbmltcG9ydCB7IHNjQmljVmFsaWRhdG9yLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtCz0L4g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0LXRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWFkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0FkZENvbnRyYWdlbnRCYW5rQWNjb3VudHNEaWFsb2dDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDRgSDQv9C+0LvQtdC8INCx0LDQvdC60L7QstGB0LrQuNGFINGA0LXQutCy0LjQt9C40YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtID0gbmV3IEZvcm1Hcm91cDx7XG4gICAgICAgIGJhbmtOYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgYmljOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgYWNjb3VudE51bWJlcjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGNvcnJlc3BvbmRlbnRBY2NvdW50OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgY3VycmVuY3lJZDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgfT4oe1xuICAgICAgICBiYW5rTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBiaWM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIHNjQmljVmFsaWRhdG9yXSksXG4gICAgICAgIGFjY291bnROdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApXSksXG4gICAgICAgIGNvcnJlc3BvbmRlbnRBY2NvdW50OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKSwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvcl0pLFxuICAgICAgICBjdXJyZW5jeUlkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0YHQvtC30LTQsNC90LjRjyDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfRkdGC0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFNjSUJhbmtBY2NvdW50T25EYXRhQ3JlYXRlID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyYWdlbnRTZXJ2aWNlLmNyZWF0ZUNvbnRyYWdlbnRCYW5rQWNjb3VudCQodGhpcy5jb250ZXh0LmRhdGEuY29udHJhZ2VudElkLCB2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGJhbmtBY2NvdW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoYmFua0FjY291bnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihlcnJvcnMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9ycyAmJiBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgU2NJQmFua0FjY291bnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+INC90L7QvNC10YDRgyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0FkZENvbnRyYWdlbnRCYW5rQWNjb3VudHNGb3JtQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50U2VydmljZSDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0YDQsNCz0LXQvdGC0LDQvNC4LlxuICAgICAqIEBwYXJhbSBjb250ZXh0INCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudFNlcnZpY2U6IFNjQ29udHJhZ2VudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PFNjSUJhbmtBY2NvdW50LCB7IGNvbnRyYWdlbnRJZDogbnVtYmVyIH0+XG4gICAgKSB7fVxufVxuIiwiPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4+XG4gICAgPHNjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtIFtmb3JtXT1cImZvcm1cIj48L3NjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC00XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnhcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQvNC10L3QsFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy9zYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nL3NjLWFkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkVBQTJFO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFFbkY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMENBQTBDO0lBZ0VuRDs7Ozs7T0FLRztJQUNILFlBQ3FCLGlCQUFzQyxFQUV2QyxPQUFtRTtRQUZsRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBRXZDLFlBQU8sR0FBUCxPQUFPLENBQTREO1FBeEV2Rjs7V0FFRztRQUNJLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FNeEI7WUFDQyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25FLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3pHLGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEcsb0JBQW9CLEVBQUUsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1lBQzVJLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDeEUsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUQ7O1dBRUc7UUFDYyxhQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMxQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQXVDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUN2RSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNsRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7Z0JBQzFCLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBeUIsQ0FBQztvQkFFNUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM3Qiw0REFBNEQ7NEJBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRSxDQUFDO29CQUNMLENBQUM7b0JBRUQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFvQixDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUNsQixDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1YsQ0FBQztRQUVGOztXQUVHO1FBQ2EsYUFBUSxHQUF3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQVlqRixDQUFDOytHQTFFSywwQ0FBMEMscURBd0V2QyxvQkFBb0I7bUdBeEV2QiwwQ0FBMEMsNkVDdEJ2RCwwMEJBMkJBOzs0RkRMYSwwQ0FBMEM7a0JBTHRELFNBQVM7K0JBQ0ksdUNBQXVDLG1CQUVoQyx1QkFBdUIsQ0FBQyxNQUFNOzswQkEwRTFDLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NDb250cmFnZW50U2VydmljZSwgU2NJQmFua0FjY291bnQsIFNjSUJhbmtBY2NvdW50T25EYXRhQ3JlYXRlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5LCB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgc2NCaWNWYWxpZGF0b3IsIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YTQvtGA0LzRiyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0LPQviDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfQtdGC0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkQ29udHJhZ2VudEJhbmtBY2NvdW50c0RpYWxvZ0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINGBINC/0L7Qu9C10Lwg0LHQsNC90LrQvtCy0YHQutC40YUg0YDQtdC60LLQuNC30LjRgtC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGZvcm0gPSBuZXcgRm9ybUdyb3VwPHtcbiAgICAgICAgYmFua05hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBiaWM6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBhY2NvdW50TnVtYmVyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBjdXJyZW5jeUlkOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICB9Pih7XG4gICAgICAgIGJhbmtOYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGJpYzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg5KSwgc2NCaWNWYWxpZGF0b3JdKSxcbiAgICAgICAgYWNjb3VudE51bWJlcjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyMCldKSxcbiAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yXSksXG4gICAgICAgIGN1cnJlbmN5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDRgdC+0LfQtNCw0L3QuNGPINCx0LDQvdC60L7QstGB0LrQvtCz0L4g0YHRh9GR0YLQsCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQgPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgU2NJQmFua0FjY291bnRPbkRhdGFDcmVhdGUgPT4gdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udHJhZ2VudFNlcnZpY2UuY3JlYXRlQ29udHJhZ2VudEJhbmtBY2NvdW50JCh0aGlzLmNvbnRleHQuZGF0YS5jb250cmFnZW50SWQsIHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoYmFua0FjY291bnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aChiYW5rQWNjb3VudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9ycyAmJiBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgU2NJQmFua0FjY291bnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+INC90L7QvNC10YDRgyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0FkZENvbnRyYWdlbnRCYW5rQWNjb3VudHNGb3JtQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50U2VydmljZSDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0YDQsNCz0LXQvdGC0LDQvNC4LlxuICAgICAqIEBwYXJhbSBjb250ZXh0INCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudFNlcnZpY2U6IFNjQ29udHJhZ2VudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PFNjSUJhbmtBY2NvdW50LCB7IGNvbnRyYWdlbnRJZDogbnVtYmVyIH0+XG4gICAgKSB7fVxufVxuIiwiPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4+XG4gICAgPHNjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtIFtmb3JtXT1cImZvcm1cIj48L3NjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC00XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnhcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQvNC10L3QsFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
@@ -27,7 +27,7 @@ export class ScAddContragentDialogComponent {
|
|
27
27
|
* @param contragentService Сервис работы с контрагентами.
|
28
28
|
* @param convertersService Сервис конвертации данных.
|
29
29
|
* @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
|
30
|
-
* @param locationsService
|
30
|
+
* @param locationsService Сервис для получения списков стран, регионов, городов.
|
31
31
|
* @param context Контекст диалогового окна, в котором открыт компонент.
|
32
32
|
*/
|
33
33
|
constructor(referencesService, contragentService, convertersService, userMetrikaService, locationsService, context) {
|
@@ -68,6 +68,7 @@ export class ScAddContragentDialogComponent {
|
|
68
68
|
const { errors, message } = error.error;
|
69
69
|
for (const key in errors) {
|
70
70
|
if (Object.hasOwn(errors, key)) {
|
71
|
+
// eslint-disable-next-line security/detect-object-injection
|
71
72
|
this.form.get(key)?.setErrors({ serverResponse: errors[key] });
|
72
73
|
}
|
73
74
|
}
|
@@ -126,7 +127,9 @@ export class ScAddContragentDialogComponent {
|
|
126
127
|
case 0:
|
127
128
|
for (const key in this.form.controls.contragent.controls) {
|
128
129
|
if (Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) &&
|
130
|
+
// eslint-disable-next-line security/detect-object-injection
|
129
131
|
!Array.isArray(this.form.controls.contragent.controls[key].value) &&
|
132
|
+
// eslint-disable-next-line security/detect-object-injection
|
130
133
|
this.form.controls.contragent.controls[key].invalid) {
|
131
134
|
return false;
|
132
135
|
}
|
@@ -149,7 +152,7 @@ export class ScAddContragentDialogComponent {
|
|
149
152
|
/**
|
150
153
|
* Возвращает {@link Observable} списка направлений продаж.
|
151
154
|
*
|
152
|
-
* @param directionId
|
155
|
+
* @param directionId Идентификатор направления продаж.
|
153
156
|
*/
|
154
157
|
getDirectionById$(directionId) {
|
155
158
|
return this.referencesService.getDirectionById$(directionId);
|
@@ -247,10 +250,10 @@ export class ScAddContragentDialogComponent {
|
|
247
250
|
removeContactGroup(index) {
|
248
251
|
this.contacts.removeAt(index);
|
249
252
|
}
|
250
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
251
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScAddContragentDialogComponent, deps: [{ token: i1.ScReferencesService }, { token: i1.ScContragentService }, { token: i1.ScConvertersService }, { token: i1.ScUserMetrikaService }, { token: i1.ScLocationsService }, { token: POLYMORPHEUS_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScAddContragentDialogComponent, selector: "sc-add-contragent-dialog", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\"></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442 \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n \u041D\u0430\u0437\u0430\u0434\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep()\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex + 1) % 3\"\n >\n \u0414\u0430\u043B\u0435\u0435\n </button>\n </ng-template>\n </div>\n</form>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i5.ScNewContactFormComponent, selector: "sc-new-contact-form", inputs: ["form"] }, { kind: "component", type: i6.TuiElasticContainer, selector: "tui-elastic-container" }, { kind: "component", type: i6.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i7.ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: ["form"] }, { kind: "component", type: i8.ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: ["opfControl"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
252
255
|
}
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScAddContragentDialogComponent, decorators: [{
|
254
257
|
type: Component,
|
255
258
|
args: [{ selector: 'sc-add-contragent-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\"></sc-new-contragent-form>\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442 \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n \u041D\u0430\u0437\u0430\u0434\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep()\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex + 1) % 3\"\n >\n \u0414\u0430\u043B\u0435\u0435\n </button>\n </ng-template>\n </div>\n</form>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
|
256
259
|
}], ctorParameters: () => [{ type: i1.ScReferencesService }, { type: i1.ScContragentService }, { type: i1.ScConvertersService }, { type: i1.ScUserMetrikaService }, { type: i1.ScLocationsService }, { type: undefined, decorators: [{
|
@@ -259,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
259
262
|
type: Inject,
|
260
263
|
args: [POLYMORPHEUS_CONTEXT]
|
261
264
|
}] }] });
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtHQUFrRztBQUVsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFXSCxTQUFTLEVBRVQsc0JBQXNCLEdBRXpCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUcsT0FBTyxFQUFFLGNBQWMsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBRW5GOztHQUVHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQWtF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Qyx1MUtBK0hBOzsyRkR6RmEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNJLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTTs7MEJBb0YxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kLG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTY0NvbnRyYWdlbnQsXG4gICAgU2NDb250cmFnZW50T25EYXRhQ3JlYXRlLFxuICAgIFNjQ29udHJhZ2VudFNlcnZpY2UsXG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0lCYW5rQWNjb3VudCxcbiAgICBTY0lDb3VudHJ5LFxuICAgIFNjSUN1cnJlbmN5LFxuICAgIFNjSVJlZmVyZW5jZXNUeXBlcyxcbiAgICBTY0lTYWxlc0RpcmVjdGlvbixcbiAgICBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgU2NPcGZMaXN0LFxuICAgIFNjUmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSxcbiAgICBTY1VzZXJNZXRyaWthU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5LCB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgc2NCaWNWYWxpZGF0b3IsIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0YLQtdC9INC00L7QsdCw0LLQu9C10L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1hZGQtY29udHJhZ2VudC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BmTGlzdEVudW06IHR5cGVvZiBTY09wZkxpc3QgPSBTY09wZkxpc3Q7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0YHQv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIHN0ZXBJbmRleCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDQoNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8gYEZvcm1Hcm91cGAuXG4gICAgICovXG4gICAgcHVibGljIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29udHJhZ2VudDogbmV3IEZvcm1Hcm91cDxhbnk+KHt9KSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNC+0LHQsNCy0LvQtdC90LjRjyDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQgPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUuY29udHJhZ2VudCBhcyBTY0NvbnRyYWdlbnRPbkRhdGFDcmVhdGUpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgU2NDb250cmFnZW50T25EYXRhQ3JlYXRlID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyYWdlbnRTZXJ2aWNlLmNyZWF0ZUNvbnRyYWdlbnQkKHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChjb250cmFnZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoY29udHJhZ2VudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JzICYmIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIFNjSUJhbmtBY2NvdW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QviDQvdC+0LzQtdGA0YMg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VzU2VydmljZSDQodC10YDQstC40YEg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyLlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50U2VydmljZSDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0YDQsNCz0LXQvdGC0LDQvNC4LlxuICAgICAqIEBwYXJhbSBjb252ZXJ0ZXJzU2VydmljZSDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICogQHBhcmFtIHVzZXJNZXRyaWthU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gbG9jYXRpb25zU2VydmljZVxuICAgICAqIEBwYXJhbSBjb250ZXh0INCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmZXJlbmNlc1NlcnZpY2U6IFNjUmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudFNlcnZpY2U6IFNjQ29udHJhZ2VudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbnNTZXJ2aWNlOiBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PFNjQ29udHJhZ2VudCwgdm9pZD5cbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVDb250cmFnZW50QWRkU2hvdyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KLQtdC60YPRidC40Lkg0LLRi9Cx0YDQsNC90L3Ri9C5INCe0J/QpC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdE9wZigpOiBTY09wZkxpc3Qge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGZMaXN0RW51bVt0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1snb3BmJ10udmFsdWUgYXMga2V5b2YgdHlwZW9mIFNjT3BmTGlzdF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INCz0YDRg9C/0L8g0L/QvtC70LXQuSDQsdCw0L3QutC+0LLRgdC60LjRhSDRgNC10LrQstC40LfQuNGC0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGJhbmtBY2NvdW50cygpOiBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnRbJ2NyZWF0ZUJhbmtBY2NvdW50R3JvdXAnXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmdldCgnYmFua0FjY291bnRzJykgYXMgRm9ybUFycmF5PFJldHVyblR5cGU8U2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50WydjcmVhdGVCYW5rQWNjb3VudEdyb3VwJ10+PjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LPRgNGD0L/QvyDQv9C+0LvQtdC5INC60L7QvdGC0LDQutGC0L3Ri9GFINC70LjRhi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbnRhY3RzKCk6IEZvcm1BcnJheTxSZXR1cm5UeXBlPFNjQWRkQ29udHJhZ2VudERpYWxvZ0NvbXBvbmVudFsnY3JlYXRlQ29udGFjdEdyb3VwJ10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5nZXQoJ2NvbnRhY3RzJykgYXMgRm9ybUFycmF5PFJldHVyblR5cGU8U2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50WydjcmVhdGVDb250YWN0R3JvdXAnXT4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQvdCw0LLQuNCz0LDRhtC40Y4g0L/QviDRhNC+0YDQvNC1INGB0L7Qt9C00LDQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWx0YSDQl9C90LDRh9C10L3QuNC1LCDQvdCwINC60L7RgtC+0YDQvtC1INC90LXQvtCx0YXQvtC00LjQvNC+INCy0YvQv9C+0LvQvdC40YLRjCDQvdCw0LLQuNCz0LDRhtC40Y4uXG4gICAgICovXG4gICAgcHVibGljIG5hdmlnYXRlKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwSW5kZXggPSAodGhpcy5zdGVwSW5kZXggKyBkZWx0YSkgJSAzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0LzQvtC20LXRgiDQu9C4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQv9C10YDQtdC50YLQuCDQuiDRgdC70LXQtNGD0Y7RidC10LzRgyDRiNCw0LPRgyDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyDQktGL0LLQvtC00LjRgiDQt9C90LDRh9C10L3QuNC1IGBib29sZWFuYCDQvdCwINC+0YHQvdC+0LLQsNC90LjQuCB7QGxpbmsgc3RlcEluZGV4fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuTmV4dFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGVwSW5kZXgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9scykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHMsIGtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzW2tleV0udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1trZXldLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHNbJ2NvbnRhY3RzJ10udmFsaWQ7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzWydiYW5rQWNjb3VudHMnXS52YWxpZDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINC90LDQv9GA0LDQstC70LXQvdC40Lkg0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTYWxlc0RpcmVjdGlvbnMkKCk6IE9ic2VydmFibGU8U2NJU2FsZXNEaXJlY3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5kaXJlY3Rpb25zJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINC90LDQv9GA0LDQstC70LXQvdC40Lkg0L/RgNC+0LTQsNC2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbklkXG4gICAgICovXG4gICAgcHVibGljIGdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSVNhbGVzRGlyZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQvtC6INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3BmJCgpOiBPYnNlcnZhYmxlPEFycmF5PFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5vcGYkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstC+0Lkg0YTQvtGA0LzRiywg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INGB0LjQvNCy0L7Qu9GM0L3QvtC80YMg0L7QsdC+0LfQvdCw0YfQtdC90LjRjiAoc2x1Zykg0L3QsCDQstGF0L7QtNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNsdWcg0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1ZykuXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZkJ5U2x1ZyQoc2x1Zzoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCk6IE9ic2VydmFibGU8U2NJUmVmZXJlbmNlc1R5cGVzPFNjT3BmTGlzdCwgdHlwZW9mIFNjT3BmTGlzdD4gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZ2V0T3BmQnlTbHVnJChzbHVnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINCy0LDQu9GO0YIuXG4gICAgICovXG4gICAgcHVibGljIGdldEN1cnJlbmNpZXMkKCk6IE9ic2VydmFibGU8U2NJQ3VycmVuY3lbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5jdXJyZW5jaWVzJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LLQsNC70Y7RgtGLLCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRgyDQvdCwINCy0YXQvtC00LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY3VycmVuY3lJZCDigJQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LLQsNC70Y7RgtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW5jeUJ5SWQkKGN1cnJlbmN5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NJQ3VycmVuY3kgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZ2V0Q3VycmVuY3lCeUlkJChjdXJyZW5jeUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINGB0YLRgNCw0L0uXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0YLRgNCw0L3Riywg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMg0L3QsCDQstGF0L7QtNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvdW50cnlJZCDigJQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHRgtGA0LDQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudHJpZXNCeUlkJChjb3VudHJ5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NJQ291bnRyeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnNTZXJ2aWNlLmdldENvdW50cmllcyQoKS5waXBlKG1hcCgoY291bnRyaWVzKSA9PiBjb3VudHJpZXMuZmluZCgoY291bnRyeSkgPT4gY291bnRyeS5pZCA9PT0gY291bnRyeUlkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINCz0YDRg9C/0L/RgyDQv9C+0LvQtdC5INCx0LDQvdC60L7QstGB0LrQuNGFINGA0LXQutCy0LjQt9C40YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlQmFua0FjY291bnRHcm91cCgpOiBGb3JtR3JvdXA8e1xuICAgICAgICBiYW5rTmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGJpYzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGFjY291bnROdW1iZXI6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGN1cnJlbmN5SWQ6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgYmFua05hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIGJpYzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg5KSwgc2NCaWNWYWxpZGF0b3JdKSxcbiAgICAgICAgICAgIGFjY291bnROdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApXSksXG4gICAgICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyMCksIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3JdKSxcbiAgICAgICAgICAgIGN1cnJlbmN5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JTQvtCx0LDQstC70Y/QtdGCINCR0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkQmFua0FjY291bnRHcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5iYW5rQWNjb3VudHMucHVzaCh0aGlzLmNyZWF0ZUJhbmtBY2NvdW50R3JvdXAoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LHQsNC90LrQvtCy0YHQutC40LUg0YDQtdC60LLQuNC30LjRgtGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4INCY0L3QtNC10LrRgSDQsdCw0L3QutC+0LLRgdC60LjRhSDRgNC10LrQstC40LfQuNGC0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlQmFua0FjY291bnRHcm91cChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFua0FjY291bnRzLnJlbW92ZUF0KGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQs9GA0YPQv9C/0YMg0L/QvtC70LXQuSDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDb250YWN0R3JvdXAoKTogRm9ybUdyb3VwPHtcbiAgICAgICAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIHBob25lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgZW1haWw6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBwb3NpdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMildKSxcbiAgICAgICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5lbWFpbCksXG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0LrQvtC90YLQsNC60YLQvdC+0LUg0LvQuNGG0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkQ29udGFjdEdyb3VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRhY3RzLnB1c2godGhpcy5jcmVhdGVDb250YWN0R3JvdXAoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LrQvtC90YLQsNC60YLQvdC+0LUg0LvQuNGG0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCDQmNC90LTQtdC60YEg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlQ29udGFjdEdyb3VwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWN0cy5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxufVxuIiwiPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiXG4+XG4gICAgPHR1aS1lbGFzdGljLWNvbnRhaW5lcj5cbiAgICAgICAgPHNjLW5ldy1jb250cmFnZW50LWZvcm0gW2NsYXNzLiFoaWRkZW5dPVwic3RlcEluZGV4ICE9PSAwXCI+PC9zYy1uZXctY29udHJhZ2VudC1mb3JtPlxuXG4gICAgICAgIDxkaXYgW2NsYXNzLiFoaWRkZW5dPVwic3RlcEluZGV4ICE9PSAxXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWN0c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01IHBiLTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj7QmtC+0L3RgtCw0LrRgtGLPC9wPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHMuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgY291bnQgPSBjb3VudDsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJvbGRcIj7QmtC+0L3RgtCw0LrRgiDihJZ7eyBpbmRleCArIDEgfX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY291bnQgLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbnRhY3RHcm91cChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkudHJhc2gtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c2MtbmV3LWNvbnRhY3QtZm9ybSBbZm9ybV09XCJjb250YWN0XCI+PC9zYy1uZXctY29udGFjdC1mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8aHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLXB4IHctZnVsbCBiZy10dWktYmFzZS0wNFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRDb250YWN0R3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0LrQvtC90YLQsNC60YJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IFtjbGFzcy4haGlkZGVuXT1cInN0ZXBJbmRleCAhPT0gMlwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYmFua0FjY291bnRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgcGItMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPtCR0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRizwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBiYW5rQWNjb3VudCBvZiBiYW5rQWNjb3VudHMuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgY291bnQgPSBjb3VudDsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtMTIgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJvbGRcIj7QkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0Ysg4oSWe3sgaW5kZXggKyAxIH19OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvdW50IC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVCYW5rQWNjb3VudEdyb3VwKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1uZXctY29udHJhZ2VudC1iYW5rLWFjY291bnQtZm9ybSBbZm9ybV09XCJiYW5rQWNjb3VudFwiPjwvc2MtbmV3LWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWZvcm0+XG4gICAgICAgICAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtcHggdy1mdWxsIGJnLXR1aS1iYXNlLTA0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnBsdXNcIlxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEJhbmtBY2NvdW50R3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0LHQsNC90LrQvtCy0YHQutC40LUg0YDQtdC60LLQuNC30LjRgtGLXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktZWxhc3RpYy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwSW5kZXggPiAwXCJcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzdGVwSW5kZXggPSAoc3RlcEluZGV4IC0gMSkgJSAzXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J3QsNC30LDQtFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwSW5kZXggPT09IDBcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic3RlcEluZGV4ID09PSAyIHx8IChzdGVwSW5kZXggPT09IDEgJiYgIWZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1snYmFua0FjY291bnRzJ10pOyBlbHNlIG5leHRJbmRleEJ0blwiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0KHQvtC30LTQsNGC0YxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbmV4dEluZGV4QnRuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuTmV4dFN0ZXAoKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0ZXBJbmRleCA9IChzdGVwSW5kZXggKyAxKSAlIDNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCU0LDQu9C10LVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtHQUFrRztBQUVsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFXSCxTQUFTLEVBRVQsc0JBQXNCLEdBRXpCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUcsT0FBTyxFQUFFLGNBQWMsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBRW5GOztHQUVHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQW1F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QkFBOEIsaU1Bb0YzQixvQkFBb0I7bUdBcEZ2Qiw4QkFBOEIsZ0VDdEMzQyx1MUtBK0hBOzs0RkR6RmEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNJLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTTs7MEJBcUYxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kLG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTY0NvbnRyYWdlbnQsXG4gICAgU2NDb250cmFnZW50T25EYXRhQ3JlYXRlLFxuICAgIFNjQ29udHJhZ2VudFNlcnZpY2UsXG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0lCYW5rQWNjb3VudCxcbiAgICBTY0lDb3VudHJ5LFxuICAgIFNjSUN1cnJlbmN5LFxuICAgIFNjSVJlZmVyZW5jZXNUeXBlcyxcbiAgICBTY0lTYWxlc0RpcmVjdGlvbixcbiAgICBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgU2NPcGZMaXN0LFxuICAgIFNjUmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSxcbiAgICBTY1VzZXJNZXRyaWthU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5LCB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgc2NCaWNWYWxpZGF0b3IsIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0YLQtdC9INC00L7QsdCw0LLQu9C10L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1hZGQtY29udHJhZ2VudC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BmTGlzdEVudW06IHR5cGVvZiBTY09wZkxpc3QgPSBTY09wZkxpc3Q7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0YHQv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIHN0ZXBJbmRleCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDQoNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8gYEZvcm1Hcm91cGAuXG4gICAgICovXG4gICAgcHVibGljIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29udHJhZ2VudDogbmV3IEZvcm1Hcm91cDxhbnk+KHt9KSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNC+0LHQsNCy0LvQtdC90LjRjyDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQgPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUuY29udHJhZ2VudCBhcyBTY0NvbnRyYWdlbnRPbkRhdGFDcmVhdGUpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgU2NDb250cmFnZW50T25EYXRhQ3JlYXRlID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyYWdlbnRTZXJ2aWNlLmNyZWF0ZUNvbnRyYWdlbnQkKHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChjb250cmFnZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoY29udHJhZ2VudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHVpTWFya0NvbnRyb2xBc1RvdWNoZWRBbmRWYWxpZGF0ZSh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9ycyAmJiBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBTY0lCYW5rQWNjb3VudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQWRkQ29udHJhZ2VudERpYWxvZ0NvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVmZXJlbmNlc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINGB0L/RgNCw0LLQvtGH0L3QuNC60L7Qsi5cbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudFNlcnZpY2Ug0KHQtdGA0LLQuNGBINGA0LDQsdC+0YLRiyDRgSDQutC+0L3RgtGA0LDQs9C10L3RgtCw0LzQuC5cbiAgICAgKiBAcGFyYW0gY29udmVydGVyc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICogQHBhcmFtIGxvY2F0aW9uc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutC+0LIg0YHRgtGA0LDQvSwg0YDQtdCz0LjQvtC90L7Qsiwg0LPQvtGA0L7QtNC+0LIuXG4gICAgICogQHBhcmFtIGNvbnRleHQg0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZWZlcmVuY2VzU2VydmljZTogU2NSZWZlcmVuY2VzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250cmFnZW50U2VydmljZTogU2NDb250cmFnZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uc1NlcnZpY2U6IFNjTG9jYXRpb25zU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChQT0xZTU9SUEhFVVNfQ09OVEVYVClcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8U2NDb250cmFnZW50LCB2b2lkPlxuICAgICkge31cblxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS51c2VyUHJvZmlsZUNvbnRyYWdlbnRBZGRTaG93LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQotC10LrRg9GJ0LjQuSDQstGL0LHRgNCw0L3QvdGL0Lkg0J7Qn9CkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0T3BmKCk6IFNjT3BmTGlzdCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZkxpc3RFbnVtW3RoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzWydvcGYnXS52YWx1ZSBhcyBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LPRgNGD0L/QvyDQv9C+0LvQtdC5INCx0LDQvdC60L7QstGB0LrQuNGFINGA0LXQutCy0LjQt9C40YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYmFua0FjY291bnRzKCk6IEZvcm1BcnJheTxSZXR1cm5UeXBlPFNjQWRkQ29udHJhZ2VudERpYWxvZ0NvbXBvbmVudFsnY3JlYXRlQmFua0FjY291bnRHcm91cCddPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuZ2V0KCdiYW5rQWNjb3VudHMnKSBhcyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnRbJ2NyZWF0ZUJhbmtBY2NvdW50R3JvdXAnXT4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQs9GA0YPQv9C/INC/0L7Qu9C10Lkg0LrQvtC90YLQsNC60YLQvdGL0YUg0LvQuNGGLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGFjdHMoKTogRm9ybUFycmF5PFJldHVyblR5cGU8U2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50WydjcmVhdGVDb250YWN0R3JvdXAnXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmdldCgnY29udGFjdHMnKSBhcyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnRbJ2NyZWF0ZUNvbnRhY3RHcm91cCddPj47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINC90LDQstC40LPQsNGG0LjRjiDQv9C+INGE0L7RgNC80LUg0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbHRhINCX0L3QsNGH0LXQvdC40LUsINC90LAg0LrQvtGC0L7RgNC+0LUg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LLRi9C/0L7Qu9C90LjRgtGMINC90LDQstC40LPQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmF2aWdhdGUoZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBJbmRleCA9ICh0aGlzLnN0ZXBJbmRleCArIGRlbHRhKSAlIDM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCLCDQvNC+0LbQtdGCINC70Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC/0LXRgNC10LnRgtC4INC6INGB0LvQtdC00YPRjtGJ0LXQvNGDINGI0LDQs9GDINGB0L7Qt9C00LDQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zINCS0YvQstC+0LTQuNGCINC30L3QsNGH0LXQvdC40LUgYGJvb2xlYW5gINC90LAg0L7RgdC90L7QstCw0L3QuNC4IHtAbGluayBzdGVwSW5kZXh9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5OZXh0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnN0ZXBJbmRleCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9scywga2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1trZXldLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1trZXldLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHNbJ2NvbnRhY3RzJ10udmFsaWQ7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzWydiYW5rQWNjb3VudHMnXS52YWxpZDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINC90LDQv9GA0LDQstC70LXQvdC40Lkg0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTYWxlc0RpcmVjdGlvbnMkKCk6IE9ic2VydmFibGU8U2NJU2FsZXNEaXJlY3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5kaXJlY3Rpb25zJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINC90LDQv9GA0LDQstC70LXQvdC40Lkg0L/RgNC+0LTQsNC2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbklkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90LDQv9GA0LDQstC70LXQvdC40Y8g0L/RgNC+0LTQsNC2LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXJlY3Rpb25CeUlkJChkaXJlY3Rpb25JZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lTYWxlc0RpcmVjdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5nZXREaXJlY3Rpb25CeUlkJChkaXJlY3Rpb25JZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0L7QuiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstGL0YUg0YTQvtGA0LwuXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZiQoKTogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NPcGZMaXN0LCB0eXBlb2YgU2NPcGZMaXN0Pj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2Uub3BmJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDRgdC40LzQstC+0LvRjNC90L7QvNGDINC+0LHQvtC30L3QsNGH0LXQvdC40Y4gKHNsdWcpINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzbHVnINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGZCeVNsdWckKHNsdWc6IGtleW9mIHR5cGVvZiBTY09wZkxpc3QpOiBPYnNlcnZhYmxlPFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldE9wZkJ5U2x1ZyQoc2x1Zyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDQstCw0LvRjtGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW5jaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUN1cnJlbmN5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuY3VycmVuY2llcyQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INCy0LDQu9GO0YLRiywg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMg0L3QsCDQstGF0L7QtNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1cnJlbmN5SWQg4oCUINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCy0LDQu9GO0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VycmVuY3lCeUlkJChjdXJyZW5jeUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUN1cnJlbmN5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldEN1cnJlbmN5QnlJZCQoY3VycmVuY3lJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMkKCk6IE9ic2VydmFibGU8U2NJQ291bnRyeVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0Q291bnRyaWVzJCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdGC0YDQsNC90YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb3VudHJ5SWQg4oCUINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YLRgNCw0L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzQnlJZCQoY291bnRyeUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNvdW50cnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCkucGlwZShtYXAoKGNvdW50cmllcykgPT4gY291bnRyaWVzLmZpbmQoKGNvdW50cnkpID0+IGNvdW50cnkuaWQgPT09IGNvdW50cnlJZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQs9GA0YPQv9C/0YMg0L/QvtC70LXQuSDQsdCw0L3QutC+0LLRgdC60LjRhSDRgNC10LrQstC40LfQuNGC0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUJhbmtBY2NvdW50R3JvdXAoKTogRm9ybUdyb3VwPHtcbiAgICAgICAgYmFua05hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBiaWM6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBhY2NvdW50TnVtYmVyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBjdXJyZW5jeUlkOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgIGJhbmtOYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICBiaWM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIHNjQmljVmFsaWRhdG9yXSksXG4gICAgICAgICAgICBhY2NvdW50TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKV0pLFxuICAgICAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yXSksXG4gICAgICAgICAgICBjdXJyZW5jeUlkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCU0L7QsdCw0LLQu9GP0LXRgiDQkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIGFkZEJhbmtBY2NvdW50R3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFua0FjY291bnRzLnB1c2godGhpcy5jcmVhdGVCYW5rQWNjb3VudEdyb3VwKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCx0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCDQmNC90LTQtdC60YEg0LHQsNC90LrQvtCy0YHQutC40YUg0YDQtdC60LLQuNC30LjRgtC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUJhbmtBY2NvdW50R3JvdXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmJhbmtBY2NvdW50cy5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LPRgNGD0L/Qv9GDINC/0L7Qu9C10Lkg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQ29udGFjdEdyb3VwKCk6IEZvcm1Hcm91cDx7XG4gICAgICAgIG5hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGVtYWlsOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgcG9zaXRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTIpXSksXG4gICAgICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMuZW1haWwpLFxuICAgICAgICAgICAgcG9zaXRpb246IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JTQvtCx0LDQstC70Y/QtdGCINC60L7QvdGC0LDQutGC0L3QvtC1INC70LjRhtC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGFkZENvbnRhY3RHcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWN0cy5wdXNoKHRoaXMuY3JlYXRlQ29udGFjdEdyb3VwKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINC60L7QvdGC0LDQutGC0L3QvtC1INC70LjRhtC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXgg0JjQvdC00LXQutGBINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUNvbnRhY3RHcm91cChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFjdHMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIH1cbn1cbiIsIjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIlxuPlxuICAgIDx0dWktZWxhc3RpYy1jb250YWluZXI+XG4gICAgICAgIDxzYy1uZXctY29udHJhZ2VudC1mb3JtIFtjbGFzcy4haGlkZGVuXT1cInN0ZXBJbmRleCAhPT0gMFwiPjwvc2MtbmV3LWNvbnRyYWdlbnQtZm9ybT5cblxuICAgICAgICA8ZGl2IFtjbGFzcy4haGlkZGVuXT1cInN0ZXBJbmRleCAhPT0gMVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFjdHNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNSBwYi0xXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkXCI+0JrQvtC90YLQsNC60YLRizwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb250YWN0IG9mIGNvbnRhY3RzLmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGNvdW50ID0gY291bnQ7IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkXCI+0JrQvtC90YLQsNC60YIg4oSWe3sgaW5kZXggKyAxIH19OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvdW50IC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDb250YWN0R3JvdXAoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNjLW5ldy1jb250YWN0LWZvcm0gW2Zvcm1dPVwiY29udGFjdFwiPjwvc2MtbmV3LWNvbnRhY3QtZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPGhyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC1weCB3LWZ1bGwgYmctdHVpLWJhc2UtMDRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkucGx1c1wiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQ29udGFjdEdyb3VwKClcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQlNC+0LHQsNCy0LjRgtGMINC60L7QvdGC0LDQutGCXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBbY2xhc3MuIWhpZGRlbl09XCJzdGVwSW5kZXggIT09IDJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImJhbmtBY2NvdW50c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01IHBiLTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj7QkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0Ys8L3A+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFua0FjY291bnQgb2YgYmFua0FjY291bnRzLmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGNvdW50ID0gY291bnQ7IGxldCBsYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTEyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkXCI+0JHQsNC90LrQvtCy0YHQutC40LUg0YDQtdC60LLQuNC30LjRgtGLIOKElnt7IGluZGV4ICsgMSB9fTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb3VudCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQmFua0FjY291bnRHcm91cChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkudHJhc2gtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c2MtbmV3LWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWZvcm0gW2Zvcm1dPVwiYmFua0FjY291bnRcIj48L3NjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8aHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLXB4IHctZnVsbCBiZy10dWktYmFzZS0wNFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRCYW5rQWNjb3VudEdyb3VwKClcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQlNC+0LHQsNCy0LjRgtGMINCx0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRi1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdHVpLWVsYXN0aWMtY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic3RlcEluZGV4ID4gMFwiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RlcEluZGV4ID0gKHN0ZXBJbmRleCAtIDEpICUgM1wiXG4gICAgICAgID5cbiAgICAgICAgICAgINCd0LDQt9Cw0LRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic3RlcEluZGV4ID09PSAwXCJcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRleHQuJGltcGxpY2l0LmNvbXBsZXRlKClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J7RgtC80LXQvdCwXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInN0ZXBJbmRleCA9PT0gMiB8fCAoc3RlcEluZGV4ID09PSAxICYmICFmb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHNbJ2JhbmtBY2NvdW50cyddKTsgZWxzZSBuZXh0SW5kZXhCdG5cIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCh0L7Qt9C00LDRgtGMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25leHRJbmRleEJ0bj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbk5leHRTdGVwKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGVwSW5kZXggPSAoc3RlcEluZGV4ICsgMSkgJSAzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQlNCw0LvQtdC1XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|