valtech-components 2.0.928 → 2.0.930

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ import { ComponentStates, InputType } from '../../types';
6
6
  import { FormComponent } from '../form/form.component';
7
7
  import { DisplayComponent } from '../../atoms/display/display.component';
8
8
  import { TextComponent } from '../../atoms/text/text.component';
9
+ import { TitleComponent } from '../../atoms/title/title.component';
9
10
  import { AuthService } from '../../../services/auth';
10
11
  import { I18nService, InputI18nHelper } from '../../../services/i18n';
11
12
  import { ToastService } from '../../../services/toast.service';
@@ -267,7 +268,7 @@ export class ChangeEmailModalComponent {
267
268
  this.toast.show({ message, duration: 3500 });
268
269
  }
269
270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
270
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-text [props]=\"{ content: noPasswordHint(), size: 'medium', color: 'medium', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
271
272
  }
272
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, decorators: [{
273
274
  type: Component,
@@ -282,7 +283,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
282
283
  FormComponent,
283
284
  DisplayComponent,
284
285
  TextComponent,
285
- ], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-text [props]=\"{ content: noPasswordHint(), size: 'medium', color: 'medium', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
286
+ TitleComponent,
287
+ ], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
286
288
  }], propDecorators: { isOpen: [{
287
289
  type: Input
288
290
  }], changed: [{
@@ -290,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
290
292
  }], dismissed: [{
291
293
  type: Output
292
294
  }] } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVtYWlsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZUFBZSxFQUE0QixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUs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O0lBQy9DLENBQUM7K0dBalFVLHlCQUF5QjttR0FBekIseUJBQXlCLHlLQzNEdEMsbThDQWtDQSw0T0RXSSxTQUFTLG9QQUNULFVBQVUsOEVBQ1YsVUFBVSx3S0FDVixTQUFTLG9HQUNULFFBQVEsc0RBQ1IsVUFBVSx5R0FDVixVQUFVLG1GQUNWLGFBQWEsOEhBQ2IsZ0JBQWdCLDJFQUNoQixhQUFhOzs0RkFLSix5QkFBeUI7a0JBbEJyQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTtxQkFDZDs4QkFRRyxNQUFNO3NCQURULEtBQUs7Z0JBYUksT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25Nb2RhbCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IFNvbGlkRGVmYXVsdEJsb2NrIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbnR5cGUgRW1haWxNb2RhbFN0ZXAgPSAnbG9hZGluZycgfCAnbm8tcGFzc3dvcmQnIHwgJ3N0ZXAxJyB8ICdzdGVwMicgfCAnc3RlcDMnO1xuXG4vKipcbiAqIGB2YWwtY2hhbmdlLWVtYWlsLW1vZGFsYCDigJQgbW9kYWwgZGUgY2FtYmlvIGRlIGVtYWlsIGVuIDMgcGFzb3MuXG4gKlxuICogUGFzbyAxOiBjb250cmFzZcOxYSBhY3R1YWwgKyBudWV2byBlbWFpbCDihpIgYGluaXRpYXRlRW1haWxDaGFuZ2UoKWBcbiAqIFBhc28gMjogY8OzZGlnbyBlbnZpYWRvIGFsIGVtYWlsIGFjdHVhbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKClgXG4gKiBQYXNvIDM6IGPDs2RpZ28gZW52aWFkbyBhbCBudWV2byBlbWFpbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKClgXG4gKlxuICogU2kgZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYSAoY3VlbnRhIE9BdXRoLW9ubHkpLCBtdWVzdHJhIGF2aXNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzRW1haWxNb2RhbE9wZW4oKVwiXG4gKiAgIChjaGFuZ2VkKT1cImlzRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1lbWFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Nb2RhbCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgdGhpcy5yZXNvbHZlTW9kZSgpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogRW1pdGUgYWwgY29tcGxldGFyIGVsIGNhbWJpbyBkZSBlbWFpbCBjb24gw6l4aXRvLiBFbCBwYWRyZSBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcblxuICByZWFkb25seSBfc3RlcCA9IHNpZ25hbDxFbWFpbE1vZGFsU3RlcD4oJ2xvYWRpbmcnKTtcbiAgcmVhZG9ubHkgX3BlbmRpbmdFbWFpbCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdfYXV0aCcpO1xuICB9XG5cbiAgcmVhZG9ubHkgbm9QYXNzd29yZFRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdjaGFuZ2VFbWFpbE5vUGFzc3dvcmRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbm9QYXNzd29yZEhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoYW5nZUVtYWlsTm9QYXNzd29yZEhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgc3RlcDFQcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT5cbiAgICB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZUVtYWlsVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDFEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUEFTU1dPUkQsXG4gICAgICAgICAgICAgIG5hbWU6ICdjdXJyZW50UGFzc3dvcmQnLFxuICAgICAgICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuRU1BSUwsXG4gICAgICAgICAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLW5ldycsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxOZXdFbWFpbCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ2VtYWlsUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2VtYWlsUmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgIGVtYWlsOiAnY2hhbmdlRW1haWxOZXdFbWFpbEludmFsaWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1pbml0aWF0ZScsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbEluaXRpYXRlJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBzdGVwMlByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PlxuICAgIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwMlRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VFbWFpbFN0ZXAyRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtY3VycmVudCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxDb2RlQ3VycmVudCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJycsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ21mYUNvZGVJbnZhbGlkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICAgIGxlbmd0aDogNixcbiAgICAgICAgICAgICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgdG9rZW46ICdjaGFuZ2UtZW1haWwtY29uZmlybS0xJyxcbiAgICAgICAgdGV4dEtleTogJ2NoYW5nZUVtYWlsQ29uZmlybTEnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IHN0ZXAzUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuX3BlbmRpbmdFbWFpbCgpO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDNEZXNjcmlwdGlvbicpLnJlcGxhY2UoJ3tlbWFpbH0nLCBlbWFpbCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwM1RpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogZGVzYyxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtbmV3JyxcbiAgICAgICAgICAgICAgbGFiZWxLZXk6ICdjaGFuZ2VFbWFpbENvZGVOZXcnLFxuICAgICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJLZXk6ICcnLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHsgcmVxdWlyZWQ6ICdtZmFDb2RlSW52YWxpZCcgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgICBsZW5ndGg6IDYsXG4gICAgICAgICAgICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIC4uLlNvbGlkRGVmYXVsdEJsb2NrKCcnLCAnc3VibWl0JyksXG4gICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvbmZpcm0tMicsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbENvbmZpcm0yJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KCcnKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fc3RlcC5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ3N0ZXAxJyA6ICduby1wYXNzd29yZCcpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuX3N0ZXAuc2V0KCdzdGVwMScpLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3RlcDEoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld0VtYWlsID0gZXZlbnQuZmllbGRzWyduZXdFbWFpbCddO1xuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdFbWFpbCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmluaXRpYXRlRW1haWxDaGFuZ2UoY3VycmVudFBhc3N3b3JkLCBuZXdFbWFpbCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KHJlcy5wZW5kaW5nRW1haWwpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDInKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAyKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDMnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAzKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NoYW5nZUVtYWlsU3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9TQU1FX0FTX0NVUlJFTlQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckVtYWlsU2FtZUFzQ3VycmVudCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VNQUlMX0VYSVNUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRW1haWxBbHJlYWR5SW5Vc2UnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9DSEFOR0VfUEVORElOR19FWFBJUkVEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JFbWFpbENoYW5nZVBlbmRpbmdFeHBpcmVkJyk7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DT0RFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JJbnZhbGlkQ29kZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VYUElSRURfQ09ERSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRXhwaXJlZENvZGUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9UT09fTUFOWV9BVFRFTVBUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yVG9vTWFueUF0dGVtcHRzJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1mb3JtLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChfc3RlcCgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKF9zdGVwKCkgPT09ICduby1wYXNzd29yZCcpIHtcbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgY29udGVudDogbm9QYXNzd29yZEhpbnQoKSwgc2l6ZTogJ21lZGl1bScsIGNvbG9yOiAnbWVkaXVtJywgYm9sZDogZmFsc2UgfVwiIC8+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cInNvbGlkXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDEnKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDFQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAxKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDInKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDJQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAyKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChfc3RlcCgpID09PSAnc3RlcDMnKSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwic3RlcDNQcm9wcygpXCIgKG9uU3VibWl0KT1cImhhbmRsZVN0ZXAzKCRldmVudClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9pb24tY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaW9uLW1vZGFsPlxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVtYWlsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZUFBZSxFQUE0QixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUs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QUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQWpRVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix5S0M3RHRDLGk4Q0FrQ0EsNE9EWUksU0FBUyxvUEFDVCxVQUFVLDhFQUNWLFVBQVUsd0tBQ1YsU0FBUyxvR0FDVCxRQUFRLHNEQUNSLFVBQVUseUdBQ1YsVUFBVSxtRkFDVixhQUFhLDhIQUNiLGdCQUFnQiwyRUFFaEIsY0FBYzs7NEZBS0wseUJBQXlCO2tCQW5CckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsUUFBUTt3QkFDUixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjs4QkFRRyxNQUFNO3NCQURULEtBQUs7Z0JBYUksT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25Nb2RhbCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IFNvbGlkRGVmYXVsdEJsb2NrIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbnR5cGUgRW1haWxNb2RhbFN0ZXAgPSAnbG9hZGluZycgfCAnbm8tcGFzc3dvcmQnIHwgJ3N0ZXAxJyB8ICdzdGVwMicgfCAnc3RlcDMnO1xuXG4vKipcbiAqIGB2YWwtY2hhbmdlLWVtYWlsLW1vZGFsYCDigJQgbW9kYWwgZGUgY2FtYmlvIGRlIGVtYWlsIGVuIDMgcGFzb3MuXG4gKlxuICogUGFzbyAxOiBjb250cmFzZcOxYSBhY3R1YWwgKyBudWV2byBlbWFpbCDihpIgYGluaXRpYXRlRW1haWxDaGFuZ2UoKWBcbiAqIFBhc28gMjogY8OzZGlnbyBlbnZpYWRvIGFsIGVtYWlsIGFjdHVhbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKClgXG4gKiBQYXNvIDM6IGPDs2RpZ28gZW52aWFkbyBhbCBudWV2byBlbWFpbCDihpIgYGNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKClgXG4gKlxuICogU2kgZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYSAoY3VlbnRhIE9BdXRoLW9ubHkpLCBtdWVzdHJhIGF2aXNvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzRW1haWxNb2RhbE9wZW4oKVwiXG4gKiAgIChjaGFuZ2VkKT1cImlzRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1lbWFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Nb2RhbCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgdGhpcy5yZXNvbHZlTW9kZSgpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogRW1pdGUgYWwgY29tcGxldGFyIGVsIGNhbWJpbyBkZSBlbWFpbCBjb24gw6l4aXRvLiBFbCBwYWRyZSBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcblxuICByZWFkb25seSBfc3RlcCA9IHNpZ25hbDxFbWFpbE1vZGFsU3RlcD4oJ2xvYWRpbmcnKTtcbiAgcmVhZG9ubHkgX3BlbmRpbmdFbWFpbCA9IHNpZ25hbCgnJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdfYXV0aCcpO1xuICB9XG5cbiAgcmVhZG9ubHkgbm9QYXNzd29yZFRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdjaGFuZ2VFbWFpbE5vUGFzc3dvcmRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbm9QYXNzd29yZEhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoYW5nZUVtYWlsTm9QYXNzd29yZEhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgc3RlcDFQcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT5cbiAgICB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZUVtYWlsVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDFEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUEFTU1dPUkQsXG4gICAgICAgICAgICAgIG5hbWU6ICdjdXJyZW50UGFzc3dvcmQnLFxuICAgICAgICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuRU1BSUwsXG4gICAgICAgICAgICAgIG5hbWU6ICduZXdFbWFpbCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLW5ldycsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxOZXdFbWFpbCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ2VtYWlsUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2VtYWlsUmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgIGVtYWlsOiAnY2hhbmdlRW1haWxOZXdFbWFpbEludmFsaWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1lbWFpbC1pbml0aWF0ZScsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbEluaXRpYXRlJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBzdGVwMlByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PlxuICAgIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwMlRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VFbWFpbFN0ZXAyRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtY3VycmVudCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY2hhbmdlRW1haWxDb2RlQ3VycmVudCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJycsXG4gICAgICAgICAgICAgIGVycm9yS2V5czogeyByZXF1aXJlZDogJ21mYUNvZGVJbnZhbGlkJyB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICAgIGxlbmd0aDogNixcbiAgICAgICAgICAgICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgdG9rZW46ICdjaGFuZ2UtZW1haWwtY29uZmlybS0xJyxcbiAgICAgICAgdGV4dEtleTogJ2NoYW5nZUVtYWlsQ29uZmlybTEnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IHN0ZXAzUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuX3BlbmRpbmdFbWFpbCgpO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLnQoJ2NoYW5nZUVtYWlsU3RlcDNEZXNjcmlwdGlvbicpLnJlcGxhY2UoJ3tlbWFpbH0nLCBlbWFpbCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICBuYW1lS2V5OiAnY2hhbmdlRW1haWxTdGVwM1RpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogZGVzYyxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBJTl9DT0RFLFxuICAgICAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvZGUtbmV3JyxcbiAgICAgICAgICAgICAgbGFiZWxLZXk6ICdjaGFuZ2VFbWFpbENvZGVOZXcnLFxuICAgICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJLZXk6ICcnLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHsgcmVxdWlyZWQ6ICdtZmFDb2RlSW52YWxpZCcgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgICBsZW5ndGg6IDYsXG4gICAgICAgICAgICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIC4uLlNvbGlkRGVmYXVsdEJsb2NrKCcnLCAnc3VibWl0JyksXG4gICAgICAgIHRva2VuOiAnY2hhbmdlLWVtYWlsLWNvbmZpcm0tMicsXG4gICAgICAgIHRleHRLZXk6ICdjaGFuZ2VFbWFpbENvbmZpcm0yJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzc2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcC5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KCcnKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fc3RlcC5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ3N0ZXAxJyA6ICduby1wYXNzd29yZCcpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuX3N0ZXAuc2V0KCdzdGVwMScpLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3RlcDEoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld0VtYWlsID0gZXZlbnQuZmllbGRzWyduZXdFbWFpbCddO1xuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdFbWFpbCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmluaXRpYXRlRW1haWxDaGFuZ2UoY3VycmVudFBhc3N3b3JkLCBuZXdFbWFpbCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nRW1haWwuc2V0KHJlcy5wZW5kaW5nRW1haWwpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDInKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAyKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAxKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLl9zdGVwLnNldCgnc3RlcDMnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN0ZXAzKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmZpZWxkc1snY29kZSddO1xuICAgIGlmICghY29kZSkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdtZmFDb2RlSW52YWxpZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdGhpcy5hdXRoLmNvbmZpcm1FbWFpbENoYW5nZVN0ZXAyKGNvZGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NoYW5nZUVtYWlsU3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9TQU1FX0FTX0NVUlJFTlQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckVtYWlsU2FtZUFzQ3VycmVudCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VNQUlMX0VYSVNUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRW1haWxBbHJlYWR5SW5Vc2UnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9FTUFJTF9DSEFOR0VfUEVORElOR19FWFBJUkVEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JFbWFpbENoYW5nZVBlbmRpbmdFeHBpcmVkJyk7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DT0RFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JJbnZhbGlkQ29kZScpO1xuICAgICAgY2FzZSAnQVVUSFYyX0VYUElSRURfQ09ERSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yRXhwaXJlZENvZGUnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9UT09fTUFOWV9BVFRFTVBUUyc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yVG9vTWFueUF0dGVtcHRzJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1mb3JtLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChfc3RlcCgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKF9zdGVwKCkgPT09ICduby1wYXNzd29yZCcpIHtcbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IG5vUGFzc3dvcmRIaW50KCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAxJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAxUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMSgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAyJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAyUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMigkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoX3N0ZXAoKSA9PT0gJ3N0ZXAzJykge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInN0ZXAzUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJoYW5kbGVTdGVwMygkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==
