@valtimo/dossier-management 12.3.0 → 12.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/esm2022/lib/components/dossier-management-assignee/dossier-management-assignee.component.mjs +3 -3
  2. package/esm2022/lib/components/dossier-management-create/dossier-management-create.component.mjs +3 -3
  3. package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +3 -3
  4. package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.mjs +3 -3
  5. package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.mjs +3 -3
  6. package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +3 -3
  7. package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +3 -3
  8. package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +3 -3
  9. package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +3 -3
  10. package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs +3 -3
  11. package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +4 -5
  12. package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +3 -3
  13. package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +3 -3
  14. package/esm2022/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.mjs +3 -3
  15. package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +3 -3
  16. package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.mjs +2 -2
  17. package/esm2022/lib/services/tab-management.service.mjs +2 -2
  18. package/fesm2022/valtimo-dossier-management.mjs +32 -33
  19. package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
  20. package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts.map +1 -1
  21. package/lib/services/tab-management.service.d.ts.map +1 -1
  22. package/package.json +1 -1
@@ -201,14 +201,14 @@ export class DossierManagementUploadComponent {
201
201
  }, CARBON_CONSTANTS.modalAnimationMs);
202
202
  }
203
203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadComponent, deps: [{ token: i1.DocumentService }, { token: i2.DossierManagementService }, { token: i3.FormBuilder }, { token: i4.IconService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: { open: "open" }, outputs: { closeModal: "closeModal" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i4.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "component", type: i4.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "component", type: i8.DossierManagementUploadStepComponent, selector: "valtimo-dossier-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: { open: "open" }, outputs: { closeModal: "closeModal" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "component", type: i4.FileUploader, selector: "cds-file-uploader, ibm-file-uploader", inputs: ["buttonText", "buttonType", "title", "description", "accept", "multiple", "skeleton", "size", "fileItemSize", "drop", "dropText", "fileUploaderId", "files", "disabled"], outputs: ["filesChange"] }, { kind: "component", type: i4.ProgressBar, selector: "cds-progress-bar, ibm-progress-bar", inputs: ["value", "id", "label", "helperText", "max", "type", "status", "size"] }, { kind: "component", type: i8.DossierManagementUploadStepComponent, selector: "valtimo-dossier-management-upload-step", inputs: ["illustration", "message", "title"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
205
205
  }
206
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementUploadComponent, decorators: [{
207
207
  type: Component,
208
- args: [{ selector: 'valtimo-dossier-management-upload', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
208
+ args: [{ selector: 'valtimo-dossier-management-upload', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n activeStep: activeStep$ | async,\n backButtonEnabled: backButtonEnabled$ | async,\n isStepAfterUpload: isStepAfterUpload$ | async,\n nextButtonDisabled: nextButtonDisabled$ | async,\n notificationObj: notificationObj$ | async,\n showCheckboxError: showCheckboxError$ | async,\n showCloseButton: showCloseButton$ | async,\n uploadStatus: uploadStatus$ | async,\n } as obs\"\n valtimoCdsModal\n [open]=\"open\"\n showFooter=\"true\"\n class=\"valtimo-definition-uploader\"\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header\n [showCloseButton]=\"obs.showCloseButton\"\n (closeSelect)=\"onCloseModal(obs.isStepAfterUpload && obs.uploadStatus !== UPLOAD_STATUS.ERROR)\"\n >\n <h3 cdsModalHeaderHeading>\n {{ 'dossierManagement.importDefinition.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section [ngSwitch]=\"obs.activeStep\" cdsModalContent class=\"valtimo-definition-uploader__content\">\n <ng-template ngSwitchDefault>\n <valtimo-dossier-management-upload-step\n [message]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.message' | translate\n \"\n [title]=\"\n 'dossierManagement.importDefinition.steps.' + obs.activeStep + '.title' | translate\n \"\n [illustration]=\"'valtimo-layout/img/' + obs.activeStep + '.svg'\"\n >\n </valtimo-dossier-management-upload-step>\n </ng-template>\n\n <form *ngSwitchCase=\"UPLOAD_STEP.FILE_SELECT\" [formGroup]=\"form\">\n <cds-file-uploader\n [accept]=\"acceptedFiles\"\n [buttonText]=\"'dossierManagement.importDefinition.upload.buttonText' | translate\"\n [description]=\"'dossierManagement.importDefinition.upload.description' | translate\"\n [multiple]=\"false\"\n [title]=\"'dossierManagement.importDefinition.upload.title' | translate\"\n buttonType=\"primary\"\n formControlName=\"file\"\n class=\"valtimo-definition-uploader__file-uploader\"\n >\n </cds-file-uploader>\n\n <ng-container *ngIf=\"!obs.nextButtonDisabled\">\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n\n <div class=\"valtimo-uploader__checkbox\">\n <cds-checkbox\n [class.valtimo-definition-uploader__checkbox--invalid]=\"obs.showCheckboxError\"\n (checkedChange)=\"onCheckedChange($event)\"\n >\n {{ 'dossierManagement.importDefinition.checkbox.message' | translate }}\n </cds-checkbox>\n\n <div *ngIf=\"obs.showCheckboxError\" class=\"valtimo-definition-uploader__error\">\n <svg cdsIcon=\"warning--filled\" size=\"16\"></svg>\n\n {{ 'dossierManagement.importDefinition.checkbox.error' | translate }}\n </div>\n </div>\n </ng-container>\n </form>\n\n <cds-progress-bar\n *ngSwitchCase=\"UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__progress-bar\"\n [label]=\"'dossierManagement.importDefinition.progressBar.label' | translate\"\n [status]=\"obs.uploadStatus\"\n [helperText]=\"\n 'dossierManagement.importDefinition.progressBar.' + obs.uploadStatus | translate\n \"\n ></cds-progress-bar>\n </section>\n\n <cds-modal-footer\n class=\"valtimo-definition-uploader__footer\"\n [class.valtimo-definition-uploader__footer--double]=\"obs.activeStep === UPLOAD_STEP.PLUGINS\"\n >\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.FILE_UPLOAD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"ghost\"\n (click)=\"onCloseModal(obs.isStepAfterUpload)\"\n >\n {{ (obs.isStepAfterUpload ? 'interface.skip' : 'interface.cancel') | translate }}\n </button>\n\n <div class=\"valtimo-definition-uploader__actions\">\n <button\n *ngIf=\"obs.backButtonEnabled\"\n cdsButton=\"secondary\"\n (click)=\"onBackClick(obs.activeStep)\"\n >\n {{ 'interface.back' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus !== UPLOAD_STATUS.ERROR && obs.activeStep !== UPLOAD_STEP.DASHBOARD\"\n cdsButton=\"primary\"\n [disabled]=\"obs.nextButtonDisabled\"\n (click)=\"onNextClick(obs.activeStep)\"\n >\n {{\n (obs.activeStep === UPLOAD_STEP.FILE_SELECT\n ? 'dossierManagement.importDefinition.startUpload'\n : 'interface.next'\n ) | translate\n }}\n </button>\n\n <button\n *ngIf=\"obs.uploadStatus === UPLOAD_STATUS.ERROR || obs.activeStep === UPLOAD_STEP.DASHBOARD\"\n class=\"valtimo-definition-uploader__cancel\"\n cdsButton=\"primary\"\n (click)=\"onCloseModal(true)\"\n >\n {{ 'interface.finish' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-definition-uploader__content,.valtimo-definition-uploader__content form{display:flex;flex-direction:column;gap:16px}.valtimo-definition-uploader__footer ::ng-deep .cds--modal-footer{justify-content:unset!important;display:grid!important;grid-template-columns:1fr 1fr 2fr!important;grid-template-areas:\"cancel . actions\"!important}.valtimo-definition-uploader__footer--double ::ng-deep .cds--modal-footer{grid-template-columns:1fr 1fr!important;grid-template-areas:\"cancel actions\"!important}.valtimo-definition-uploader__progress-bar{height:100%;display:flex;flex-direction:column;justify-content:center}.valtimo-definition-uploader__error{display:flex;align-items:center;gap:10px;color:#da1e28;fill:#da1e28;font-size:12px}.valtimo-definition-uploader__cancel{grid-area:cancel;width:100%}.valtimo-definition-uploader__actions{grid-area:actions;display:flex}.valtimo-definition-uploader__actions button{flex:unset;width:100%}.valtimo-definition-uploader__file-uploader ::ng-deep cds-file{max-width:unset}.valtimo-definition-uploader__checkbox{display:flex;flex-direction:column;gap:8px}.valtimo-definition-uploader__checkbox--invalid ::ng-deep label:before{border-color:#da1e28;margin-inline:0}.valtimo-definition-uploader ::ng-deep .cds--modal-container{height:550px}.valtimo-definition-uploader ::ng-deep .cds--checkbox-label-text{color:#000}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
209
209
  }], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.DossierManagementService }, { type: i3.FormBuilder }, { type: i4.IconService }, { type: i5.TranslateService }], propDecorators: { open: [{
210
210
  type: Input
211
211
  }], closeModal: [{
212
212
  type: Output
213
213
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLCtCQUErQixFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF4RixNQUFNLE9BQU8sZ0NBQWdDO0lBMEQzQyxZQUNtQixlQUFnQyxFQUNoQyx3QkFBa0Qs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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E1T1UsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsMElDeEM3QyxxZ0xBbUpBOzs0RkQzR2EsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTs4TUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtXYXJuaW5nRmlsbGVkMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50RGVmaW5pdGlvbkNyZWF0ZVJlcXVlc3QsIERvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGaWxlSXRlbSwgSWNvblNlcnZpY2UsIE5vdGlmaWNhdGlvbkNvbnRlbnR9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvc3NpZXItbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7U1RFUFMsIFVQTE9BRF9TVEFUVVMsIFVQTE9BRF9TVEVQfSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgYWNjZXB0ZWRGaWxlczogc3RyaW5nW10gPSBbJy5qc29uJywgJy56aXAnXTtcbiAgcHVibGljIHNlbGVjdGVkRmlsZTogRmlsZSB8IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVVBMT0FEX1NURVAgPSBVUExPQURfU1RFUDtcbiAgcHVibGljIHJlYWRvbmx5IFVQTE9BRF9TVEFUVVMgPSBVUExPQURfU1RBVFVTO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlU3RlcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEVQPihVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tCdXR0b25FbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5BQ0NFU1NfQ09OVFJPTCwgVVBMT0FEX1NURVAuREFTSEJPQVJEXS5pbmNsdWRlcyhcbiAgICAgICAgYWN0aXZlU3RlcFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3RlcEFmdGVyVXBsb2FkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoXG4gICAgICAoYWN0aXZlU3RlcDogVVBMT0FEX1NURVApID0+XG4gICAgICAgICFbVVBMT0FEX1NURVAuUExVR0lOUywgVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RdLmluY2x1ZGVzKGFjdGl2ZVN0ZXApXG4gICAgKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Nsb3NlQnV0dG9uJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLlBMVUdJTlMsIFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5GSUxFX1VQTE9BRF0uaW5jbHVkZXMoYWN0aXZlU3RlcClcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0QnV0dG9uRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVTdGVwJCxcbiAgICB0aGlzLl9kaXNhYmxlZCQsXG4gIF0pLnBpcGUobWFwKChbYWN0aXZlU3RlcCwgZGlzYWJsZWRdKSA9PiBhY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5QTFVHSU5TICYmIGRpc2FibGVkKSk7XG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25PYmokOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkNvbnRlbnQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLndhcm5pbmcnKSxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLm92ZXJ3cml0ZVdhcm5pbmcnKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt0aXRsZSwgbWVzc2FnZV0pID0+ICh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzaG93Q2xvc2U6IGZhbHNlLFxuICAgICAgbG93Q29udHJhc3Q6IHRydWUsXG4gICAgfSkpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hlY2tib3hFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwbG9hZFN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEFUVVM+KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZmlsZTogdGhpcy5mYi5jb250cm9sKG5ldyBTZXQ8YW55PigpLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcblxuICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW1wb3J0RmlsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IEZvcm1EYXRhPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJNYW5hZ2VtZW50U2VydmljZTogRG9zc2llck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFdhcm5pbmdGaWxsZWQxNik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChmaWxlU2V0OiBTZXQ8RmlsZUl0ZW0+KSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaWxlSXRlbV0gPSBmaWxlU2V0O1xuICAgICAgICBpZiAoIWZpbGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlSXRlbS5maWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgIHRoaXMuc2V0SnNvbkZpbGUoZmlsZUl0ZW0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0WmlwRmlsZShmaWxlSXRlbSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbChkZWZpbml0aW9uVXBsb2FkZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoZGVmaW5pdGlvblVwbG9hZGVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0TW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJhY2tDbGljayhhY3RpdmVTdGVwOiBVUExPQURfU1RFUCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZJbmRleDogbnVtYmVyID0gU1RFUFMuZmluZEluZGV4KChzdGVwOiBVUExPQURfU1RFUCkgPT4gc3RlcCA9PT0gYWN0aXZlU3RlcCkgLSAxO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTdGVwJC5uZXh0KFNURVBTW3ByZXZJbmRleF0pO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dENsaWNrKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBTVEVQUy5maW5kSW5kZXgoKHN0ZXA6IFVQTE9BRF9TVEVQKSA9PiBzdGVwID09PSBhY3RpdmVTdGVwKSArIDE7XG4gICAgaWYgKG5leHRJbmRleCA9PT0gU1RFUFMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNUICYmICF0aGlzLl9jaGVja2VkKSB7XG4gICAgICB0aGlzLnNob3dDaGVja2JveEVycm9yJC5uZXh0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChTVEVQU1tuZXh0SW5kZXhdKTtcbiAgICBpZiAoU1RFUFNbbmV4dEluZGV4XSAhPT0gVVBMT0FEX1NURVAuRklMRV9VUExPQUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwbG9hZERlZmluaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuXG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEpzb25GaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSAocmVhZGVyLnJlc3VsdCA/PyAnJykudG9TdHJpbmcoKTtcbiAgICAgIGlmICh0aGlzLnN0cmluZ0lzVmFsaWRKc29uKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3JTdGF0ZShmaWxlSXRlbSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRaaXBGaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlSXRlbS5maWxlXSwge3R5cGU6IGZpbGVJdGVtLmZpbGUudHlwZX0pO1xuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZmQuYXBwZW5kKCdmaWxlJywgYmxvYiwgZmlsZUl0ZW0uZmlsZS5uYW1lKTtcbiAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KGZkKTtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwbG9hZERlZmluaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5faW1wb3J0RmlsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZpbGU6IHN0cmluZyB8IEZvcm1EYXRhKSA9PlxuICAgICAgICAgIGZpbGUgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICAgICAgPyB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50U2VydmljZS5pbXBvcnREb2N1bWVudERlZmluaXRpb25aaXAoZmlsZSlcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuY3JlYXRlRG9jdW1lbnREZWZpbml0aW9uRm9yTWFuYWdlbWVudChcbiAgICAgICAgICAgICAgICBuZXcgRG9jdW1lbnREZWZpbml0aW9uQ3JlYXRlUmVxdWVzdChmaWxlKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRklOSVNIRUQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRVJST1IpO1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckpzb25TdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ0lzVmFsaWRKc29uKHN0cmluZzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvclN0YXRlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIGZpbGVJdGVtLmludmFsaWQgPSB0cnVlO1xuICAgIGZpbGVJdGVtLmludmFsaWRUaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uaW52YWxpZEpzb25FcnJvci50aXRsZSdcbiAgICApO1xuICAgIGZpbGVJdGVtLmludmFsaWRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5pbnZhbGlkSnNvbkVycm9yLnRleHQnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRNb2RhbCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcbiAgICAgIHRoaXMuc2hvd0NoZWNrYm94RXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICAqbmdJZj1cIntcbiAgICBhY3RpdmVTdGVwOiBhY3RpdmVTdGVwJCB8IGFzeW5jLFxuICAgIGJhY2tCdXR0b25FbmFibGVkOiBiYWNrQnV0dG9uRW5hYmxlZCQgfCBhc3luYyxcbiAgICBpc1N0ZXBBZnRlclVwbG9hZDogaXNTdGVwQWZ0ZXJVcGxvYWQkIHwgYXN5bmMsXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBuZXh0QnV0dG9uRGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgbm90aWZpY2F0aW9uT2JqOiBub3RpZmljYXRpb25PYmokIHwgYXN5bmMsXG4gICAgc2hvd0NoZWNrYm94RXJyb3I6IHNob3dDaGVja2JveEVycm9yJCB8IGFzeW5jLFxuICAgIHNob3dDbG9zZUJ1dHRvbjogc2hvd0Nsb3NlQnV0dG9uJCB8IGFzeW5jLFxuICAgIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgdmFsdGltb0Nkc01vZGFsXG4gIFtvcGVuXT1cIm9wZW5cIlxuICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4gIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyXCJcbiAgKGNsb3NlKT1cIm9uQ2xvc2VNb2RhbCgpXCJcbj5cbiAgPGNkcy1tb2RhbC1oZWFkZXJcbiAgICBbc2hvd0Nsb3NlQnV0dG9uXT1cIm9icy5zaG93Q2xvc2VCdXR0b25cIlxuICAgIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkICYmIG9icy51cGxvYWRTdGF0dXMgIT09IFVQTE9BRF9TVEFUVVMuRVJST1IpXCJcbiAgPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gW25nU3dpdGNoXT1cIm9icy5hY3RpdmVTdGVwXCIgY2RzTW9kYWxDb250ZW50IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19jb250ZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC11cGxvYWQtc3RlcFxuICAgICAgICBbbWVzc2FnZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLm1lc3NhZ2UnIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGVwcy4nICsgb2JzLmFjdGl2ZVN0ZXAgKyAnLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbaWxsdXN0cmF0aW9uXT1cIid2YWx0aW1vLWxheW91dC9pbWcvJyArIG9icy5hY3RpdmVTdGVwICsgJy5zdmcnXCJcbiAgICAgID5cbiAgICAgIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLXN0ZXA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxmb3JtICpuZ1N3aXRjaENhc2U9XCJVUExPQURfU1RFUC5GSUxFX1NFTEVDVFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGNkcy1maWxlLXVwbG9hZGVyXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgIFtidXR0b25UZXh0XT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC5idXR0b25UZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi51cGxvYWQuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnVwbG9hZC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBidXR0b25UeXBlPVwicHJpbWFyeVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZmlsZS11cGxvYWRlclwiXG4gICAgICA+XG4gICAgICA8L2Nkcy1maWxlLXVwbG9hZGVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9icy5uZXh0QnV0dG9uRGlzYWJsZWRcIj5cbiAgICAgICAgPGNkcy1pbmxpbmUtbm90aWZpY2F0aW9uIFtub3RpZmljYXRpb25PYmpdPVwib2JzLm5vdGlmaWNhdGlvbk9ialwiPjwvY2RzLWlubGluZS1ub3RpZmljYXRpb24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tdXBsb2FkZXJfX2NoZWNrYm94XCI+XG4gICAgICAgICAgPGNkcy1jaGVja2JveFxuICAgICAgICAgICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2hlY2tib3gtLWludmFsaWRdPVwib2JzLnNob3dDaGVja2JveEVycm9yXCJcbiAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5jaGVja2JveC5tZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvY2RzLWNoZWNrYm94PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm9icy5zaG93Q2hlY2tib3hFcnJvclwiIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19lcnJvclwiPlxuICAgICAgICAgICAgPHN2ZyBjZHNJY29uPVwid2FybmluZy0tZmlsbGVkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cbiAgICAgICAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLmNoZWNrYm94LmVycm9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybT5cblxuICAgIDxjZHMtcHJvZ3Jlc3MtYmFyXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiVVBMT0FEX1NURVAuRklMRV9VUExPQURcIlxuICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX3Byb2dyZXNzLWJhclwiXG4gICAgICBbbGFiZWxdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIubGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdGF0dXNdPVwib2JzLnVwbG9hZFN0YXR1c1wiXG4gICAgICBbaGVscGVyVGV4dF09XCJcbiAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24ucHJvZ3Jlc3NCYXIuJyArIG9icy51cGxvYWRTdGF0dXMgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgPjwvY2RzLXByb2dyZXNzLWJhcj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2Zvb3RlclwiXG4gICAgW2NsYXNzLnZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZm9vdGVyLS1kb3VibGVdPVwib2JzLmFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLlBMVUdJTlNcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvYnMudXBsb2FkU3RhdHVzICE9PSBVUExPQURfU1RBVFVTLkVSUk9SICYmIG9icy5hY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5GSUxFX1VQTE9BRFwiXG4gICAgICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY2FuY2VsXCJcbiAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgIChjbGljayk9XCJvbkNsb3NlTW9kYWwob2JzLmlzU3RlcEFmdGVyVXBsb2FkKVwiXG4gICAgPlxuICAgICAge3sgKG9icy5pc1N0ZXBBZnRlclVwbG9hZCA/ICdpbnRlcmZhY2Uuc2tpcCcgOiAnaW50ZXJmYWNlLmNhbmNlbCcpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLmJhY2tCdXR0b25FbmFibGVkXCJcbiAgICAgICAgY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQmFja0NsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpbnRlcmZhY2UuYmFjaycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyAhPT0gVVBMT0FEX1NUQVRVUy5FUlJPUiAmJiBvYnMuYWN0aXZlU3RlcCAhPT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMubmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV4dENsaWNrKG9icy5hY3RpdmVTdGVwKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgKG9icy5hY3RpdmVTdGVwID09PSBVUExPQURfU1RFUC5GSUxFX1NFTEVDVFxuICAgICAgICAgICAgPyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5zdGFydFVwbG9hZCdcbiAgICAgICAgICAgIDogJ2ludGVyZmFjZS5uZXh0J1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyA9PT0gVVBMT0FEX1NUQVRVUy5FUlJPUiB8fCBvYnMuYWN0aXZlU3RlcCA9PT0gVVBMT0FEX1NURVAuREFTSEJPQVJEXCJcbiAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2NhbmNlbFwiXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZU1vZGFsKHRydWUpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2ludGVyZmFjZS5maW5pc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLCtCQUErQixFQUFrQixNQUFNLG1CQUFtQixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7OztBQVF4RixNQUFNLE9BQU8sZ0NBQWdDO0lBMEQzQyxZQUNtQixlQUFnQyxFQUNoQyx3QkFBa0Qs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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E1T1UsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsMElDeEM3QyxzZ0xBbUpBOzs0RkQzR2EsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTs4TUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtXYXJuaW5nRmlsbGVkMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50RGVmaW5pdGlvbkNyZWF0ZVJlcXVlc3QsIERvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGaWxlSXRlbSwgSWNvblNlcnZpY2UsIE5vdGlmaWNhdGlvbkNvbnRlbnR9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rvc3NpZXItbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7U1RFUFMsIFVQTE9BRF9TVEFUVVMsIFVQTE9BRF9TVEVQfSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgYWNjZXB0ZWRGaWxlczogc3RyaW5nW10gPSBbJy5qc29uJywgJy56aXAnXTtcbiAgcHVibGljIHNlbGVjdGVkRmlsZTogRmlsZSB8IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVVBMT0FEX1NURVAgPSBVUExPQURfU1RFUDtcbiAgcHVibGljIHJlYWRvbmx5IFVQTE9BRF9TVEFUVVMgPSBVUExPQURfU1RBVFVTO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlU3RlcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEVQPihVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tCdXR0b25FbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5BQ0NFU1NfQ09OVFJPTCwgVVBMT0FEX1NURVAuREFTSEJPQVJEXS5pbmNsdWRlcyhcbiAgICAgICAgYWN0aXZlU3RlcFxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3RlcEFmdGVyVXBsb2FkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoXG4gICAgICAoYWN0aXZlU3RlcDogVVBMT0FEX1NURVApID0+XG4gICAgICAgICFbVVBMT0FEX1NURVAuUExVR0lOUywgVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RdLmluY2x1ZGVzKGFjdGl2ZVN0ZXApXG4gICAgKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Nsb3NlQnV0dG9uJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWN0aXZlU3RlcCQucGlwZShcbiAgICBtYXAoKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKSA9PlxuICAgICAgW1VQTE9BRF9TVEVQLlBMVUdJTlMsIFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNULCBVUExPQURfU1RFUC5GSUxFX1VQTE9BRF0uaW5jbHVkZXMoYWN0aXZlU3RlcClcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0QnV0dG9uRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVTdGVwJCxcbiAgICB0aGlzLl9kaXNhYmxlZCQsXG4gIF0pLnBpcGUobWFwKChbYWN0aXZlU3RlcCwgZGlzYWJsZWRdKSA9PiBhY3RpdmVTdGVwICE9PSBVUExPQURfU1RFUC5QTFVHSU5TICYmIGRpc2FibGVkKSk7XG4gIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25PYmokOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkNvbnRlbnQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLndhcm5pbmcnKSxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLm92ZXJ3cml0ZVdhcm5pbmcnKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt0aXRsZSwgbWVzc2FnZV0pID0+ICh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0aXRsZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzaG93Q2xvc2U6IGZhbHNlLFxuICAgICAgbG93Q29udHJhc3Q6IHRydWUsXG4gICAgfSkpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hlY2tib3hFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwbG9hZFN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVQTE9BRF9TVEFUVVM+KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZmlsZTogdGhpcy5mYi5jb250cm9sKG5ldyBTZXQ8YW55PigpLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcblxuICBwcml2YXRlIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW1wb3J0RmlsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IEZvcm1EYXRhPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJNYW5hZ2VtZW50U2VydmljZTogRG9zc2llck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFdhcm5pbmdGaWxsZWQxNik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChmaWxlU2V0OiBTZXQ8RmlsZUl0ZW0+KSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaWxlSXRlbV0gPSBmaWxlU2V0O1xuICAgICAgICBpZiAoIWZpbGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlSXRlbS5maWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykge1xuICAgICAgICAgIHRoaXMuc2V0SnNvbkZpbGUoZmlsZUl0ZW0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0WmlwRmlsZShmaWxlSXRlbSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbChkZWZpbml0aW9uVXBsb2FkZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoZGVmaW5pdGlvblVwbG9hZGVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0TW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJhY2tDbGljayhhY3RpdmVTdGVwOiBVUExPQURfU1RFUCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZJbmRleDogbnVtYmVyID0gU1RFUFMuZmluZEluZGV4KChzdGVwOiBVUExPQURfU1RFUCkgPT4gc3RlcCA9PT0gYWN0aXZlU3RlcCkgLSAxO1xuICAgIGlmIChwcmV2SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTdGVwJC5uZXh0KFNURVBTW3ByZXZJbmRleF0pO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dENsaWNrKGFjdGl2ZVN0ZXA6IFVQTE9BRF9TVEVQKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEluZGV4OiBudW1iZXIgPSBTVEVQUy5maW5kSW5kZXgoKHN0ZXA6IFVQTE9BRF9TVEVQKSA9PiBzdGVwID09PSBhY3RpdmVTdGVwKSArIDE7XG4gICAgaWYgKG5leHRJbmRleCA9PT0gU1RFUFMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLkZJTEVfU0VMRUNUICYmICF0aGlzLl9jaGVja2VkKSB7XG4gICAgICB0aGlzLnNob3dDaGVja2JveEVycm9yJC5uZXh0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChTVEVQU1tuZXh0SW5kZXhdKTtcbiAgICBpZiAoU1RFUFNbbmV4dEluZGV4XSAhPT0gVVBMT0FEX1NURVAuRklMRV9VUExPQUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwbG9hZERlZmluaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrZWQgPSBjaGVja2VkO1xuXG4gICAgaWYgKCFjaGVja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Q2hlY2tib3hFcnJvciQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEpzb25GaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSAocmVhZGVyLnJlc3VsdCA/PyAnJykudG9TdHJpbmcoKTtcbiAgICAgIGlmICh0aGlzLnN0cmluZ0lzVmFsaWRKc29uKHJlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhckpzb25TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3JTdGF0ZShmaWxlSXRlbSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRaaXBGaWxlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlSXRlbT8uZmlsZTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlSXRlbS5maWxlXSwge3R5cGU6IGZpbGVJdGVtLmZpbGUudHlwZX0pO1xuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZmQuYXBwZW5kKCdmaWxlJywgYmxvYiwgZmlsZUl0ZW0uZmlsZS5uYW1lKTtcbiAgICB0aGlzLl9pbXBvcnRGaWxlJC5uZXh0KGZkKTtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwbG9hZERlZmluaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5faW1wb3J0RmlsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZpbGU6IHN0cmluZyB8IEZvcm1EYXRhKSA9PlxuICAgICAgICAgIGZpbGUgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICAgICAgPyB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50U2VydmljZS5pbXBvcnREb2N1bWVudERlZmluaXRpb25aaXAoZmlsZSlcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuY3JlYXRlRG9jdW1lbnREZWZpbml0aW9uRm9yTWFuYWdlbWVudChcbiAgICAgICAgICAgICAgICBuZXcgRG9jdW1lbnREZWZpbml0aW9uQ3JlYXRlUmVxdWVzdChmaWxlKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRklOSVNIRUQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuRVJST1IpO1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckpzb25TdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5faW1wb3J0RmlsZSQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ0lzVmFsaWRKc29uKHN0cmluZzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvclN0YXRlKGZpbGVJdGVtOiBGaWxlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KHRydWUpO1xuICAgIGZpbGVJdGVtLmludmFsaWQgPSB0cnVlO1xuICAgIGZpbGVJdGVtLmludmFsaWRUaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uaW52YWxpZEpzb25FcnJvci50aXRsZSdcbiAgICApO1xuICAgIGZpbGVJdGVtLmludmFsaWRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5pbnZhbGlkSnNvbkVycm9yLnRleHQnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRNb2RhbCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlU3RlcCQubmV4dChVUExPQURfU1RFUC5QTFVHSU5TKTtcbiAgICAgIHRoaXMudXBsb2FkU3RhdHVzJC5uZXh0KFVQTE9BRF9TVEFUVVMuQUNUSVZFKTtcbiAgICAgIHRoaXMuc2hvd0NoZWNrYm94RXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICAqbmdJZj1cIntcbiAgICBhY3RpdmVTdGVwOiBhY3RpdmVTdGVwJCB8IGFzeW5jLFxuICAgIGJhY2tCdXR0b25FbmFibGVkOiBiYWNrQnV0dG9uRW5hYmxlZCQgfCBhc3luYyxcbiAgICBpc1N0ZXBBZnRlclVwbG9hZDogaXNTdGVwQWZ0ZXJVcGxvYWQkIHwgYXN5bmMsXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBuZXh0QnV0dG9uRGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgbm90aWZpY2F0aW9uT2JqOiBub3RpZmljYXRpb25PYmokIHwgYXN5bmMsXG4gICAgc2hvd0NoZWNrYm94RXJyb3I6IHNob3dDaGVja2JveEVycm9yJCB8IGFzeW5jLFxuICAgIHNob3dDbG9zZUJ1dHRvbjogc2hvd0Nsb3NlQnV0dG9uJCB8IGFzeW5jLFxuICAgIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4gIHZhbHRpbW9DZHNNb2RhbFxuICBbb3Blbl09XCJvcGVuXCJcbiAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuICBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlclwiXG4gIChjbG9zZSk9XCJvbkNsb3NlTW9kYWwoKVwiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyXG4gICAgW3Nob3dDbG9zZUJ1dHRvbl09XCJvYnMuc2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAoY2xvc2VTZWxlY3QpPVwib25DbG9zZU1vZGFsKG9icy5pc1N0ZXBBZnRlclVwbG9hZCAmJiBvYnMudXBsb2FkU3RhdHVzICE9PSBVUExPQURfU1RBVFVTLkVSUk9SKVwiXG4gID5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24udGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIFtuZ1N3aXRjaF09XCJvYnMuYWN0aXZlU3RlcFwiIGNkc01vZGFsQ29udGVudCBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fY29udGVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLXN0ZXBcbiAgICAgICAgW21lc3NhZ2VdPVwiXG4gICAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uc3RlcHMuJyArIG9icy5hY3RpdmVTdGVwICsgJy5tZXNzYWdlJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uc3RlcHMuJyArIG9icy5hY3RpdmVTdGVwICsgJy50aXRsZScgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgW2lsbHVzdHJhdGlvbl09XCIndmFsdGltby1sYXlvdXQvaW1nLycgKyBvYnMuYWN0aXZlU3RlcCArICcuc3ZnJ1wiXG4gICAgICA+XG4gICAgICA8L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC1zdGVwPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8Zm9ybSAqbmdTd2l0Y2hDYXNlPVwiVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgIDxjZHMtZmlsZS11cGxvYWRlclxuICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICBbYnV0dG9uVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi51cGxvYWQuYnV0dG9uVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24udXBsb2FkLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgIFt0aXRsZV09XCInZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi51cGxvYWQudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgYnV0dG9uVHlwZT1cInByaW1hcnlcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaWxlXCJcbiAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2ZpbGUtdXBsb2FkZXJcIlxuICAgICAgPlxuICAgICAgPC9jZHMtZmlsZS11cGxvYWRlcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvYnMubmV4dEJ1dHRvbkRpc2FibGVkXCI+XG4gICAgICAgIDxjZHMtaW5saW5lLW5vdGlmaWNhdGlvbiBbbm90aWZpY2F0aW9uT2JqXT1cIm9icy5ub3RpZmljYXRpb25PYmpcIj48L2Nkcy1pbmxpbmUtbm90aWZpY2F0aW9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLXVwbG9hZGVyX19jaGVja2JveFwiPlxuICAgICAgICAgIDxjZHMtY2hlY2tib3hcbiAgICAgICAgICAgIFtjbGFzcy52YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2NoZWNrYm94LS1pbnZhbGlkXT1cIm9icy5zaG93Q2hlY2tib3hFcnJvclwiXG4gICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uY2hlY2tib3gubWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Nkcy1jaGVja2JveD5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYnMuc2hvd0NoZWNrYm94RXJyb3JcIiBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fZXJyb3JcIj5cbiAgICAgICAgICAgIDxzdmcgY2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXG4gICAgICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuaW1wb3J0RGVmaW5pdGlvbi5jaGVja2JveC5lcnJvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8Y2RzLXByb2dyZXNzLWJhclxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIlVQTE9BRF9TVEVQLkZJTEVfVVBMT0FEXCJcbiAgICAgIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19wcm9ncmVzcy1iYXJcIlxuICAgICAgW2xhYmVsXT1cIidkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnByb2dyZXNzQmFyLmxhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc3RhdHVzXT1cIm9icy51cGxvYWRTdGF0dXNcIlxuICAgICAgW2hlbHBlclRleHRdPVwiXG4gICAgICAgICdkb3NzaWVyTWFuYWdlbWVudC5pbXBvcnREZWZpbml0aW9uLnByb2dyZXNzQmFyLicgKyBvYnMudXBsb2FkU3RhdHVzIHwgdHJhbnNsYXRlXG4gICAgICBcIlxuICAgID48L2Nkcy1wcm9ncmVzcy1iYXI+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3RlclxuICAgIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19mb290ZXJcIlxuICAgIFtjbGFzcy52YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2Zvb3Rlci0tZG91YmxlXT1cIm9icy5hY3RpdmVTdGVwID09PSBVUExPQURfU1RFUC5QTFVHSU5TXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwib2JzLnVwbG9hZFN0YXR1cyAhPT0gVVBMT0FEX1NUQVRVUy5FUlJPUiAmJiBvYnMuYWN0aXZlU3RlcCAhPT0gVVBMT0FEX1NURVAuRklMRV9VUExPQURcIlxuICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRlZmluaXRpb24tdXBsb2FkZXJfX2NhbmNlbFwiXG4gICAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgICAoY2xpY2spPVwib25DbG9zZU1vZGFsKG9icy5pc1N0ZXBBZnRlclVwbG9hZClcIlxuICAgID5cbiAgICAgIHt7IChvYnMuaXNTdGVwQWZ0ZXJVcGxvYWQgPyAnaW50ZXJmYWNlLnNraXAnIDogJ2ludGVyZmFjZS5jYW5jZWwnKSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tZGVmaW5pdGlvbi11cGxvYWRlcl9fYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIm9icy5iYWNrQnV0dG9uRW5hYmxlZFwiXG4gICAgICAgIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiXG4gICAgICAgIChjbGljayk9XCJvbkJhY2tDbGljayhvYnMuYWN0aXZlU3RlcClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaW50ZXJmYWNlLmJhY2snIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIm9icy51cGxvYWRTdGF0dXMgIT09IFVQTE9BRF9TVEFUVVMuRVJST1IgJiYgb2JzLmFjdGl2ZVN0ZXAgIT09IFVQTE9BRF9TVEVQLkRBU0hCT0FSRFwiXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLm5leHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvbk5leHRDbGljayhvYnMuYWN0aXZlU3RlcClcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIChvYnMuYWN0aXZlU3RlcCA9PT0gVVBMT0FEX1NURVAuRklMRV9TRUxFQ1RcbiAgICAgICAgICAgID8gJ2Rvc3NpZXJNYW5hZ2VtZW50LmltcG9ydERlZmluaXRpb24uc3RhcnRVcGxvYWQnXG4gICAgICAgICAgICA6ICdpbnRlcmZhY2UubmV4dCdcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIm9icy51cGxvYWRTdGF0dXMgPT09IFVQTE9BRF9TVEFUVVMuRVJST1IgfHwgb2JzLmFjdGl2ZVN0ZXAgPT09IFVQTE9BRF9TVEVQLkRBU0hCT0FSRFwiXG4gICAgICAgIGNsYXNzPVwidmFsdGltby1kZWZpbml0aW9uLXVwbG9hZGVyX19jYW5jZWxcIlxuICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VNb2RhbCh0cnVlKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpbnRlcmZhY2UuZmluaXNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbjwvY2RzLW1vZGFsPlxuIl19