@@ -26,6 +26,8 @@ import * as i2 from "@angular/common";
26
26
  */
27
27
  export class ToolbarComponent {
28
28
  constructor(icon) {
29
+ this._lspInput = { ls: null, color: null };
30
+ this._lspCache = null;
29
31
  /**
30
32
  * Evento emitido al hacer click en una acción o botón de la barra.
31
33
  */
@@ -70,14 +72,17 @@ export class ToolbarComponent {
70
72
  return this.props.actions.filter(x => x.position === 'left');
71
73
  }
72
74
  /**
73
- * Language selector props with 'icon' mode as default for toolbar display.
75
+ * Language selector props memoized to avoid new object reference on every CD cycle.
74
76
  */
75
77
  get languageSelectorProps() {
76
- return {
77
- mode: 'icon',
78
- color: this.props.textColor || 'dark',
79
- ...this.props.languageSelector,
80
- };
78
+ const ls = this.props.languageSelector;
79
+ const color = this.props.textColor;
80
+ if (this._lspCache !== null && this._lspInput.ls === ls && this._lspInput.color === color) {
81
+ return this._lspCache;
82
+ }
83
+ this._lspInput = { ls, color };
84
+ this._lspCache = { mode: 'icon', color: color || 'dark', ...ls };
85
+ return this._lspCache;
81
86
  }
82
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
83
88
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "val-toolbar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
@@ -249,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
249
254
  }], onClick: [{
250
255
  type: Output
251
256
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDMUcsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUcvRDs7Ozs7Ozs7Ozs7R0FXRztBQThGSCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUFZLElBQWlCO1FBVjdCOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckMsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUV4QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFHdEMsUUFBUSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTztZQUNMLElBQUksRUFBRSxNQUFlO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNO1lBQ3JDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7U0FDL0IsQ0FBQztJQUNKLENBQUM7K0dBeEVVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG9JQTVFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RVQsdTRGQXRGQyxZQUFZLGdRQUNaLFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULE9BQU8sMkpBQ1AsT0FBTyxnRkFDUCxRQUFRLGlGQUVSLGNBQWMseUVBQ2QsbUJBQW1CLHFHQUNuQixhQUFhLCtIQUNiLHlCQUF5Qjs7NEZBOEVoQixnQkFBZ0I7a0JBN0Y1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLHlCQUF5QjtxQkFDMUIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlFVDtnRkFRRCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25JY29uLFxuICBJb25NZW51QnV0dG9uLFxuICBJb25UZXh0LFxuICBJb25UaXRsZSxcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZXZyb25CYWNrT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pY29ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJhckFjdGlvbiwgVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUb29sYmFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUb29sYmFyQ29tcG9uZW50XG4gKlxuICogQ29tcG9uZW50ZSBkZSBiYXJyYSBkZSBoZXJyYW1pZW50YXMgcmV1dGlsaXphYmxlIHBhcmEgZW5jYWJlemFkb3MgeSBwaWVzIGRlIHDDoWdpbmEuXG4gKiBQZXJtaXRlIGFjY2lvbmVzLCBib3TDs24gZGUgcmV0cm9jZXNvLCBtZW7DuiB5IHBlcnNvbmFsaXphY2nDs24gZGUgY29sb3JlcyB5IHTDrXR1bG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtdG9vbGJhciBbcHJvcHNdPVwieyB0aXRsZTogJ01pIEFwcCcsIHdpdGhCYWNrOiB0cnVlLCBhY3Rpb25zOiBbLi4uXSB9XCIgKG9uQ2xpY2spPVwiaGFuZGxlVG9vbGJhckFjdGlvbigkZXZlbnQpXCI+PC92YWwtdG9vbGJhcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMge1Rvb2xiYXJNZXRhZGF0YX0gLSBNZXRhZGF0b3MgZGUgbGEgYmFycmEgZGUgaGVycmFtaWVudGFzLlxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdGUgZWwgdG9rZW4gZGUgbGEgYWNjacOzbiBjbGljYWRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdG9vbGJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIElvblRleHQsXG4gICAgSW9uVGl0bGUsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIEltYWdlQ29tcG9uZW50LFxuICAgIFVzZXJBdmF0YXJDb21wb25lbnQsXG4gICAgSW9uTWVudUJ1dHRvbixcbiAgICBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tdG9vbGJhciBbY29sb3JdPVwicHJvcHMuY29sb3JcIiBbY2xhc3MuYmFja2dyb3VuZF09XCJwcm9wcy5jb2xvciA9PT0gJ2JhY2tncm91bmQnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcHMud2l0aEJhY2tcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIGNsYXNzPVwibGVmdC1idXR0b25zXCIgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJwcm9wcy53aXRoQmFja1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIChjbGljayk9XCJnb0JhY2soKVwiIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgW3Nsb3RdPVwicHJvcHMuYmFja1RleHQgPyAnc3RhcnQnIDogJ2ljb24tb25seSdcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPGlvbi10ZXh0ICpuZ0lmPVwicHJvcHMuYmFja1RleHRcIj57eyBwcm9wcy5iYWNrVGV4dCB9fTwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcHMud2l0aEFjdGlvbnNcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIiAqbmdJZj1cInNvbWVJblJpZ2h0KCkgfHwgcHJvcHMud2l0aE1lbnUgfHwgcHJvcHMubGFuZ3VhZ2VTZWxlY3RvclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByaWdodEFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSUNPTlwiIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cImFjdGlvbi5kZXNjcmlwdGlvblwiIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5BVkFUQVJcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHVzZXI6IGFjdGlvbi51c2VyLFxuICAgICAgICAgICAgICAgIGF2YXRhclVybDogYWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHNpemU6IGFjdGlvbi5hdmF0YXJTaXplID8/ICdzbWFsbCcsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICA8dmFsLWltYWdlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklNQUdFXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cImFjdGlvbi5pbWFnZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBbY29sb3JdPVwicHJvcHMudGV4dENvbG9yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQlVUVE9OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgICAgPnt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fTwvaW9uLWJ1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIEBpZiAocHJvcHMubGFuZ3VhZ2VTZWxlY3Rvcikge1xuICAgICAgICAgICAgPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwibGFuZ3VhZ2VTZWxlY3RvclByb3BzXCI+PC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAocHJvcHMud2l0aE1lbnUpIHtcbiAgICAgICAgICAgIDxpb24tbWVudS1idXR0b24gY29sb3I9XCJkYXJrXCI+PC9pb24tbWVudS1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJzb21lSW5MZWZ0KClcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogNHB4O1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBsZWZ0QWN0aW9ucygpXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCIgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkFWQVRBUlwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdXNlcjogYWN0aW9uLnVzZXIsXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBhY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2l6ZTogYWN0aW9uLmF2YXRhclNpemUgPz8gJ3NtYWxsJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC11c2VyLWF2YXRhcj5cbiAgICAgICAgICAgIDx2YWwtaW1hZ2VcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSU1BR0VcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwiYWN0aW9uLmltYWdlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC1pbWFnZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkJVVFRPTlwiIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiPnt7XG4gICAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvblxuICAgICAgICAgICAgfX08L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpb24tdGl0bGUgKm5nSWY9XCJwcm9wcy50aXRsZVwiIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIj57eyBwcm9wcy50aXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgICAgPCEtLSBleHBlcmltZW50YWwgLS0+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhci1ib3R0b21dXCI+PC9uZy1jb250ZW50PlxuICAgIDwvaW9uLXRvb2xiYXI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBNZXRhZGF0b3MgZGUgbGEgYmFycmEgZGUgaGVycmFtaWVudGFzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFRvb2xiYXJNZXRhZGF0YTtcblxuICAvKipcbiAgICogRXZlbnRvIGVtaXRpZG8gYWwgaGFjZXIgY2xpY2sgZW4gdW5hIGFjY2nDs24gbyBib3TDs24gZGUgbGEgYmFycmEuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGFjdGlvblR5cGVzID0gVG9vbGJhckFjdGlvblR5cGU7XG5cbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKGljb246IEljb25TZXJ2aWNlKSB7XG4gICAgYWRkSWNvbnMoeyBjaGV2cm9uQmFja091dGxpbmUgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgLyoqXG4gICAqIEVtaXRlIGVsIHRva2VuIGRlIGxhIGFjY2nDs24gY2xpY2FkYS5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIGRlIGxhIGFjY2nDs25cbiAgICovXG4gIGNsaWNrSGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIHRoaXMub25DbGljay5lbWl0KHRva2VuKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLm5hdi5iYWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5hIHNpIGhheSBhY2Npb25lcyBhIGxhIGRlcmVjaGEuXG4gICAqL1xuICBzb21lSW5SaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BzLmFjdGlvbnMuZmluZCh4ID0+IHgucG9zaXRpb24gPT09ICdyaWdodCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluYSBzaSBoYXkgYWNjaW9uZXMgYSBsYSBpenF1aWVyZGEuXG4gICAqL1xuICBzb21lSW5MZWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuYWN0aW9ucy5maW5kKHggPT4geC5wb3NpdGlvbiA9PT0gJ2xlZnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBsYXMgYWNjaW9uZXMgZGUgbGEgZGVyZWNoYS5cbiAgICovXG4gIHJpZ2h0QWN0aW9ucygpOiBUb29sYmFyQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmFjdGlvbnMuZmlsdGVyKHggPT4geC5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV2dWVsdmUgbGFzIGFjY2lvbmVzIGRlIGxhIGl6cXVpZXJkYS5cbiAgICovXG4gIGxlZnRBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWN0aW9ucy5maWx0ZXIoeCA9PiB4LnBvc2l0aW9uID09PSAnbGVmdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIExhbmd1YWdlIHNlbGVjdG9yIHByb3BzIHdpdGggJ2ljb24nIG1vZGUgYXMgZGVmYXVsdCBmb3IgdG9vbGJhciBkaXNwbGF5LlxuICAgKi9cbiAgZ2V0IGxhbmd1YWdlU2VsZWN0b3JQcm9wcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZTogJ2ljb24nIGFzIGNvbnN0LFxuICAgICAgY29sb3I6IHRoaXMucHJvcHMudGV4dENvbG9yIHx8ICdkYXJrJyxcbiAgICAgIC4uLnRoaXMucHJvcHMubGFuZ3VhZ2VTZWxlY3RvcixcbiAgICB9O1xuICB9XG59XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDMUcsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUcvRDs7Ozs7Ozs7Ozs7R0FXRztBQThGSCxNQUFNLE9BQU8sZ0JBQWdCO0lBb0IzQixZQUFZLElBQWlCO1FBYnJCLGNBQVMsR0FBNEIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxjQUFTLEdBQVEs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QUNSLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IseUJBQXlCO3FCQUMxQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUVUO2dGQVFELEtBQUs7c0JBREosS0FBSztnQkFVTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkljb24sXG4gIElvbk1lbnVCdXR0b24sXG4gIElvblRleHQsXG4gIElvblRpdGxlLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkJhY2tPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyQWN0aW9uLCBUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFRvb2xiYXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRvb2xiYXJDb21wb25lbnRcbiAqXG4gKiBDb21wb25lbnRlIGRlIGJhcnJhIGRlIGhlcnJhbWllbnRhcyByZXV0aWxpemFibGUgcGFyYSBlbmNhYmV6YWRvcyB5IHBpZXMgZGUgcMOhZ2luYS5cbiAqIFBlcm1pdGUgYWNjaW9uZXMsIGJvdMOzbiBkZSByZXRyb2Nlc28sIG1lbsO6IHkgcGVyc29uYWxpemFjacOzbiBkZSBjb2xvcmVzIHkgdMOtdHVsby5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC10b29sYmFyIFtwcm9wc109XCJ7IHRpdGxlOiAnTWkgQXBwJywgd2l0aEJhY2s6IHRydWUsIGFjdGlvbnM6IFsuLi5dIH1cIiAob25DbGljayk9XCJoYW5kbGVUb29sYmFyQWN0aW9uKCRldmVudClcIj48L3ZhbC10b29sYmFyPlxuICpcbiAqIEBpbnB1dCBwcm9wcyB7VG9vbGJhck1ldGFkYXRhfSAtIE1ldGFkYXRvcyBkZSBsYSBiYXJyYSBkZSBoZXJyYW1pZW50YXMuXG4gKiBAb3V0cHV0IG9uQ2xpY2sgLSBFbWl0ZSBlbCB0b2tlbiBkZSBsYSBhY2Npw7NuIGNsaWNhZGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC10b29sYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkljb24sXG4gICAgSW9uVGV4dCxcbiAgICBJb25UaXRsZSxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgSW1hZ2VDb21wb25lbnQsXG4gICAgVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBJb25NZW51QnV0dG9uLFxuICAgIExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10b29sYmFyIFtjb2xvcl09XCJwcm9wcy5jb2xvclwiIFtjbGFzcy5iYWNrZ3JvdW5kXT1cInByb3BzLmNvbG9yID09PSAnYmFja2dyb3VuZCdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy53aXRoQmFja1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgY2xhc3M9XCJsZWZ0LWJ1dHRvbnNcIiBzbG90PVwic3RhcnRcIiAqbmdJZj1cInByb3BzLndpdGhCYWNrXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cImdvQmFjaygpXCIgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDhweDtcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBbc2xvdF09XCJwcm9wcy5iYWNrVGV4dCA/ICdzdGFydCcgOiAnaWNvbi1vbmx5J1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8aW9uLXRleHQgKm5nSWY9XCJwcm9wcy5iYWNrVGV4dFwiPnt7IHByb3BzLmJhY2tUZXh0IH19PC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy53aXRoQWN0aW9uc1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiICpuZ0lmPVwic29tZUluUmlnaHQoKSB8fCBwcm9wcy53aXRoTWVudSB8fCBwcm9wcy5sYW5ndWFnZVNlbGVjdG9yXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHJpZ2h0QWN0aW9ucygpXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCIgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkFWQVRBUlwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdXNlcjogYWN0aW9uLnVzZXIsXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBhY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2l6ZTogYWN0aW9uLmF2YXRhclNpemUgPz8gJ3NtYWxsJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC11c2VyLWF2YXRhcj5cbiAgICAgICAgICAgIDx2YWwtaW1hZ2VcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSU1BR0VcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwiYWN0aW9uLmltYWdlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC1pbWFnZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIlxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5CVVRUT05cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgICA+e3sgYWN0aW9uLmRlc2NyaXB0aW9uIH19PC9pb24tYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgQGlmIChwcm9wcy5sYW5ndWFnZVNlbGVjdG9yKSB7XG4gICAgICAgICAgICA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJsYW5ndWFnZVNlbGVjdG9yUHJvcHNcIj48L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwcm9wcy53aXRoTWVudSkge1xuICAgICAgICAgICAgPGlvbi1tZW51LWJ1dHRvbiBjb2xvcj1cImRhcmtcIj48L2lvbi1tZW51LWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiAqbmdJZj1cInNvbWVJbkxlZnQoKVwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA0cHg7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGxlZnRBY3Rpb25zKClcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklDT05cIiAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBbbmFtZV09XCJhY3Rpb24uZGVzY3JpcHRpb25cIiBbY29sb3JdPVwicHJvcHMudGV4dENvbG9yXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB1c2VyOiBhY3Rpb24udXNlcixcbiAgICAgICAgICAgICAgICBhdmF0YXJVcmw6IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzaXplOiBhY3Rpb24uYXZhdGFyU2l6ZSA/PyAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JTUFHRVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLWltYWdlPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQlVUVE9OXCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCI+e3tcbiAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGlvbi10aXRsZSAqbmdJZj1cInByb3BzLnRpdGxlXCIgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiPnt7IHByb3BzLnRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgICA8IS0tIGV4cGVyaW1lbnRhbCAtLT5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b29sYmFyLWJvdHRvbV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIE1ldGFkYXRvcyBkZSBsYSBiYXJyYSBkZSBoZXJyYW1pZW50YXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogVG9vbGJhck1ldGFkYXRhO1xuXG4gIHByaXZhdGUgX2xzcElucHV0OiB7IGxzOiBhbnk7IGNvbG9yOiBhbnkgfSA9IHsgbHM6IG51bGwsIGNvbG9yOiBudWxsIH07XG4gIHByaXZhdGUgX2xzcENhY2hlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBFdmVudG8gZW1pdGlkbyBhbCBoYWNlciBjbGljayBlbiB1bmEgYWNjacOzbiBvIGJvdMOzbiBkZSBsYSBiYXJyYS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgYWN0aW9uVHlwZXMgPSBUb29sYmFyQWN0aW9uVHlwZTtcblxuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoaWNvbjogSWNvblNlcnZpY2UpIHtcbiAgICBhZGRJY29ucyh7IGNoZXZyb25CYWNrT3V0bGluZSB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge31cblxuICAvKipcbiAgICogRW1pdGUgZWwgdG9rZW4gZGUgbGEgYWNjacOzbiBjbGljYWRhLlxuICAgKiBAcGFyYW0gdG9rZW4gVG9rZW4gZGUgbGEgYWNjacOzblxuICAgKi9cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodG9rZW4pO1xuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIHRoaXMubmF2LmJhY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmEgc2kgaGF5IGFjY2lvbmVzIGEgbGEgZGVyZWNoYS5cbiAgICovXG4gIHNvbWVJblJpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuYWN0aW9ucy5maW5kKHggPT4geC5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5hIHNpIGhheSBhY2Npb25lcyBhIGxhIGl6cXVpZXJkYS5cbiAgICovXG4gIHNvbWVJbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5wcm9wcy5hY3Rpb25zLmZpbmQoeCA9PiB4LnBvc2l0aW9uID09PSAnbGVmdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldnVlbHZlIGxhcyBhY2Npb25lcyBkZSBsYSBkZXJlY2hhLlxuICAgKi9cbiAgcmlnaHRBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWN0aW9ucy5maWx0ZXIoeCA9PiB4LnBvc2l0aW9uID09PSAncmlnaHQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBsYXMgYWNjaW9uZXMgZGUgbGEgaXpxdWllcmRhLlxuICAgKi9cbiAgbGVmdEFjdGlvbnMoKTogVG9vbGJhckFjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hY3Rpb25zLmZpbHRlcih4ID0+IHgucG9zaXRpb24gPT09ICdsZWZ0Jyk7XG4gIH1cblxuICAvKipcbiAgICogTGFuZ3VhZ2Ugc2VsZWN0b3IgcHJvcHMg4oCUIG1lbW9pemVkIHRvIGF2b2lkIG5ldyBvYmplY3QgcmVmZXJlbmNlIG9uIGV2ZXJ5IENEIGN5Y2xlLlxuICAgKi9cbiAgZ2V0IGxhbmd1YWdlU2VsZWN0b3JQcm9wcygpIHtcbiAgICBjb25zdCBscyA9IHRoaXMucHJvcHMubGFuZ3VhZ2VTZWxlY3RvcjtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMucHJvcHMudGV4dENvbG9yO1xuICAgIGlmICh0aGlzLl9sc3BDYWNoZSAhPT0gbnVsbCAmJiB0aGlzLl9sc3BJbnB1dC5scyA9PT0gbHMgJiYgdGhpcy5fbHNwSW5wdXQuY29sb3IgPT09IGNvbG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbHNwQ2FjaGU7XG4gICAgfVxuICAgIHRoaXMuX2xzcElucHV0ID0geyBscywgY29sb3IgfTtcbiAgICB0aGlzLl9sc3BDYWNoZSA9IHsgbW9kZTogJ2ljb24nIGFzIGNvbnN0LCBjb2xvcjogY29sb3IgfHwgJ2RhcmsnLCAuLi5scyB9O1xuICAgIHJldHVybiB0aGlzLl9sc3BDYWNoZTtcbiAgfVxufVxuIl19
@@ -48,6 +48,8 @@ export class PageContentComponent {
48
48
  * Emits when a header action is clicked.
49
49
  */
50
50
  this.onHeaderClick = new EventEmitter();
51
+ this._hpInputs = { header: null, ls: null, sbf: null };
52
+ this._hpCache = null;
51
53
  /**
52
54
  * Default header configuration (cached to avoid infinite change detection).
53
55
  */
@@ -92,17 +94,28 @@ export class PageContentComponent {
92
94
  }
93
95
  /**
94
96
  * Gets header props, using cached default if not provided.
95
- * Injects languageSelector into toolbar when provided at page level.
97
+ * Memoized to return a stable object reference when inputs haven't changed,
98
+ * preventing cascading change detection cycles in child components.
96
99
  */
97
100
  get headerProps() {
98
101
  const header = this.props.header || this.defaultHeader;
102
+ const ls = this.props.languageSelector;
103
+ const sbf = this.props.showBackButton;
104
+ if (this._hpCache !== null &&
105
+ this._hpInputs.header === header &&
106
+ this._hpInputs.ls === ls &&
107
+ this._hpInputs.sbf === sbf) {
108
+ return this._hpCache;
109
+ }
99
110
  let result = header;
100
- if (this.props.languageSelector && !header.toolbar.languageSelector) {
101
- result = { ...result, toolbar: { ...result.toolbar, languageSelector: this.props.languageSelector } };
111
+ if (ls && !header.toolbar.languageSelector) {
112
+ result = { ...result, toolbar: { ...result.toolbar, languageSelector: ls } };
102
113
  }
103
- if (this.props.showBackButton) {
114
+ if (sbf) {
104
115
  result = { ...result, toolbar: { ...result.toolbar, withBack: true } };
105
116
  }
117
+ this._hpInputs = { header, ls, sbf };
118
+ this._hpCache = result;
106
119
  return result;
107
120
  }
108
121
  /**
@@ -181,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
181
194
  }], onHeaderClick: [{
182
195
  type: Output
183
196
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFHOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQXVDSCxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1UsS0FBbUIsRUFDbkIsR0FBc0I7UUFEdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVRoQzs7V0FFRztRQUNNLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBRWpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBZTFFOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXJEOztXQUVHO1FBQ2Msa0JBQWEsR0FBRztZQUMvQixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFB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QVUsd0tBQUUscUJBQXFCOzs0RkFtQy9ELG9CQUFvQjtrQkF0Q2hDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixDQUFDLFlBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7aUhBaUJRLEtBQUs7c0JBQWIsS0FBSztnQkFvQkksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Db250ZW50IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdXBkYXRlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgVkFMVEVDSF9BUFBfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy9jb25maWcnO1xuaW1wb3J0IHsgUGFnZUNvbnRlbnRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtY29udGVudFxuICpcbiAqIEEgcGFnZSBjb250ZW50IHRlbXBsYXRlIHdpdGggY29ycG9yYXRlIGhlYWRlciwgbWFpbiBjb250ZW50IGFyZWEsXG4gKiBhbmQgZm9vdGVyIHNsb3RzLiBTdXBwb3J0cyBkYXJrIG1vZGUgYW5kIGN1c3RvbWl6YWJsZSBiYWNrZ3JvdW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1wYWdlLWNvbnRlbnRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBoZWFkZXI6IHsgLi4uIH0sXG4gKiAgICAgYmFja2dyb3VuZDogJy0tbWFpbi1iYWNrZ3JvdW5kJyxcbiAqICAgICBob21lUm91dGU6ICcvJ1xuICogICB9XCJcbiAqICAgKG9uSGVhZGVyQ2xpY2spPVwiaGFuZGxlSGVhZGVyQWN0aW9uKCRldmVudClcIlxuICogPlxuICogICA8ZGl2IGNvbnRlbnQ+XG4gKiAgICAgPCEtLSBNYWluIHBhZ2UgY29udGVudCAtLT5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXYgZm9vdGVyPlxuICogICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cImZvb3RlclByb3BzXCI+PC92YWwtY29tcGFueS1mb290ZXI+XG4gKiAgIDwvZGl2PlxuICogPC92YWwtcGFnZS1jb250ZW50PlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgY29udGVudCBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBIZWFkZXJDb21wb25lbnQsIElvbkNvbnRlbnQsIFVwZGF0ZUJhbm5lckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWdlXCI+XG4gICAgICA8dmFsLWhlYWRlciBbcHJvcHNdPVwiaGVhZGVyUHJvcHNcIiAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgIDxpb24tY29udGVudFxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBnZXRCYWNrZ3JvdW5kKCksXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNob3dVcGRhdGVCYW5uZXIpIHtcbiAgICAgICAgICA8dmFsLXVwZGF0ZS1iYW5uZXIgLz5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS13cmFwcGVyXCI+XG4gICAgICAgICAgPG1haW4+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLnBhZ2Utd3JhcHBlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgbWFpbiB7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge1xuICAvKipcbiAgICogUGFnZSBjb250ZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZUNvbnRlbnRNZXRhZGF0YSA9IHt9O1xuXG4gIHByaXZhdGUgYXBwQ29uZmlnRW5hYmxlZCA9IGluamVjdChWQUxURUNIX0FQUF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0aGVtZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2OiBOYXZpZ2F0aW9uU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdXBkYXRlIGJhbm5lci5cbiAgICogT25seSBzaG93cyBpZiBBcHBDb25maWdTZXJ2aWNlIGlzIGNvbmZpZ3VyZWQgYW5kIG5vdCBkaXNhYmxlZCB2aWEgcHJvcHMuXG4gICAqL1xuICBnZXQgc2hvd1VwZGF0ZUJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBDb25maWdFbmFibGVkICE9PSBudWxsICYmIHRoaXMucHJvcHMuc2hvd1VwZGF0ZUJhbm5lciAhPT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhlYWRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaGVhZGVyIGNvbmZpZ3VyYXRpb24gKGNhY2hlZCB0byBhdm9pZCBpbmZpbml0ZSBjaGFuZ2UgZGV0ZWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEhlYWRlciA9IHtcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICB0b29sYmFyOiB7XG4gICAgICB3aXRoQmFjazogZmFsc2UsXG4gICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgIHRleHRDb2xvcjogJ2RhcmsnIGFzIGNvbnN0LFxuICAgICAgd2l0aE1lbnU6IHRydWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICBsYW5ndWFnZVNlbGVjdG9yOiB1bmRlZmluZWQgYXMgdW5kZWZpbmVkLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdG9rZW46ICdoZWFkZXItbG9nbycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcgYXMgY29uc3QsXG4gICAgICAgICAgdHlwZTogJ0lNQUdFJyBhcyBjb25zdCxcbiAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICBhbHQ6ICdoZWFkZXIgbG9nbycsXG4gICAgICAgICAgICBtb2RlOiAnYm94JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICBmbGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgaGVhZGVyIHByb3BzLCB1c2luZyBjYWNoZWQgZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEluamVjdHMgbGFuZ3VhZ2VTZWxlY3RvciBpbnRvIHRvb2xiYXIgd2hlbiBwcm92aWRlZCBhdCBwYWdlIGxldmVsLlxuICAgKi9cbiAgZ2V0IGhlYWRlclByb3BzKCkge1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMucHJvcHMuaGVhZGVyIHx8IHRoaXMuZGVmYXVsdEhlYWRlcjtcblxuICAgIGxldCByZXN1bHQgPSBoZWFkZXI7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5sYW5ndWFnZVNlbGVjdG9yICYmICFoZWFkZXIudG9vbGJhci5sYW5ndWFnZVNlbGVjdG9yKSB7XG4gICAgICByZXN1bHQgPSB7IC4uLnJlc3VsdCwgdG9vbGJhcjogeyAuLi5yZXN1bHQudG9vbGJhciwgbGFuZ3VhZ2VTZWxlY3RvcjogdGhpcy5wcm9wcy5sYW5ndWFnZVNlbGVjdG9yIH0gfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5zaG93QmFja0J1dHRvbikge1xuICAgICAgcmVzdWx0ID0geyAuLi5yZXN1bHQsIHRvb2xiYXI6IHsgLi4ucmVzdWx0LnRvb2xiYXIsIHdpdGhCYWNrOiB0cnVlIH0gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYmFzZWQgb24gdGhlbWUuXG4gICAqL1xuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuXG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlQ29sb3IoYmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgLy8gTmF2aWdhdGUgdG8gaG9tZSByb3V0ZSBpZiBjb25maWd1cmVkIGFuZCBsb2dvIHdhcyBjbGlja2VkXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFHOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQXVDSCxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1UsS0FBbUIsRUFDbkIsR0FBc0I7UUFEdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVRoQzs7V0FFRztRQUNNLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBRWpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBZTFFOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdDLGNBQVMsR0FBdUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUs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VSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE9BQU8sNkJBQTZCLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsNERBQTREO1FBQzVELElBQUksS0FBSyxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7K0dBMUhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFKQWxDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCx3SkF0QlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLFVBQVUsd0tBQUUscUJBQXFCOzs0RkFtQy9ELG9CQUFvQjtrQkF0Q2hDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixDQUFDLFlBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7aUhBaUJRLEtBQUs7c0JBQWIsS0FBSztnQkFvQkksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Db250ZW50IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdXBkYXRlLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgVkFMVEVDSF9BUFBfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy9jb25maWcnO1xuaW1wb3J0IHsgUGFnZUNvbnRlbnRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtY29udGVudFxuICpcbiAqIEEgcGFnZSBjb250ZW50IHRlbXBsYXRlIHdpdGggY29ycG9yYXRlIGhlYWRlciwgbWFpbiBjb250ZW50IGFyZWEsXG4gKiBhbmQgZm9vdGVyIHNsb3RzLiBTdXBwb3J0cyBkYXJrIG1vZGUgYW5kIGN1c3RvbWl6YWJsZSBiYWNrZ3JvdW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1wYWdlLWNvbnRlbnRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBoZWFkZXI6IHsgLi4uIH0sXG4gKiAgICAgYmFja2dyb3VuZDogJy0tbWFpbi1iYWNrZ3JvdW5kJyxcbiAqICAgICBob21lUm91dGU6ICcvJ1xuICogICB9XCJcbiAqICAgKG9uSGVhZGVyQ2xpY2spPVwiaGFuZGxlSGVhZGVyQWN0aW9uKCRldmVudClcIlxuICogPlxuICogICA8ZGl2IGNvbnRlbnQ+XG4gKiAgICAgPCEtLSBNYWluIHBhZ2UgY29udGVudCAtLT5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXYgZm9vdGVyPlxuICogICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cImZvb3RlclByb3BzXCI+PC92YWwtY29tcGFueS1mb290ZXI+XG4gKiAgIDwvZGl2PlxuICogPC92YWwtcGFnZS1jb250ZW50PlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgY29udGVudCBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBIZWFkZXJDb21wb25lbnQsIElvbkNvbnRlbnQsIFVwZGF0ZUJhbm5lckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWdlXCI+XG4gICAgICA8dmFsLWhlYWRlciBbcHJvcHNdPVwiaGVhZGVyUHJvcHNcIiAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgIDxpb24tY29udGVudFxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBnZXRCYWNrZ3JvdW5kKCksXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNob3dVcGRhdGVCYW5uZXIpIHtcbiAgICAgICAgICA8dmFsLXVwZGF0ZS1iYW5uZXIgLz5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS13cmFwcGVyXCI+XG4gICAgICAgICAgPG1haW4+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLnBhZ2Utd3JhcHBlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgbWFpbiB7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge1xuICAvKipcbiAgICogUGFnZSBjb250ZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZUNvbnRlbnRNZXRhZGF0YSA9IHt9O1xuXG4gIHByaXZhdGUgYXBwQ29uZmlnRW5hYmxlZCA9IGluamVjdChWQUxURUNIX0FQUF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0aGVtZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2OiBOYXZpZ2F0aW9uU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdXBkYXRlIGJhbm5lci5cbiAgICogT25seSBzaG93cyBpZiBBcHBDb25maWdTZXJ2aWNlIGlzIGNvbmZpZ3VyZWQgYW5kIG5vdCBkaXNhYmxlZCB2aWEgcHJvcHMuXG4gICAqL1xuICBnZXQgc2hvd1VwZGF0ZUJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBDb25maWdFbmFibGVkICE9PSBudWxsICYmIHRoaXMucHJvcHMuc2hvd1VwZGF0ZUJhbm5lciAhPT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhlYWRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBfaHBJbnB1dHM6IHsgaGVhZGVyOiBhbnk7IGxzOiBhbnk7IHNiZjogYW55IH0gPSB7IGhlYWRlcjogbnVsbCwgbHM6IG51bGwsIHNiZjogbnVsbCB9O1xuICBwcml2YXRlIF9ocENhY2hlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGhlYWRlciBjb25maWd1cmF0aW9uIChjYWNoZWQgdG8gYXZvaWQgaW5maW5pdGUgY2hhbmdlIGRldGVjdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRIZWFkZXIgPSB7XG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgdG9vbGJhcjoge1xuICAgICAgd2l0aEJhY2s6IGZhbHNlLFxuICAgICAgd2l0aEFjdGlvbnM6IHRydWUsXG4gICAgICB0ZXh0Q29sb3I6ICdkYXJrJyBhcyBjb25zdCxcbiAgICAgIHdpdGhNZW51OiB0cnVlLFxuICAgICAgdGl0bGU6ICcnLFxuICAgICAgbGFuZ3VhZ2VTZWxlY3RvcjogdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiAnaGVhZGVyLWxvZ28nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnIGFzIGNvbnN0LFxuICAgICAgICAgIHR5cGU6ICdJTUFHRScgYXMgY29uc3QsXG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgICAgc3JjOiAnLS1tYWluLWxvZ28nLFxuICAgICAgICAgICAgYWx0OiAnaGVhZGVyIGxvZ28nLFxuICAgICAgICAgICAgbW9kZTogJ2JveCcgYXMgY29uc3QsXG4gICAgICAgICAgICBzaGFkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGxpbWl0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZmxleDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIGhlYWRlciBwcm9wcywgdXNpbmcgY2FjaGVkIGRlZmF1bHQgaWYgbm90IHByb3ZpZGVkLlxuICAgKiBNZW1vaXplZCB0byByZXR1cm4gYSBzdGFibGUgb2JqZWN0IHJlZmVyZW5jZSB3aGVuIGlucHV0cyBoYXZlbid0IGNoYW5nZWQsXG4gICAqIHByZXZlbnRpbmcgY2FzY2FkaW5nIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGVzIGluIGNoaWxkIGNvbXBvbmVudHMuXG4gICAqL1xuICBnZXQgaGVhZGVyUHJvcHMoKSB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5wcm9wcy5oZWFkZXIgfHwgdGhpcy5kZWZhdWx0SGVhZGVyO1xuICAgIGNvbnN0IGxzID0gdGhpcy5wcm9wcy5sYW5ndWFnZVNlbGVjdG9yO1xuICAgIGNvbnN0IHNiZiA9IHRoaXMucHJvcHMuc2hvd0JhY2tCdXR0b247XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9ocENhY2hlICE9PSBudWxsICYmXG4gICAgICB0aGlzLl9ocElucHV0cy5oZWFkZXIgPT09IGhlYWRlciAmJlxuICAgICAgdGhpcy5faHBJbnB1dHMubHMgPT09IGxzICYmXG4gICAgICB0aGlzLl9ocElucHV0cy5zYmYgPT09IHNiZlxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuX2hwQ2FjaGU7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IGhlYWRlcjtcbiAgICBpZiAobHMgJiYgIWhlYWRlci50b29sYmFyLmxhbmd1YWdlU2VsZWN0b3IpIHtcbiAgICAgIHJlc3VsdCA9IHsgLi4ucmVzdWx0LCB0b29sYmFyOiB7IC4uLnJlc3VsdC50b29sYmFyLCBsYW5ndWFnZVNlbGVjdG9yOiBscyB9IH07XG4gICAgfVxuICAgIGlmIChzYmYpIHtcbiAgICAgIHJlc3VsdCA9IHsgLi4ucmVzdWx0LCB0b29sYmFyOiB7IC4uLnJlc3VsdC50b29sYmFyLCB3aXRoQmFjazogdHJ1ZSB9IH07XG4gICAgfVxuXG4gICAgdGhpcy5faHBJbnB1dHMgPSB7IGhlYWRlciwgbHMsIHNiZiB9O1xuICAgIHRoaXMuX2hwQ2FjaGUgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJhc2VkIG9uIHRoZW1lLlxuICAgKi9cbiAgZ2V0QmFja2dyb3VuZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnRoZW1lLklzRGFyaykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcy5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmcpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKGJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGhlYWRlciBhY3Rpb24gY2xpY2tzLlxuICAgKi9cbiAgb25IZWFkZXJDbGlja0hhbmRsZXIodG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25IZWFkZXJDbGljay5lbWl0KHRva2VuKTtcblxuICAgIC8vIE5hdmlnYXRlIHRvIGhvbWUgcm91dGUgaWYgY29uZmlndXJlZCBhbmQgbG9nbyB3YXMgY2xpY2tlZFxuICAgIGlmICh0b2tlbiA9PT0gJ2hlYWRlci1sb2dvJyAmJiB0aGlzLnByb3BzLmhvbWVSb3V0ZSkge1xuICAgICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybCh0aGlzLnByb3BzLmhvbWVSb3V0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.928';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MjgnO1xuIl19
5
+ export const VERSION = '2.0.930';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MzAnO1xuIl19
@@ -54,7 +54,7 @@ import 'prismjs/components/prism-json';
54
54
  * Current version of valtech-components.
55
55
  * This is automatically updated during the publish process.
56
56
  */
57
- const VERSION = '2.0.928';
57
+ const VERSION = '2.0.930';
58
58
 
59
59
  // Control de estado de refresco (singleton a nivel de módulo)
60
60
  let isRefreshing = false;
@@ -31641,7 +31641,7 @@ class ChangeEmailModalComponent {
31641
31641
  this.toast.show({ message, duration: 3500 });
31642
31642
  }
31643
31643
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-text [props]=\"{ content: noPasswordHint(), size: 'medium', color: 'medium', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
31644
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangeEmailModalComponent, isStandalone: true, selector: "val-change-email-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
31645
31645
  }
31646
31646
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangeEmailModalComponent, decorators: [{
31647
31647
  type: Component,
@@ -31656,7 +31656,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
31656
31656
  FormComponent,
31657
31657
  DisplayComponent,
31658
31658
  TextComponent,
31659
- ], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-text [props]=\"{ content: noPasswordHint(), size: 'medium', color: 'medium', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
31659
+ TitleComponent,
31660
+ ], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (_step() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else if (_step() === 'no-password') {\n <val-display [props]=\"{ content: noPasswordTitle(), size: 'small', color: 'dark' }\" />\n <val-title [props]=\"{ content: noPasswordHint(), size: 'large', color: 'dark', bold: false }\" />\n <ion-button expand=\"block\" fill=\"solid\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n } @else if (_step() === 'step1') {\n <val-form [props]=\"step1Props()\" (onSubmit)=\"handleStep1($event)\" />\n } @else if (_step() === 'step2') {\n <val-form [props]=\"step2Props()\" (onSubmit)=\"handleStep2($event)\" />\n } @else if (_step() === 'step3') {\n <val-form [props]=\"step3Props()\" (onSubmit)=\"handleStep3($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
31660
31661
  }], propDecorators: { isOpen: [{
31661
31662
  type: Input
31662
31663
  }], changed: [{
@@ -32159,6 +32160,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32159
32160
  */
32160
32161
  class ToolbarComponent {
32161
32162
  constructor(icon) {
32163
+ this._lspInput = { ls: null, color: null };
32164
+ this._lspCache = null;
32162
32165
  /**
32163
32166
  * Evento emitido al hacer click en una acción o botón de la barra.
32164
32167
  */
@@ -32203,14 +32206,17 @@ class ToolbarComponent {
32203
32206
  return this.props.actions.filter(x => x.position === 'left');
32204
32207
  }
32205
32208
  /**
32206
- * Language selector props with 'icon' mode as default for toolbar display.
32209
+ * Language selector props memoized to avoid new object reference on every CD cycle.
32207
32210
  */
32208
32211
  get languageSelectorProps() {
32209
- return {
32210
- mode: 'icon',
32211
- color: this.props.textColor || 'dark',
32212
- ...this.props.languageSelector,
32213
- };
32212
+ const ls = this.props.languageSelector;
32213
+ const color = this.props.textColor;
32214
+ if (this._lspCache !== null && this._lspInput.ls === ls && this._lspInput.color === color) {
32215
+ return this._lspCache;
32216
+ }
32217
+ this._lspInput = { ls, color };
32218
+ this._lspCache = { mode: 'icon', color: color || 'dark', ...ls };
32219
+ return this._lspCache;
32214
32220
  }
32215
32221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolbarComponent, deps: [{ token: IconService }], target: i0.ɵɵFactoryTarget.Component }); }
32216
32222
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolbarComponent, isStandalone: true, selector: "val-toolbar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
@@ -40745,6 +40751,8 @@ class PageContentComponent {
40745
40751
  * Emits when a header action is clicked.
40746
40752
  */
40747
40753
  this.onHeaderClick = new EventEmitter();
40754
+ this._hpInputs = { header: null, ls: null, sbf: null };
40755
+ this._hpCache = null;
40748
40756
  /**
40749
40757
  * Default header configuration (cached to avoid infinite change detection).
40750
40758
  */
@@ -40789,17 +40797,28 @@ class PageContentComponent {
40789
40797
  }
40790
40798
  /**
40791
40799
  * Gets header props, using cached default if not provided.
40792
- * Injects languageSelector into toolbar when provided at page level.
40800
+ * Memoized to return a stable object reference when inputs haven't changed,
40801
+ * preventing cascading change detection cycles in child components.
40793
40802
  */
40794
40803
  get headerProps() {
40795
40804
  const header = this.props.header || this.defaultHeader;
40805
+ const ls = this.props.languageSelector;
40806
+ const sbf = this.props.showBackButton;
40807
+ if (this._hpCache !== null &&
40808
+ this._hpInputs.header === header &&
40809
+ this._hpInputs.ls === ls &&
40810
+ this._hpInputs.sbf === sbf) {
40811
+ return this._hpCache;
40812
+ }
40796
40813
  let result = header;
40797
- if (this.props.languageSelector && !header.toolbar.languageSelector) {
40798
- result = { ...result, toolbar: { ...result.toolbar, languageSelector: this.props.languageSelector } };
40814
+ if (ls && !header.toolbar.languageSelector) {
40815
+ result = { ...result, toolbar: { ...result.toolbar, languageSelector: ls } };
40799
40816
  }
40800
- if (this.props.showBackButton) {
40817
+ if (sbf) {
40801
40818
  result = { ...result, toolbar: { ...result.toolbar, withBack: true } };
40802
40819
  }
40820
+ this._hpInputs = { header, ls, sbf };
40821
+ this._hpCache = result;
40803
40822
  return result;
40804
40823
  }
40805
40824
  /**