@valtimo/components 11.1.4 → 11.2.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 (50) hide show
  1. package/assets/css/carbon.scss +14 -11
  2. package/esm2022/lib/components/carbon-list/carbon-list.component.mjs +188 -107
  3. package/esm2022/lib/components/carbon-list/carbon-list.module.mjs +7 -4
  4. package/esm2022/lib/components/editor/editor.component.mjs +5 -3
  5. package/esm2022/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.mjs +11 -1
  6. package/esm2022/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.mjs +11 -1
  7. package/esm2022/lib/components/left-sidebar/left-sidebar.component.mjs +1 -1
  8. package/esm2022/lib/components/menu/menu-item-text.component.mjs +3 -3
  9. package/esm2022/lib/components/multi-input/carbon-multi-input.component.mjs +3 -3
  10. package/esm2022/lib/components/page-title/page-title.component.mjs +4 -3
  11. package/esm2022/lib/components/page-title/page-title.service.mjs +11 -1
  12. package/esm2022/lib/components/select/select.component.mjs +3 -3
  13. package/esm2022/lib/components/table/table.component.mjs +3 -3
  14. package/esm2022/lib/components/uploader/uploader.component.mjs +2 -2
  15. package/esm2022/lib/constants/view-type-converter.constants.mjs +1 -1
  16. package/esm2022/lib/directives/render-in-page-header/render-in-page-header.directive.mjs +7 -3
  17. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +3 -3
  18. package/esm2022/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button-directive.module.mjs +33 -0
  19. package/esm2022/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button.directive.mjs +82 -0
  20. package/esm2022/lib/models/carbon-list.model.mjs +7 -2
  21. package/esm2022/public_api.mjs +4 -1
  22. package/fesm2022/valtimo-components.mjs +362 -132
  23. package/fesm2022/valtimo-components.mjs.map +1 -1
  24. package/lib/components/carbon-list/carbon-list.component.d.ts +43 -17
  25. package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
  26. package/lib/components/carbon-list/carbon-list.module.d.ts +1 -1
  27. package/lib/components/carbon-list/carbon-list.module.d.ts.map +1 -1
  28. package/lib/components/editor/editor.component.d.ts +2 -1
  29. package/lib/components/editor/editor.component.d.ts.map +1 -1
  30. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts +10 -10
  31. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts.map +1 -1
  32. package/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +9 -9
  33. package/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts.map +1 -1
  34. package/lib/components/left-sidebar/left-sidebar.component.d.ts.map +1 -1
  35. package/lib/components/page-title/page-title.component.d.ts +1 -0
  36. package/lib/components/page-title/page-title.component.d.ts.map +1 -1
  37. package/lib/components/page-title/page-title.service.d.ts +4 -0
  38. package/lib/components/page-title/page-title.service.d.ts.map +1 -1
  39. package/lib/constants/view-type-converter.constants.d.ts.map +1 -1
  40. package/lib/directives/render-in-page-header/render-in-page-header.directive.d.ts +2 -1
  41. package/lib/directives/render-in-page-header/render-in-page-header.directive.d.ts.map +1 -1
  42. package/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button-directive.module.d.ts +9 -0
  43. package/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button-directive.module.d.ts.map +1 -0
  44. package/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button.directive.d.ts +22 -0
  45. package/lib/directives/valtimo-cds-overflow-button/valtimo-cds-overflow-button.directive.d.ts.map +1 -0
  46. package/lib/models/carbon-list.model.d.ts +13 -2
  47. package/lib/models/carbon-list.model.d.ts.map +1 -1
  48. package/package.json +3 -2
  49. package/public_api.d.ts +2 -0
  50. package/public_api.d.ts.map +1 -1
@@ -156,11 +156,11 @@ export class CarbonMultiInputComponent {
156
156
  });
157
157
  }
158
158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: { name: "name", title: "title", titleTranslationKey: "titleTranslationKey", type: "type", initialAmountOfRows: "initialAmountOfRows", minimumAmountOfRows: "minimumAmountOfRows", maxRows: "maxRows", addRowText: "addRowText", addRowTranslationKey: "addRowTranslationKey", deleteRowText: "deleteRowText", deleteRowTranslationKey: "deleteRowTranslationKey", disabled: "disabled", defaultValues: "defaultValues", margin: "margin", tooltip: "tooltip", required: "required", keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", dropdownColumnTitle: "dropdownColumnTitle", hideDeleteButton: "hideDeleteButton", hideAddButton: "hideAddButton", dropdownItems: "dropdownItems", dropdownWidth: "dropdownWidth", fullWidth: "fullWidth" }, outputs: { valueChange: "valueChange", allValuesValidEvent: "allValuesValidEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyDropdownValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyDropdownValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n (click)=\"addRow()\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (change)=\"onValueChange(value, $event, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\" let-index=\"index\">\n <div class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n keyColumnTitle\n }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n <div class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n valueColumnTitle\n }}</cds-label>\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyDropdownValue let-value=\"value\" let-index=\"index\">\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n\n <div [style.minWidth.px]=\"dropdownWidth\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown (selected)=\"onValueChange(value, $event.item.id, 'dropdown')\">\n <cds-dropdown-list\n [items]=\"getDropdownItemsForRow(index) | async\"\n type=\"multi\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i4.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: { name: "name", title: "title", titleTranslationKey: "titleTranslationKey", type: "type", initialAmountOfRows: "initialAmountOfRows", minimumAmountOfRows: "minimumAmountOfRows", maxRows: "maxRows", addRowText: "addRowText", addRowTranslationKey: "addRowTranslationKey", deleteRowText: "deleteRowText", deleteRowTranslationKey: "deleteRowTranslationKey", disabled: "disabled", defaultValues: "defaultValues", margin: "margin", tooltip: "tooltip", required: "required", keyColumnTitle: "keyColumnTitle", valueColumnTitle: "valueColumnTitle", dropdownColumnTitle: "dropdownColumnTitle", hideDeleteButton: "hideDeleteButton", hideAddButton: "hideAddButton", dropdownItems: "dropdownItems", dropdownWidth: "dropdownWidth", fullWidth: "fullWidth" }, outputs: { valueChange: "valueChange", allValuesValidEvent: "allValuesValidEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyDropdownValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyDropdownValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n (click)=\"addRow()\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (change)=\"onValueChange(value, $event, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\" let-index=\"index\">\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n keyColumnTitle\n }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n valueColumnTitle\n }}</cds-label>\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyDropdownValue let-value=\"value\" let-index=\"index\">\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n\n <div [style.minWidth.px]=\"dropdownWidth\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown\n (selected)=\"onValueChange(value, $event.item.id, 'dropdown')\"\n [appendInline]=\"true\"\n >\n <cds-dropdown-list\n [items]=\"getDropdownItemsForRow(index) | async\"\n type=\"multi\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i4.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
160
160
  }
161
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
162
162
  type: Component,
163
- args: [{ selector: 'valtimo-carbon-multi-input', template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyDropdownValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyDropdownValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n (click)=\"addRow()\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (change)=\"onValueChange(value, $event, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\" let-index=\"index\">\n <div class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n keyColumnTitle\n }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n <div class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n valueColumnTitle\n }}</cds-label>\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyDropdownValue let-value=\"value\" let-index=\"index\">\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n\n <div [style.minWidth.px]=\"dropdownWidth\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown (selected)=\"onValueChange(value, $event.item.id, 'dropdown')\">\n <cds-dropdown-list\n [items]=\"getDropdownItemsForRow(index) | async\"\n type=\"multi\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{width:100%}\n"] }]
163
+ args: [{ selector: 'valtimo-carbon-multi-input', template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n class=\"v-multi-input\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n\n <div class=\"v-multi-input__rows\">\n <div\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn; index as i\"\n class=\"v-multi-input__row\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'keyDropdownValue'\">\n <ng-container\n *ngTemplateOutlet=\"keyDropdownValue; context: {value: value, index: i}\"\n ></ng-container>\n </ng-container>\n\n <button\n *ngIf=\"!hideDeleteButton\"\n cdsButton=\"danger\"\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n [iconOnly]=\"true\"\n size=\"md\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n\n <div class=\"v-multi-input__add-button\">\n <button\n *ngIf=\"!hideAddButton\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n (click)=\"addRow()\"\n >\n {{ vars.addRowText }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (change)=\"onValueChange(value, $event, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\" let-index=\"index\">\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n keyColumnTitle\n }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n <div class=\"v-multi-input__input\" [ngClass]=\"{'--full-width': fullWidth}\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle && valueColumnTitle\">{{\n valueColumnTitle\n }}</cds-label>\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyDropdownValue let-value=\"value\" let-index=\"index\">\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && keyColumnTitle\">{{ keyColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.key\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n />\n </div>\n\n <div [style.minWidth.px]=\"dropdownWidth\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && dropdownColumnTitle\">{{ dropdownColumnTitle }}</cds-label>\n\n <cds-dropdown\n (selected)=\"onValueChange(value, $event.item.id, 'dropdown')\"\n [appendInline]=\"true\"\n >\n <cds-dropdown-list\n [items]=\"getDropdownItemsForRow(index) | async\"\n type=\"multi\"\n ></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div [ngClass]=\"{'--full-width': fullWidth}\" class=\"v-multi-input__input\">\n <cds-label *ngIf=\"index === 0 && valueColumnTitle\">{{ valueColumnTitle }}</cds-label>\n\n <input\n cdsText\n [defaultValue]=\"value.value\"\n [disabled]=\"disabled\"\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n />\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:flex-end;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}.v-multi-input__input.--full-width{width:100%}\n"] }]
164
164
  }], propDecorators: { name: [{
165
165
  type: Input
166
166
  }], title: [{
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
214
214
  }], allValuesValidEvent: [{
215
215
  type: Output
216
216
  }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFReEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPbEMsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU1rQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6QixTQUFJLEdBQW1CLE9BQU8sQ0FBQztRQUMvQix3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQiw0QkFBdUIs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QkFDRSw0QkFBNEI7OEJBS3RCLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSx1QkFBdUI7c0JBQXRDLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDYyxhQUFhO3NCQUFoQyxLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFFVyxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLG1CQUFtQjtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIExpc3RJdGVtV2l0aElkLFxuICBNdWx0aUlucHV0S2V5VmFsdWUsXG4gIE11bHRpSW5wdXRPdXRwdXQsXG4gIE11bHRpSW5wdXRUeXBlLFxuICBNdWx0aUlucHV0VmFsdWVzLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNhcmJvbi1tdWx0aS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJib24tbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJib24tbXVsdGktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyYm9uTXVsdGlJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIG5hbWUgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZVRyYW5zbGF0aW9uS2V5ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBNdWx0aUlucHV0VHlwZSA9ICd2YWx1ZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFsQW1vdW50T2ZSb3dzID0gMTtcbiAgQElucHV0KCkgcHVibGljIG1pbmltdW1BbW91bnRPZlJvd3MgPSAxO1xuICBASW5wdXQoKSBwdWJsaWMgbWF4Um93cyA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBhZGRSb3dUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhZGRSb3dUcmFuc2xhdGlvbktleSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlUm93VGV4dCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlUm93VHJhbnNsYXRpb25LZXkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0VmFsdWVzITogTXVsdGlJbnB1dFZhbHVlcztcbiAgQElucHV0KCkgcHVibGljIG1hcmdpbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGtleUNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZUNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93bkNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlRGVsZXRlQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlQWRkQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZHJvcGRvd25JdGVtcyh2YWx1ZTogQXJyYXk8TGlzdEl0ZW1XaXRoSWQ+KSB7XG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25XaWR0aCA9IDI1MDtcbiAgQElucHV0KCkgcHVibGljIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0T3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBhbGxWYWx1ZXNWYWxpZEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE11bHRpSW5wdXRWYWx1ZXM+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hcHBlZFZhbHVlcyQ6IE9ic2VydmFibGU8TXVsdGlJbnB1dE91dHB1dD4gPSB0aGlzLnZhbHVlcyQucGlwZShcbiAgICBtYXAoXG4gICAgICB2YWx1ZXMgPT5cbiAgICAgICAgdmFsdWVzXG4gICAgICAgICAgLm1hcCh2YWx1ZSA9PiB0aGlzLmdldE1hcHBlZFZhbHVlKHZhbHVlKSlcbiAgICAgICAgICAuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgIGNhc2UgJ2tleVZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkudmFsdWUgJiYgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkua2V5O1xuICAgICAgICAgICAgICBjYXNlICdrZXlEcm9wZG93blZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBNdWx0aUlucHV0S2V5VmFsdWUpLmtleSAmJlxuICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkuZHJvcGRvd25cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIGFzIE11bHRpSW5wdXRPdXRwdXRcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRSb3dFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIG1hcCh2YWx1ZXMgPT4gISEodGhpcy5tYXhSb3dzID09PSBudWxsIHx8IHZhbHVlcy5sZW5ndGggPCB0aGlzLm1heFJvd3MpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93bkl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8TGlzdEl0ZW1XaXRoSWQ+PihbXSk7XG5cbiAgcHJpdmF0ZSBfdmFsdWVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQubmV4dCh0aGlzLmdldEluaXRpYWxSb3dzKCkpO1xuICAgIHRoaXMub3BlblZhbHVlc1N1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRSb3coKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy52YWx1ZXMkLCB0aGlzLmFkZFJvd0VuYWJsZWQkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbdmFsdWVzLCBhZGRSb3dFbmFibGVkXSkgPT4ge1xuICAgICAgICBpZiAoYWRkUm93RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KFsuLi52YWx1ZXMsIHRoaXMuZ2V0RW1wdHlWYWx1ZSgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gdGhpcy5taW5pbXVtQW1vdW50T2ZSb3dzKSB7XG4gICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUudXVpZCAhPT0gdXVpZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCB2YWx1ZTogTXVsdGlJbnB1dEtleVZhbHVlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUudXVpZCBhcyBzdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RHJvcGRvd25JdGVtc0ZvclJvdyhpbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbVdpdGhJZD4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5kcm9wZG93bkl0ZW1zJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duSXRlbXMsIHZhbHVlc10pID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdmFsdWVzW2luZGV4XSB8fCB0aGlzLmRlZmF1bHRWYWx1ZXNbaW5kZXhdO1xuXG4gICAgICAgIHJldHVybiBkcm9wZG93bkl0ZW1zLm1hcChkcm9wZG93bkl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5kcm9wZG93bkl0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IGRlZmF1bHRWYWx1ZSA/IGRyb3Bkb3duSXRlbS5pZCA9PT0gZGVmYXVsdFZhbHVlLmRyb3Bkb3duIDogZmFsc2UsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlKFxuICAgIHRlbXBsYXRlVmFsdWU6IE11bHRpSW5wdXRLZXlWYWx1ZSxcbiAgICBpbnB1dFZhbHVlOiBzdHJpbmcsXG4gICAgY2hhbmdlOiAna2V5JyB8ICd2YWx1ZScgfCAnZHJvcGRvd24nXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh2YWx1ZXMgPT4ge1xuICAgICAgdGhpcy52YWx1ZXMkLm5leHQoXG4gICAgICAgIHZhbHVlcy5tYXAoc3RhdGVWYWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlVmFsdWUudXVpZCA9PT0gdGVtcGxhdGVWYWx1ZS51dWlkKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwgdmFsdWU6IGlucHV0VmFsdWV9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UgPT09ICdrZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwga2V5OiBpbnB1dFZhbHVlfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwgZHJvcGRvd246IGlucHV0VmFsdWV9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc3RhdGVWYWx1ZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxSb3dzKCk6IE11bHRpSW5wdXRWYWx1ZXMge1xuICAgIGNvbnN0IG1pbmltdW1Sb3dzID0gdGhpcy5taW5pbXVtQW1vdW50T2ZSb3dzO1xuICAgIGNvbnN0IGluaXRpYWxSb3dzID0gdGhpcy5pbml0aWFsQW1vdW50T2ZSb3dzO1xuICAgIGNvbnN0IGFtb3VudE9mSW5pdGFsUm93cyA9IE1hdGgubWF4KG1pbmltdW1Sb3dzLCBpbml0aWFsUm93cyk7XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheShhbW91bnRPZkluaXRhbFJvd3MpLmZpbGwodGhpcy5nZXRFbXB0eVZhbHVlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZXMubWFwKGRlZmF1bHRWYWx1ZSA9PiAoey4uLmRlZmF1bHRWYWx1ZSwgdXVpZDogdXVpZHY0KCl9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVtcHR5VmFsdWUoKTogTXVsdGlJbnB1dEtleVZhbHVlIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiAnJyxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHV1aWQ6IHV1aWR2NCgpLFxuICAgICAgZHJvcGRvd246ICcnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE1hcHBlZFZhbHVlKHZhbHVlVG9NYXA6IE11bHRpSW5wdXRLZXlWYWx1ZSk6IE11bHRpSW5wdXRLZXlWYWx1ZSB8IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2tleVZhbHVlJykge1xuICAgICAgcmV0dXJuIHtrZXk6IHZhbHVlVG9NYXAua2V5LCB2YWx1ZTogdmFsdWVUb01hcC52YWx1ZX07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdrZXlEcm9wZG93blZhbHVlJykge1xuICAgICAgcmV0dXJuIHtrZXk6IHZhbHVlVG9NYXAua2V5LCB2YWx1ZTogdmFsdWVUb01hcC52YWx1ZSwgZHJvcGRvd246IHZhbHVlVG9NYXAuZHJvcGRvd259O1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVRvTWFwLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmFsdWVzU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlc1N1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudmFsdWVzJCwgdGhpcy5tYXBwZWRWYWx1ZXMkXSkuc3Vic2NyaWJlKFxuICAgICAgKFt2YWx1ZXMsIG1hcHBlZFZhbHVlc10pID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG1hcHBlZFZhbHVlcyk7XG4gICAgICAgIHRoaXMuYWxsVmFsdWVzVmFsaWRFdmVudC5lbWl0KHZhbHVlcy5sZW5ndGggPT09IG1hcHBlZFZhbHVlcy5sZW5ndGgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBhZGRSb3dUZXh0OlxuICAgICAgYWRkUm93VGV4dCB8fCBhZGRSb3dUcmFuc2xhdGlvbktleVxuICAgICAgICA/IGFkZFJvd1RyYW5zbGF0aW9uS2V5XG4gICAgICAgICAgPyAoYWRkUm93VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiBhZGRSb3dUZXh0XG4gICAgICAgIDogKCdpbnRlcmZhY2UuYWRkUm93JyB8IHRyYW5zbGF0ZSksXG4gICAgZGVsZXRlUm93VGV4dDpcbiAgICAgIGRlbGV0ZVJvd1RleHQgfHwgZGVsZXRlUm93VHJhbnNsYXRpb25LZXlcbiAgICAgICAgPyBkZWxldGVSb3dUcmFuc2xhdGlvbktleVxuICAgICAgICAgID8gKGRlbGV0ZVJvd1RyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogZGVsZXRlUm93VGV4dFxuICAgICAgICA6ICgnaW50ZXJmYWNlLmRlbGV0ZVJvdycgfCB0cmFuc2xhdGUpXG4gIH0gYXMgdmFyc1wiXG4gIFtuZ0NsYXNzXT1cInsndi1tdWx0aS1pbnB1dC0tbWFyZ2luJzogbWFyZ2lufVwiXG4gIGNsYXNzPVwidi1tdWx0aS1pbnB1dFwiXG4+XG4gIDx2LWlucHV0LWxhYmVsXG4gICAgKm5nSWY9XCJ0aXRsZSB8fCB0aXRsZVRyYW5zbGF0aW9uS2V5XCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFt0aXRsZVRyYW5zbGF0aW9uS2V5XT1cInRpdGxlVHJhbnNsYXRpb25LZXlcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXG4gID5cbiAgPC92LWlucHV0LWxhYmVsPlxuXG4gIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19yb3dzXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHZhbHVlcyQgfCBhc3luYyBhcyB2YWx1ZXM7IHRyYWNrQnk6IHRyYWNrQnlGbjsgaW5kZXggYXMgaVwiXG4gICAgICBjbGFzcz1cInYtbXVsdGktaW5wdXRfX3Jvd1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICd2YWx1ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAna2V5VmFsdWUnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImtleVZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlLCBpbmRleDogaX1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdrZXlEcm9wZG93blZhbHVlJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJrZXlEcm9wZG93blZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlLCBpbmRleDogaX1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFoaWRlRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgY2RzQnV0dG9uPVwiZGFuZ2VyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInZhbHVlcz8ubGVuZ3RoIDw9IHRoaXMubWluaW11bUFtb3VudE9mUm93cyB8fCBkaXNhYmxlZFwiXG4gICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdyh2YWx1ZS51dWlkKVwiXG4gICAgICAgIFt0aXRsZV09XCJ2YXJzLmRlbGV0ZVJvd1RleHRcIlxuICAgICAgPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19hZGQtYnV0dG9uXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWhpZGVBZGRCdXR0b25cIlxuICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIihhZGRSb3dFbmFibGVkJCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIlxuICAgICAgPlxuICAgICAgICB7eyB2YXJzLmFkZFJvd1RleHQgfX1cblxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaW5nbGVWYWx1ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICA8ZGl2IGNsYXNzPVwidi1tdWx0aS1pbnB1dF9faW5wdXRcIj5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LCAndmFsdWUnKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2tleVZhbHVlIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInYtbXVsdGktaW5wdXRfX2lucHV0XCI+XG4gICAgPGNkcy1sYWJlbCAqbmdJZj1cImluZGV4ID09PSAwICYmIGtleUNvbHVtblRpdGxlICYmIHZhbHVlQ29sdW1uVGl0bGVcIj57e1xuICAgICAga2V5Q29sdW1uVGl0bGVcbiAgICB9fTwvY2RzLWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICBjZHNUZXh0XG4gICAgICBbZGVmYXVsdFZhbHVlXT1cInZhbHVlLmtleVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudC50YXJnZXQudmFsdWUsICdrZXknKVwiXG4gICAgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBrZXlDb2x1bW5UaXRsZSAmJiB2YWx1ZUNvbHVtblRpdGxlXCI+e3tcbiAgICAgIHZhbHVlQ29sdW1uVGl0bGVcbiAgICB9fTwvY2RzLWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2RzVGV4dFxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJ2YWx1ZS52YWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudC50YXJnZXQudmFsdWUsICd2YWx1ZScpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAja2V5RHJvcGRvd25WYWx1ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyctLWZ1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCIgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBrZXlDb2x1bW5UaXRsZVwiPnt7IGtleUNvbHVtblRpdGxlIH19PC9jZHMtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUua2V5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2tleScpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8ZGl2IFtzdHlsZS5taW5XaWR0aC5weF09XCJkcm9wZG93bldpZHRoXCIgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBkcm9wZG93bkNvbHVtblRpdGxlXCI+e3sgZHJvcGRvd25Db2x1bW5UaXRsZSB9fTwvY2RzLWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93biAoc2VsZWN0ZWQpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50Lml0ZW0uaWQsICdkcm9wZG93bicpXCI+XG4gICAgICA8Y2RzLWRyb3Bkb3duLWxpc3RcbiAgICAgICAgW2l0ZW1zXT1cImdldERyb3Bkb3duSXRlbXNGb3JSb3coaW5kZXgpIHwgYXN5bmNcIlxuICAgICAgICB0eXBlPVwibXVsdGlcIlxuICAgICAgPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgW25nQ2xhc3NdPVwieyctLWZ1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCIgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiB2YWx1ZUNvbHVtblRpdGxlXCI+e3sgdmFsdWVDb2x1bW5UaXRsZSB9fTwvY2RzLWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICBjZHNUZXh0XG4gICAgICBbZGVmYXVsdFZhbHVlXT1cInZhbHVlLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgJ3ZhbHVlJylcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFReEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPbEMsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU1rQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6QixTQUFJLEdBQW1CLE9BQU8sQ0FBQztRQUMvQix3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQiw0QkFBdUIs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QkFDRSw0QkFBNEI7OEJBS3RCLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSx1QkFBdUI7c0JBQXRDLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDYyxhQUFhO3NCQUFoQyxLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFFVyxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLG1CQUFtQjtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIExpc3RJdGVtV2l0aElkLFxuICBNdWx0aUlucHV0S2V5VmFsdWUsXG4gIE11bHRpSW5wdXRPdXRwdXQsXG4gIE11bHRpSW5wdXRUeXBlLFxuICBNdWx0aUlucHV0VmFsdWVzLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHt2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNhcmJvbi1tdWx0aS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJib24tbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJib24tbXVsdGktaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyYm9uTXVsdGlJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIG5hbWUgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZVRyYW5zbGF0aW9uS2V5ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBNdWx0aUlucHV0VHlwZSA9ICd2YWx1ZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFsQW1vdW50T2ZSb3dzID0gMTtcbiAgQElucHV0KCkgcHVibGljIG1pbmltdW1BbW91bnRPZlJvd3MgPSAxO1xuICBASW5wdXQoKSBwdWJsaWMgbWF4Um93cyA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBhZGRSb3dUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhZGRSb3dUcmFuc2xhdGlvbktleSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlUm93VGV4dCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlUm93VHJhbnNsYXRpb25LZXkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0VmFsdWVzITogTXVsdGlJbnB1dFZhbHVlcztcbiAgQElucHV0KCkgcHVibGljIG1hcmdpbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGtleUNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZUNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93bkNvbHVtblRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlRGVsZXRlQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlQWRkQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZHJvcGRvd25JdGVtcyh2YWx1ZTogQXJyYXk8TGlzdEl0ZW1XaXRoSWQ+KSB7XG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25XaWR0aCA9IDI1MDtcbiAgQElucHV0KCkgcHVibGljIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0T3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBhbGxWYWx1ZXNWYWxpZEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE11bHRpSW5wdXRWYWx1ZXM+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hcHBlZFZhbHVlcyQ6IE9ic2VydmFibGU8TXVsdGlJbnB1dE91dHB1dD4gPSB0aGlzLnZhbHVlcyQucGlwZShcbiAgICBtYXAoXG4gICAgICB2YWx1ZXMgPT5cbiAgICAgICAgdmFsdWVzXG4gICAgICAgICAgLm1hcCh2YWx1ZSA9PiB0aGlzLmdldE1hcHBlZFZhbHVlKHZhbHVlKSlcbiAgICAgICAgICAuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgIGNhc2UgJ2tleVZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkudmFsdWUgJiYgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkua2V5O1xuICAgICAgICAgICAgICBjYXNlICdrZXlEcm9wZG93blZhbHVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBNdWx0aUlucHV0S2V5VmFsdWUpLmtleSAmJlxuICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkuZHJvcGRvd25cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIGFzIE11bHRpSW5wdXRPdXRwdXRcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRSb3dFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIG1hcCh2YWx1ZXMgPT4gISEodGhpcy5tYXhSb3dzID09PSBudWxsIHx8IHZhbHVlcy5sZW5ndGggPCB0aGlzLm1heFJvd3MpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93bkl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8TGlzdEl0ZW1XaXRoSWQ+PihbXSk7XG5cbiAgcHJpdmF0ZSBfdmFsdWVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQubmV4dCh0aGlzLmdldEluaXRpYWxSb3dzKCkpO1xuICAgIHRoaXMub3BlblZhbHVlc1N1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRSb3coKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy52YWx1ZXMkLCB0aGlzLmFkZFJvd0VuYWJsZWQkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbdmFsdWVzLCBhZGRSb3dFbmFibGVkXSkgPT4ge1xuICAgICAgICBpZiAoYWRkUm93RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KFsuLi52YWx1ZXMsIHRoaXMuZ2V0RW1wdHlWYWx1ZSgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gdGhpcy5taW5pbXVtQW1vdW50T2ZSb3dzKSB7XG4gICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUudXVpZCAhPT0gdXVpZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCB2YWx1ZTogTXVsdGlJbnB1dEtleVZhbHVlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUudXVpZCBhcyBzdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0RHJvcGRvd25JdGVtc0ZvclJvdyhpbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbVdpdGhJZD4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5kcm9wZG93bkl0ZW1zJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duSXRlbXMsIHZhbHVlc10pID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdmFsdWVzW2luZGV4XSB8fCB0aGlzLmRlZmF1bHRWYWx1ZXNbaW5kZXhdO1xuXG4gICAgICAgIHJldHVybiBkcm9wZG93bkl0ZW1zLm1hcChkcm9wZG93bkl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5kcm9wZG93bkl0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IGRlZmF1bHRWYWx1ZSA/IGRyb3Bkb3duSXRlbS5pZCA9PT0gZGVmYXVsdFZhbHVlLmRyb3Bkb3duIDogZmFsc2UsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlKFxuICAgIHRlbXBsYXRlVmFsdWU6IE11bHRpSW5wdXRLZXlWYWx1ZSxcbiAgICBpbnB1dFZhbHVlOiBzdHJpbmcsXG4gICAgY2hhbmdlOiAna2V5JyB8ICd2YWx1ZScgfCAnZHJvcGRvd24nXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh2YWx1ZXMgPT4ge1xuICAgICAgdGhpcy52YWx1ZXMkLm5leHQoXG4gICAgICAgIHZhbHVlcy5tYXAoc3RhdGVWYWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlVmFsdWUudXVpZCA9PT0gdGVtcGxhdGVWYWx1ZS51dWlkKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwgdmFsdWU6IGlucHV0VmFsdWV9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UgPT09ICdrZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwga2V5OiBpbnB1dFZhbHVlfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGVWYWx1ZSwgZHJvcGRvd246IGlucHV0VmFsdWV9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gc3RhdGVWYWx1ZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxSb3dzKCk6IE11bHRpSW5wdXRWYWx1ZXMge1xuICAgIGNvbnN0IG1pbmltdW1Sb3dzID0gdGhpcy5taW5pbXVtQW1vdW50T2ZSb3dzO1xuICAgIGNvbnN0IGluaXRpYWxSb3dzID0gdGhpcy5pbml0aWFsQW1vdW50T2ZSb3dzO1xuICAgIGNvbnN0IGFtb3VudE9mSW5pdGFsUm93cyA9IE1hdGgubWF4KG1pbmltdW1Sb3dzLCBpbml0aWFsUm93cyk7XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheShhbW91bnRPZkluaXRhbFJvd3MpLmZpbGwodGhpcy5nZXRFbXB0eVZhbHVlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZXMubWFwKGRlZmF1bHRWYWx1ZSA9PiAoey4uLmRlZmF1bHRWYWx1ZSwgdXVpZDogdXVpZHY0KCl9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVtcHR5VmFsdWUoKTogTXVsdGlJbnB1dEtleVZhbHVlIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiAnJyxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHV1aWQ6IHV1aWR2NCgpLFxuICAgICAgZHJvcGRvd246ICcnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE1hcHBlZFZhbHVlKHZhbHVlVG9NYXA6IE11bHRpSW5wdXRLZXlWYWx1ZSk6IE11bHRpSW5wdXRLZXlWYWx1ZSB8IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2tleVZhbHVlJykge1xuICAgICAgcmV0dXJuIHtrZXk6IHZhbHVlVG9NYXAua2V5LCB2YWx1ZTogdmFsdWVUb01hcC52YWx1ZX07XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdrZXlEcm9wZG93blZhbHVlJykge1xuICAgICAgcmV0dXJuIHtrZXk6IHZhbHVlVG9NYXAua2V5LCB2YWx1ZTogdmFsdWVUb01hcC52YWx1ZSwgZHJvcGRvd246IHZhbHVlVG9NYXAuZHJvcGRvd259O1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVRvTWFwLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmFsdWVzU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlc1N1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudmFsdWVzJCwgdGhpcy5tYXBwZWRWYWx1ZXMkXSkuc3Vic2NyaWJlKFxuICAgICAgKFt2YWx1ZXMsIG1hcHBlZFZhbHVlc10pID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG1hcHBlZFZhbHVlcyk7XG4gICAgICAgIHRoaXMuYWxsVmFsdWVzVmFsaWRFdmVudC5lbWl0KHZhbHVlcy5sZW5ndGggPT09IG1hcHBlZFZhbHVlcy5sZW5ndGgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBhZGRSb3dUZXh0OlxuICAgICAgYWRkUm93VGV4dCB8fCBhZGRSb3dUcmFuc2xhdGlvbktleVxuICAgICAgICA/IGFkZFJvd1RyYW5zbGF0aW9uS2V5XG4gICAgICAgICAgPyAoYWRkUm93VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiBhZGRSb3dUZXh0XG4gICAgICAgIDogKCdpbnRlcmZhY2UuYWRkUm93JyB8IHRyYW5zbGF0ZSksXG4gICAgZGVsZXRlUm93VGV4dDpcbiAgICAgIGRlbGV0ZVJvd1RleHQgfHwgZGVsZXRlUm93VHJhbnNsYXRpb25LZXlcbiAgICAgICAgPyBkZWxldGVSb3dUcmFuc2xhdGlvbktleVxuICAgICAgICAgID8gKGRlbGV0ZVJvd1RyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogZGVsZXRlUm93VGV4dFxuICAgICAgICA6ICgnaW50ZXJmYWNlLmRlbGV0ZVJvdycgfCB0cmFuc2xhdGUpXG4gIH0gYXMgdmFyc1wiXG4gIFtuZ0NsYXNzXT1cInsndi1tdWx0aS1pbnB1dC0tbWFyZ2luJzogbWFyZ2lufVwiXG4gIGNsYXNzPVwidi1tdWx0aS1pbnB1dFwiXG4+XG4gIDx2LWlucHV0LWxhYmVsXG4gICAgKm5nSWY9XCJ0aXRsZSB8fCB0aXRsZVRyYW5zbGF0aW9uS2V5XCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFt0aXRsZVRyYW5zbGF0aW9uS2V5XT1cInRpdGxlVHJhbnNsYXRpb25LZXlcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXG4gID5cbiAgPC92LWlucHV0LWxhYmVsPlxuXG4gIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19yb3dzXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHZhbHVlcyQgfCBhc3luYyBhcyB2YWx1ZXM7IHRyYWNrQnk6IHRyYWNrQnlGbjsgaW5kZXggYXMgaVwiXG4gICAgICBjbGFzcz1cInYtbXVsdGktaW5wdXRfX3Jvd1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICd2YWx1ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAna2V5VmFsdWUnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImtleVZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlLCBpbmRleDogaX1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdrZXlEcm9wZG93blZhbHVlJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJrZXlEcm9wZG93blZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlLCBpbmRleDogaX1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFoaWRlRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgY2RzQnV0dG9uPVwiZGFuZ2VyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInZhbHVlcz8ubGVuZ3RoIDw9IHRoaXMubWluaW11bUFtb3VudE9mUm93cyB8fCBkaXNhYmxlZFwiXG4gICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdyh2YWx1ZS51dWlkKVwiXG4gICAgICAgIFt0aXRsZV09XCJ2YXJzLmRlbGV0ZVJvd1RleHRcIlxuICAgICAgPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19hZGQtYnV0dG9uXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWhpZGVBZGRCdXR0b25cIlxuICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIihhZGRSb3dFbmFibGVkJCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIlxuICAgICAgPlxuICAgICAgICB7eyB2YXJzLmFkZFJvd1RleHQgfX1cblxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaW5nbGVWYWx1ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICA8ZGl2IGNsYXNzPVwidi1tdWx0aS1pbnB1dF9faW5wdXRcIiBbbmdDbGFzc109XCJ7Jy0tZnVsbC13aWR0aCc6IGZ1bGxXaWR0aH1cIj5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LCAndmFsdWUnKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2tleVZhbHVlIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgPGRpdiBjbGFzcz1cInYtbXVsdGktaW5wdXRfX2lucHV0XCIgW25nQ2xhc3NdPVwieyctLWZ1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCI+XG4gICAgPGNkcy1sYWJlbCAqbmdJZj1cImluZGV4ID09PSAwICYmIGtleUNvbHVtblRpdGxlICYmIHZhbHVlQ29sdW1uVGl0bGVcIj57e1xuICAgICAga2V5Q29sdW1uVGl0bGVcbiAgICB9fTwvY2RzLWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICBjZHNUZXh0XG4gICAgICBbZGVmYXVsdFZhbHVlXT1cInZhbHVlLmtleVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudC50YXJnZXQudmFsdWUsICdrZXknKVwiXG4gICAgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiIFtuZ0NsYXNzXT1cInsnLS1mdWxsLXdpZHRoJzogZnVsbFdpZHRofVwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBrZXlDb2x1bW5UaXRsZSAmJiB2YWx1ZUNvbHVtblRpdGxlXCI+e3tcbiAgICAgIHZhbHVlQ29sdW1uVGl0bGVcbiAgICB9fTwvY2RzLWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2RzVGV4dFxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJ2YWx1ZS52YWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudC50YXJnZXQudmFsdWUsICd2YWx1ZScpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAja2V5RHJvcGRvd25WYWx1ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyctLWZ1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCIgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBrZXlDb2x1bW5UaXRsZVwiPnt7IGtleUNvbHVtblRpdGxlIH19PC9jZHMtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUua2V5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2tleScpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8ZGl2IFtzdHlsZS5taW5XaWR0aC5weF09XCJkcm9wZG93bldpZHRoXCIgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19pbnB1dFwiPlxuICAgIDxjZHMtbGFiZWwgKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBkcm9wZG93bkNvbHVtblRpdGxlXCI+e3sgZHJvcGRvd25Db2x1bW5UaXRsZSB9fTwvY2RzLWxhYmVsPlxuXG4gICAgPGNkcy1kcm9wZG93blxuICAgICAgKHNlbGVjdGVkKT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudC5pdGVtLmlkLCAnZHJvcGRvd24nKVwiXG4gICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdFxuICAgICAgICBbaXRlbXNdPVwiZ2V0RHJvcGRvd25JdGVtc0ZvclJvdyhpbmRleCkgfCBhc3luY1wiXG4gICAgICAgIHR5cGU9XCJtdWx0aVwiXG4gICAgICA+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBbbmdDbGFzc109XCJ7Jy0tZnVsbC13aWR0aCc6IGZ1bGxXaWR0aH1cIiBjbGFzcz1cInYtbXVsdGktaW5wdXRfX2lucHV0XCI+XG4gICAgPGNkcy1sYWJlbCAqbmdJZj1cImluZGV4ID09PSAwICYmIHZhbHVlQ29sdW1uVGl0bGVcIj57eyB2YWx1ZUNvbHVtblRpdGxlIH19PC9jZHMtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKHZhbHVlLCAkZXZlbnQudGFyZ2V0LnZhbHVlLCAndmFsdWUnKVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -42,6 +42,7 @@ export class PageTitleComponent {
42
42
  this.customPageSubtitle$ = this.pageTitleService.customPageSubtitle$;
43
43
  this.customPageSubtitleSet$ = this.pageTitleService.customPageSubtitleSet$;
44
44
  this.hasPageActions$ = this.pageTitleService.hasPageActions$;
45
+ this.pageActionsFullWidth$ = this.pageTitleService.pageActionsFullWidth$;
45
46
  this.translatedTitle$ = new BehaviorSubject('');
46
47
  this.appTitleAsSuffix = this.configService?.config?.featureToggles?.applicationTitleAsSuffix || false;
47
48
  this._subscriptions = new Subscription();
@@ -93,13 +94,13 @@ export class PageTitleComponent {
93
94
  }));
94
95
  }
95
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageTitleComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.Title }, { token: i3.TranslateService }, { token: i4.NGXLogger }, { token: i5.ConfigService }, { token: i6.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
96
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageTitleComponent, selector: "valtimo-page-title", viewQueries: [{ propertyName: "_pageActionsVcr", first: true, predicate: ["pageActionsVcr"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div [ngClass]=\"{'--no-margin': hidePageTitle}\" class=\"page-title-container\">\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n hasCustomPageSubtitle: hasCustomPageSubtitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n customPageSubtitle: customPageSubtitle$ | async,\n customPageSubtitleSet: customPageSubtitleSet$ | async\n } as obs\n \"\n >\n <div class=\"skeleton-container\" *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\">\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <h2\n *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\"\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n\n <div\n *ngIf=\"obs.hasCustomPageSubtitle && !obs.customPageSubtitleSet\"\n class=\"subtitle-skeleton-container\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <span\n *ngIf=\"obs.hasCustomPageSubtitle && obs.customPageSubtitleSet\"\n [innerHtml]=\"obs.customPageSubtitle\"\n [title]=\"obs.customPageSubtitle\"\n class=\"page-subtitle\"\n >\n </span>\n </ng-container>\n\n <div [ngClass]=\"{'--visible': hasPageActions$ | async}\" class=\"page-actions\">\n <ng-container #pageActionsVcr></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.page-title-container{margin-bottom:32px;display:flex;flex-direction:row;align-items:flex-end}.page-title-container.--no-margin{margin-bottom:0}.page-title-container .page-title{font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-subtitle{margin-left:16px;padding-bottom:4px;color:var(--cds-text-helper, #6f6f6f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:18px}.page-title-container .page-subtitle b{font-weight:bolder}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .subtitle-skeleton-container .cds--skeleton__placeholder{height:18px;margin-bottom:8px;width:200px;margin-left:16px}.page-title-container .page-actions.--visible{margin-left:auto;padding-left:32px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.SkeletonPlaceholder, selector: "cds-skeleton-placeholder, ibm-skeleton-placeholder" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageTitleComponent, selector: "valtimo-page-title", viewQueries: [{ propertyName: "_pageActionsVcr", first: true, predicate: ["pageActionsVcr"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div [ngClass]=\"{'--no-margin': hidePageTitle}\" class=\"page-title-container\">\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n hasCustomPageSubtitle: hasCustomPageSubtitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n customPageSubtitle: customPageSubtitle$ | async,\n customPageSubtitleSet: customPageSubtitleSet$ | async\n } as obs\n \"\n >\n <div class=\"skeleton-container\" *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\">\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <h2\n *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\"\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n\n <div\n *ngIf=\"obs.hasCustomPageSubtitle && !obs.customPageSubtitleSet\"\n class=\"subtitle-skeleton-container\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <span\n *ngIf=\"obs.hasCustomPageSubtitle && obs.customPageSubtitleSet\"\n [innerHtml]=\"obs.customPageSubtitle\"\n [title]=\"obs.customPageSubtitle\"\n class=\"page-subtitle\"\n >\n </span>\n </ng-container>\n\n <div\n [ngClass]=\"{\n 'page-actions--visible': hasPageActions$ | async,\n 'page-actions--full-width': pageActionsFullWidth$ | async\n }\"\n class=\"page-actions\"\n >\n <ng-container #pageActionsVcr></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.page-title-container{margin-bottom:32px;display:flex;flex-direction:row;align-items:flex-end}.page-title-container.--no-margin{margin-bottom:0}.page-title-container .page-title{flex-shrink:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-subtitle{margin-left:16px;padding-bottom:4px;color:var(--cds-text-helper, #6f6f6f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:18px}.page-title-container .page-subtitle b{font-weight:bolder}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .subtitle-skeleton-container .cds--skeleton__placeholder{height:18px;margin-bottom:8px;width:200px;margin-left:16px}.page-title-container .page-actions--visible{margin-left:auto;padding-left:32px}.page-title-container .page-actions--full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.SkeletonPlaceholder, selector: "cds-skeleton-placeholder, ibm-skeleton-placeholder" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
97
98
  }
98
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageTitleComponent, decorators: [{
99
100
  type: Component,
100
- args: [{ selector: 'valtimo-page-title', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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<div [ngClass]=\"{'--no-margin': hidePageTitle}\" class=\"page-title-container\">\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n hasCustomPageSubtitle: hasCustomPageSubtitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n customPageSubtitle: customPageSubtitle$ | async,\n customPageSubtitleSet: customPageSubtitleSet$ | async\n } as obs\n \"\n >\n <div class=\"skeleton-container\" *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\">\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <h2\n *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\"\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n\n <div\n *ngIf=\"obs.hasCustomPageSubtitle && !obs.customPageSubtitleSet\"\n class=\"subtitle-skeleton-container\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <span\n *ngIf=\"obs.hasCustomPageSubtitle && obs.customPageSubtitleSet\"\n [innerHtml]=\"obs.customPageSubtitle\"\n [title]=\"obs.customPageSubtitle\"\n class=\"page-subtitle\"\n >\n </span>\n </ng-container>\n\n <div [ngClass]=\"{'--visible': hasPageActions$ | async}\" class=\"page-actions\">\n <ng-container #pageActionsVcr></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.page-title-container{margin-bottom:32px;display:flex;flex-direction:row;align-items:flex-end}.page-title-container.--no-margin{margin-bottom:0}.page-title-container .page-title{font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-subtitle{margin-left:16px;padding-bottom:4px;color:var(--cds-text-helper, #6f6f6f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:18px}.page-title-container .page-subtitle b{font-weight:bolder}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .subtitle-skeleton-container .cds--skeleton__placeholder{height:18px;margin-bottom:8px;width:200px;margin-left:16px}.page-title-container .page-actions.--visible{margin-left:auto;padding-left:32px}\n"] }]
101
+ args: [{ selector: 'valtimo-page-title', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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<div [ngClass]=\"{'--no-margin': hidePageTitle}\" class=\"page-title-container\">\n <ng-container\n *ngIf=\"\n hidePageTitle === false && {\n title: translatedTitle$ | async,\n hasCustomPageTitle: hasCustomPageTitle$ | async,\n hasCustomPageSubtitle: hasCustomPageSubtitle$ | async,\n customPageTitle: customPageTitle$ | async,\n customPageTitleSet: customPageTitleSet$ | async,\n customPageSubtitle: customPageSubtitle$ | async,\n customPageSubtitleSet: customPageSubtitleSet$ | async\n } as obs\n \"\n >\n <div class=\"skeleton-container\" *ngIf=\"obs.hasCustomPageTitle && !obs.customPageTitleSet\">\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <h2\n *ngIf=\"obs.hasCustomPageTitle ? obs.customPageTitleSet : obs.title !== ''\"\n [title]=\"obs.hasCustomPageTitle ? obs.customPageTitle : obs.title\"\n class=\"page-title\"\n >\n {{ obs.hasCustomPageTitle ? obs.customPageTitle : obs.title }}\n </h2>\n\n <div\n *ngIf=\"obs.hasCustomPageSubtitle && !obs.customPageSubtitleSet\"\n class=\"subtitle-skeleton-container\"\n >\n <cds-skeleton-placeholder></cds-skeleton-placeholder>\n </div>\n\n <span\n *ngIf=\"obs.hasCustomPageSubtitle && obs.customPageSubtitleSet\"\n [innerHtml]=\"obs.customPageSubtitle\"\n [title]=\"obs.customPageSubtitle\"\n class=\"page-subtitle\"\n >\n </span>\n </ng-container>\n\n <div\n [ngClass]=\"{\n 'page-actions--visible': hasPageActions$ | async,\n 'page-actions--full-width': pageActionsFullWidth$ | async\n }\"\n class=\"page-actions\"\n >\n <ng-container #pageActionsVcr></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.page-title-container{margin-bottom:32px;display:flex;flex-direction:row;align-items:flex-end}.page-title-container.--no-margin{margin-bottom:0}.page-title-container .page-title{flex-shrink:0;font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-title-container .page-subtitle{margin-left:16px;padding-bottom:4px;color:var(--cds-text-helper, #6f6f6f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:18px}.page-title-container .page-subtitle b{font-weight:bolder}.page-title-container .skeleton-container .cds--skeleton__placeholder{width:200px;height:40px}.page-title-container .subtitle-skeleton-container .cds--skeleton__placeholder{height:18px;margin-bottom:8px;width:200px;margin-left:16px}.page-title-container .page-actions--visible{margin-left:auto;padding-left:32px}.page-title-container .page-actions--full-width{width:100%}\n"] }]
101
102
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Title }, { type: i3.TranslateService }, { type: i4.NGXLogger }, { type: i5.ConfigService }, { type: i6.PageTitleService }]; }, propDecorators: { _pageActionsVcr: [{
102
103
  type: ViewChild,
103
104
  args: ['pageActionsVcr', { static: true, read: ViewContainerRef }]
104
105
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBU2QsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0IsWUFDbUIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLFlBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxNQUFpQixFQUNqQixhQUE0QixFQUM1QixnQkFBa0M7UUFObEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWxDOUMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDYixhQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElB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Q0FBQyxDQUFDO2FBQzNDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyw2QkFBNkI7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQS9GVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix3SkFDcUIsZ0JBQWdCLDJDQy9DcEUsNnZFQThEQTs7NEZEaEJhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSTtnUUFJcEIsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS10aXRsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3BhZ2VBY3Rpb25zVmNyJywge3N0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VBY3Rpb25zVmNyITogVmlld0NvbnRhaW5lclJlZjtcbiAgcHVibGljIGhpZGVQYWdlVGl0bGUgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwcFRpdGxlID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmFwcGxpY2F0aW9uVGl0bGUgfHwgJ1ZhbHRpbW8nO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzQ3VzdG9tUGFnZVRpdGxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHN0YXJ0V2l0aCh0aGlzLnJvdXRlciksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZC5kYXRhKSxcbiAgICBtYXAoZGF0YSA9PiAhIWRhdGE/LmN1c3RvbVBhZ2VUaXRsZSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGhhc0N1c3RvbVBhZ2VTdWJ0aXRsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5yb3V0ZXIpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQuZGF0YSksXG4gICAgbWFwKGRhdGEgPT4gISFkYXRhPy5jdXN0b21QYWdlU3VidGl0bGUpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21QYWdlVGl0bGUkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmN1c3RvbVBhZ2VUaXRsZSQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21QYWdlVGl0bGVTZXQkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmN1c3RvbVBhZ2VUaXRsZVNldCQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21QYWdlU3VidGl0bGUkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmN1c3RvbVBhZ2VTdWJ0aXRsZSQ7XG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21QYWdlU3VidGl0bGVTZXQkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmN1c3RvbVBhZ2VTdWJ0aXRsZVNldCQ7XG4gIHB1YmxpYyByZWFkb25seSBoYXNQYWdlQWN0aW9ucyQgPSB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuaGFzUGFnZUFjdGlvbnMkO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNsYXRlZFRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgYXBwVGl0bGVBc1N1ZmZpeCA9XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmZlYXR1cmVUb2dnbGVzPy5hcHBsaWNhdGlvblRpdGxlQXNTdWZmaXggfHwgZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hpZGVQYWdlVGl0bGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgc3RhcnRXaXRoKHRoaXMucm91dGVyKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkLmRhdGEpLFxuICAgIG1hcChkYXRhID0+ICEhZGF0YT8uaGlkZVBhZ2VUaXRsZSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUm91dGVyVHJhbnNsYXRlU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuSGlkZVBhZ2VUaXRsZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2Uuc2V0UGFnZUFjdGlvbnNWaWV3Q29udGFpbmVyUmVmKHRoaXMuX3BhZ2VBY3Rpb25zVmNyKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJvdXRlclRyYW5zbGF0ZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucm91dGVyLmV2ZW50cywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyldKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZVRpdGxlID1cbiAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlPy5zbmFwc2hvdD8uZmlyc3RDaGlsZD8uZGF0YT8udGl0bGUgfHxcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlPy5zbmFwc2hvdD8uZmlyc3RDaGlsZD8uY2hpbGRyZW5bMF0/LmRhdGE/LnRpdGxlO1xuICAgICAgICBjb25zdCByb3V0ZVRpdGxlVHJhbnNsYXRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChyb3V0ZVRpdGxlKTtcbiAgICAgICAgY29uc3Qgcm91dGVUaXRsZVBhZ2VUcmFuc2xhdGlvblN0cmluZyA9IGBwYWdlcy4ke3JvdXRlVGl0bGUudG9Mb3dlckNhc2UoKX0udGl0bGVgO1xuICAgICAgICBjb25zdCByb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgcm91dGVUaXRsZVBhZ2VUcmFuc2xhdGlvblN0cmluZ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUm91dGVUaXRsZSA9XG4gICAgICAgICAgcm91dGVUaXRsZSAmJlxuICAgICAgICAgICgocm91dGVUaXRsZVBhZ2VUcmFuc2xhdGlvbiAhPT0gcm91dGVUaXRsZVBhZ2VUcmFuc2xhdGlvblN0cmluZ1xuICAgICAgICAgICAgPyByb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uXG4gICAgICAgICAgICA6ICcnKSB8fFxuICAgICAgICAgICAgKHJvdXRlVGl0bGUgIT09IHJvdXRlVGl0bGVUcmFuc2xhdGlvbiA/IHJvdXRlVGl0bGVUcmFuc2xhdGlvbiA6ICcnKSB8fFxuICAgICAgICAgICAgcm91dGVUaXRsZSk7XG5cbiAgICAgICAgaWYgKHRyYW5zbGF0ZWRSb3V0ZVRpdGxlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2VUaXRsZTogc2V0VGl0bGUgdHJhbnNsYXRlZCBhc3luYycsIHRyYW5zbGF0ZWRSb3V0ZVRpdGxlKTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZWRUaXRsZSQubmV4dCh0cmFuc2xhdGVkUm91dGVUaXRsZSk7XG4gICAgICAgICAgaWYgKHRoaXMuYXBwVGl0bGVBc1N1ZmZpeCkge1xuICAgICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodHJhbnNsYXRlZFJvdXRlVGl0bGUgKyAnIC0gJyArIHRoaXMuYXBwVGl0bGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLmFwcFRpdGxlICsgJyAtICcgKyB0cmFuc2xhdGVkUm91dGVUaXRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQYWdlVGl0bGU6IHNldFRpdGxlIGRlZmF1bHQnLCB0aGlzLmFwcFRpdGxlKTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZWRUaXRsZSQubmV4dCgnJyk7XG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5hcHBUaXRsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkhpZGVQYWdlVGl0bGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLl9oaWRlUGFnZVRpdGxlJC5zdWJzY3JpYmUoaGlkZVBhZ2VUaXRsZSA9PiB7XG4gICAgICAgIHRoaXMuaGlkZVBhZ2VUaXRsZSA9IGhpZGVQYWdlVGl0bGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBbbmdDbGFzc109XCJ7Jy0tbm8tbWFyZ2luJzogaGlkZVBhZ2VUaXRsZX1cIiBjbGFzcz1cInBhZ2UtdGl0bGUtY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaGlkZVBhZ2VUaXRsZSA9PT0gZmFsc2UgJiYge1xuICAgICAgICB0aXRsZTogdHJhbnNsYXRlZFRpdGxlJCB8IGFzeW5jLFxuICAgICAgICBoYXNDdXN0b21QYWdlVGl0bGU6IGhhc0N1c3RvbVBhZ2VUaXRsZSQgfCBhc3luYyxcbiAgICAgICAgaGFzQ3VzdG9tUGFnZVN1YnRpdGxlOiBoYXNDdXN0b21QYWdlU3VidGl0bGUkIHwgYXN5bmMsXG4gICAgICAgIGN1c3RvbVBhZ2VUaXRsZTogY3VzdG9tUGFnZVRpdGxlJCB8IGFzeW5jLFxuICAgICAgICBjdXN0b21QYWdlVGl0bGVTZXQ6IGN1c3RvbVBhZ2VUaXRsZVNldCQgfCBhc3luYyxcbiAgICAgICAgY3VzdG9tUGFnZVN1YnRpdGxlOiBjdXN0b21QYWdlU3VidGl0bGUkIHwgYXN5bmMsXG4gICAgICAgIGN1c3RvbVBhZ2VTdWJ0aXRsZVNldDogY3VzdG9tUGFnZVN1YnRpdGxlU2V0JCB8IGFzeW5jXG4gICAgICB9IGFzIG9ic1xuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tY29udGFpbmVyXCIgKm5nSWY9XCJvYnMuaGFzQ3VzdG9tUGFnZVRpdGxlICYmICFvYnMuY3VzdG9tUGFnZVRpdGxlU2V0XCI+XG4gICAgICA8Y2RzLXNrZWxldG9uLXBsYWNlaG9sZGVyPjwvY2RzLXNrZWxldG9uLXBsYWNlaG9sZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGgyXG4gICAgICAqbmdJZj1cIm9icy5oYXNDdXN0b21QYWdlVGl0bGUgPyBvYnMuY3VzdG9tUGFnZVRpdGxlU2V0IDogb2JzLnRpdGxlICE9PSAnJ1wiXG4gICAgICBbdGl0bGVdPVwib2JzLmhhc0N1c3RvbVBhZ2VUaXRsZSA/IG9icy5jdXN0b21QYWdlVGl0bGUgOiBvYnMudGl0bGVcIlxuICAgICAgY2xhc3M9XCJwYWdlLXRpdGxlXCJcbiAgICA+XG4gICAgICB7eyBvYnMuaGFzQ3VzdG9tUGFnZVRpdGxlID8gb2JzLmN1c3RvbVBhZ2VUaXRsZSA6IG9icy50aXRsZSB9fVxuICAgIDwvaDI+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIm9icy5oYXNDdXN0b21QYWdlU3VidGl0bGUgJiYgIW9icy5jdXN0b21QYWdlU3VidGl0bGVTZXRcIlxuICAgICAgY2xhc3M9XCJzdWJ0aXRsZS1za2VsZXRvbi1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxjZHMtc2tlbGV0b24tcGxhY2Vob2xkZXI+PC9jZHMtc2tlbGV0b24tcGxhY2Vob2xkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJvYnMuaGFzQ3VzdG9tUGFnZVN1YnRpdGxlICYmIG9icy5jdXN0b21QYWdlU3VidGl0bGVTZXRcIlxuICAgICAgW2lubmVySHRtbF09XCJvYnMuY3VzdG9tUGFnZVN1YnRpdGxlXCJcbiAgICAgIFt0aXRsZV09XCJvYnMuY3VzdG9tUGFnZVN1YnRpdGxlXCJcbiAgICAgIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiXG4gICAgPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBbbmdDbGFzc109XCJ7Jy0tdmlzaWJsZSc6IGhhc1BhZ2VBY3Rpb25zJCB8IGFzeW5jfVwiIGNsYXNzPVwicGFnZS1hY3Rpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjcGFnZUFjdGlvbnNWY3I+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBU2QsTUFBTSxPQUFPLGtCQUFrQjtJQStCN0IsWUFDbUIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLFlBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxNQUFpQixFQUNqQixhQUE0QixFQUM1QixnQkFBa0M7UUFObEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQW5DOUMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDYixhQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElB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Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sNkJBQTZCO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0FoR1Usa0JBQWtCO21HQUFsQixrQkFBa0Isd0pBQ3FCLGdCQUFnQiwyQ0MvQ3BFLHUyRUFvRUE7OzRGRHRCYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUk7Z1FBSXBCLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGl0bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXBhZ2UtdGl0bGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtdGl0bGUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdwYWdlQWN0aW9uc1ZjcicsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlQWN0aW9uc1ZjciE6IFZpZXdDb250YWluZXJSZWY7XG4gIHB1YmxpYyBoaWRlUGFnZVRpdGxlID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBhcHBUaXRsZSA9IHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5hcHBsaWNhdGlvblRpdGxlIHx8ICdWYWx0aW1vJztcbiAgcHVibGljIHJlYWRvbmx5IGhhc0N1c3RvbVBhZ2VUaXRsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5yb3V0ZXIpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQuZGF0YSksXG4gICAgbWFwKGRhdGEgPT4gISFkYXRhPy5jdXN0b21QYWdlVGl0bGUpXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBoYXNDdXN0b21QYWdlU3VidGl0bGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgc3RhcnRXaXRoKHRoaXMucm91dGVyKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkLmRhdGEpLFxuICAgIG1hcChkYXRhID0+ICEhZGF0YT8uY3VzdG9tUGFnZVN1YnRpdGxlKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tUGFnZVRpdGxlJCA9IHRoaXMucGFnZVRpdGxlU2VydmljZS5jdXN0b21QYWdlVGl0bGUkO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tUGFnZVRpdGxlU2V0JCA9IHRoaXMucGFnZVRpdGxlU2VydmljZS5jdXN0b21QYWdlVGl0bGVTZXQkO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tUGFnZVN1YnRpdGxlJCA9IHRoaXMucGFnZVRpdGxlU2VydmljZS5jdXN0b21QYWdlU3VidGl0bGUkO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tUGFnZVN1YnRpdGxlU2V0JCA9IHRoaXMucGFnZVRpdGxlU2VydmljZS5jdXN0b21QYWdlU3VidGl0bGVTZXQkO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzUGFnZUFjdGlvbnMkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmhhc1BhZ2VBY3Rpb25zJDtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2VBY3Rpb25zRnVsbFdpZHRoJCA9IHRoaXMucGFnZVRpdGxlU2VydmljZS5wYWdlQWN0aW9uc0Z1bGxXaWR0aCQ7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2xhdGVkVGl0bGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBhcHBUaXRsZUFzU3VmZml4ID1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uZmVhdHVyZVRvZ2dsZXM/LmFwcGxpY2F0aW9uVGl0bGVBc1N1ZmZpeCB8fCBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGlkZVBhZ2VUaXRsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5yb3V0ZXIpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQuZGF0YSksXG4gICAgbWFwKGRhdGEgPT4gISFkYXRhPy5oaWRlUGFnZVRpdGxlKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Sb3V0ZXJUcmFuc2xhdGVTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5IaWRlUGFnZVRpdGxlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRQYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYodGhpcy5fcGFnZUFjdGlvbnNWY3IpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUm91dGVyVHJhbnNsYXRlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5yb3V0ZXIuZXZlbnRzLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKV0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRlVGl0bGUgPVxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5maXJzdENoaWxkPy5kYXRhPy50aXRsZSB8fFxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5maXJzdENoaWxkPy5jaGlsZHJlblswXT8uZGF0YT8udGl0bGU7XG4gICAgICAgIGNvbnN0IHJvdXRlVGl0bGVUcmFuc2xhdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHJvdXRlVGl0bGUpO1xuICAgICAgICBjb25zdCByb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uU3RyaW5nID0gYHBhZ2VzLiR7cm91dGVUaXRsZS50b0xvd2VyQ2FzZSgpfS50aXRsZWA7XG4gICAgICAgIGNvbnN0IHJvdXRlVGl0bGVQYWdlVHJhbnNsYXRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICByb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uU3RyaW5nXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRSb3V0ZVRpdGxlID1cbiAgICAgICAgICByb3V0ZVRpdGxlICYmXG4gICAgICAgICAgKChyb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uICE9PSByb3V0ZVRpdGxlUGFnZVRyYW5zbGF0aW9uU3RyaW5nXG4gICAgICAgICAgICA/IHJvdXRlVGl0bGVQYWdlVHJhbnNsYXRpb25cbiAgICAgICAgICAgIDogJycpIHx8XG4gICAgICAgICAgICAocm91dGVUaXRsZSAhPT0gcm91dGVUaXRsZVRyYW5zbGF0aW9uID8gcm91dGVUaXRsZVRyYW5zbGF0aW9uIDogJycpIHx8XG4gICAgICAgICAgICByb3V0ZVRpdGxlKTtcblxuICAgICAgICBpZiAodHJhbnNsYXRlZFJvdXRlVGl0bGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUGFnZVRpdGxlOiBzZXRUaXRsZSB0cmFuc2xhdGVkIGFzeW5jJywgdHJhbnNsYXRlZFJvdXRlVGl0bGUpO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlZFRpdGxlJC5uZXh0KHRyYW5zbGF0ZWRSb3V0ZVRpdGxlKTtcbiAgICAgICAgICBpZiAodGhpcy5hcHBUaXRsZUFzU3VmZml4KSB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0cmFuc2xhdGVkUm91dGVUaXRsZSArICcgLSAnICsgdGhpcy5hcHBUaXRsZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuYXBwVGl0bGUgKyAnIC0gJyArIHRyYW5zbGF0ZWRSb3V0ZVRpdGxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2VUaXRsZTogc2V0VGl0bGUgZGVmYXVsdCcsIHRoaXMuYXBwVGl0bGUpO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlZFRpdGxlJC5uZXh0KCcnKTtcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLmFwcFRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuSGlkZVBhZ2VUaXRsZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuX2hpZGVQYWdlVGl0bGUkLnN1YnNjcmliZShoaWRlUGFnZVRpdGxlID0+IHtcbiAgICAgICAgdGhpcy5oaWRlUGFnZVRpdGxlID0gaGlkZVBhZ2VUaXRsZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IFtuZ0NsYXNzXT1cInsnLS1uby1tYXJnaW4nOiBoaWRlUGFnZVRpdGxlfVwiIGNsYXNzPVwicGFnZS10aXRsZS1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBoaWRlUGFnZVRpdGxlID09PSBmYWxzZSAmJiB7XG4gICAgICAgIHRpdGxlOiB0cmFuc2xhdGVkVGl0bGUkIHwgYXN5bmMsXG4gICAgICAgIGhhc0N1c3RvbVBhZ2VUaXRsZTogaGFzQ3VzdG9tUGFnZVRpdGxlJCB8IGFzeW5jLFxuICAgICAgICBoYXNDdXN0b21QYWdlU3VidGl0bGU6IGhhc0N1c3RvbVBhZ2VTdWJ0aXRsZSQgfCBhc3luYyxcbiAgICAgICAgY3VzdG9tUGFnZVRpdGxlOiBjdXN0b21QYWdlVGl0bGUkIHwgYXN5bmMsXG4gICAgICAgIGN1c3RvbVBhZ2VUaXRsZVNldDogY3VzdG9tUGFnZVRpdGxlU2V0JCB8IGFzeW5jLFxuICAgICAgICBjdXN0b21QYWdlU3VidGl0bGU6IGN1c3RvbVBhZ2VTdWJ0aXRsZSQgfCBhc3luYyxcbiAgICAgICAgY3VzdG9tUGFnZVN1YnRpdGxlU2V0OiBjdXN0b21QYWdlU3VidGl0bGVTZXQkIHwgYXN5bmNcbiAgICAgIH0gYXMgb2JzXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jb250YWluZXJcIiAqbmdJZj1cIm9icy5oYXNDdXN0b21QYWdlVGl0bGUgJiYgIW9icy5jdXN0b21QYWdlVGl0bGVTZXRcIj5cbiAgICAgIDxjZHMtc2tlbGV0b24tcGxhY2Vob2xkZXI+PC9jZHMtc2tlbGV0b24tcGxhY2Vob2xkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8aDJcbiAgICAgICpuZ0lmPVwib2JzLmhhc0N1c3RvbVBhZ2VUaXRsZSA/IG9icy5jdXN0b21QYWdlVGl0bGVTZXQgOiBvYnMudGl0bGUgIT09ICcnXCJcbiAgICAgIFt0aXRsZV09XCJvYnMuaGFzQ3VzdG9tUGFnZVRpdGxlID8gb2JzLmN1c3RvbVBhZ2VUaXRsZSA6IG9icy50aXRsZVwiXG4gICAgICBjbGFzcz1cInBhZ2UtdGl0bGVcIlxuICAgID5cbiAgICAgIHt7IG9icy5oYXNDdXN0b21QYWdlVGl0bGUgPyBvYnMuY3VzdG9tUGFnZVRpdGxlIDogb2JzLnRpdGxlIH19XG4gICAgPC9oMj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwib2JzLmhhc0N1c3RvbVBhZ2VTdWJ0aXRsZSAmJiAhb2JzLmN1c3RvbVBhZ2VTdWJ0aXRsZVNldFwiXG4gICAgICBjbGFzcz1cInN1YnRpdGxlLXNrZWxldG9uLWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPGNkcy1za2VsZXRvbi1wbGFjZWhvbGRlcj48L2Nkcy1za2VsZXRvbi1wbGFjZWhvbGRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm9icy5oYXNDdXN0b21QYWdlU3VidGl0bGUgJiYgb2JzLmN1c3RvbVBhZ2VTdWJ0aXRsZVNldFwiXG4gICAgICBbaW5uZXJIdG1sXT1cIm9icy5jdXN0b21QYWdlU3VidGl0bGVcIlxuICAgICAgW3RpdGxlXT1cIm9icy5jdXN0b21QYWdlU3VidGl0bGVcIlxuICAgICAgY2xhc3M9XCJwYWdlLXN1YnRpdGxlXCJcbiAgICA+XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BhZ2UtYWN0aW9ucy0tdmlzaWJsZSc6IGhhc1BhZ2VBY3Rpb25zJCB8IGFzeW5jLFxuICAgICAgJ3BhZ2UtYWN0aW9ucy0tZnVsbC13aWR0aCc6IHBhZ2VBY3Rpb25zRnVsbFdpZHRoJCB8IGFzeW5jXG4gICAgfVwiXG4gICAgY2xhc3M9XCJwYWdlLWFjdGlvbnNcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAjcGFnZUFjdGlvbnNWY3I+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -38,6 +38,9 @@ export class PageTitleService {
38
38
  get hasPageActions$() {
39
39
  return this._hasPageActions$.asObservable();
40
40
  }
41
+ get pageActionsFullWidth$() {
42
+ return this._pageActionsFullWidth$.asObservable();
43
+ }
41
44
  constructor(router) {
42
45
  this.router = router;
43
46
  this._customPageTitle$ = new BehaviorSubject('');
@@ -45,6 +48,7 @@ export class PageTitleService {
45
48
  this._customPageSubtitle$ = new BehaviorSubject('');
46
49
  this._customPageSubtitleSet$ = new BehaviorSubject(false);
47
50
  this._hasPageActions$ = new BehaviorSubject(false);
51
+ this._pageActionsFullWidth$ = new BehaviorSubject(false);
48
52
  this._pageActionsViewContainerRef$ = new BehaviorSubject(null);
49
53
  this.openRouteSubscription();
50
54
  }
@@ -74,6 +78,12 @@ export class PageTitleService {
74
78
  setHasPageActions(value) {
75
79
  this._hasPageActions$.next(value);
76
80
  }
81
+ setPageActionsFullWidth(value) {
82
+ this._pageActionsFullWidth$.next(value);
83
+ }
84
+ setCustomPageTitleSet(set) {
85
+ this._customPageTitleSet$.next(set);
86
+ }
77
87
  openRouteSubscription() {
78
88
  this._routeSubscription = combineLatest([
79
89
  this.router.events,
@@ -104,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
104
114
  providedIn: 'root',
105
115
  }]
106
116
  }], ctorParameters: function () { return [{ type: i1.Router }]; } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQWUzQixJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyw0QkFBNEI7UUFDckMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJ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OytHQXhHVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSZXNvbHZlRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tUGFnZVRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbVBhZ2VUaXRsZVNldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tUGFnZVN1YnRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbVBhZ2VTdWJ0aXRsZVNldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFzUGFnZUFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUFjdGlvbnNWaWV3Q29udGFpbmVyUmVmJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld0NvbnRhaW5lclJlZiB8IG51bGw+KFxuICAgIG51bGxcbiAgKTtcblxuICBwcml2YXRlIF9yb3V0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIF9wcmV2ZW50UmVzZXQhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBnZXQgY3VzdG9tUGFnZVRpdGxlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21QYWdlVGl0bGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXN0b21QYWdlVGl0bGVTZXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21QYWdlVGl0bGVTZXQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXN0b21QYWdlU3VidGl0bGUkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbVBhZ2VTdWJ0aXRsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1c3RvbVBhZ2VTdWJ0aXRsZVNldCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbVBhZ2VTdWJ0aXRsZVNldCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZiQoKTogT2JzZXJ2YWJsZTxWaWV3Q29udGFpbmVyUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BhZ2VBY3Rpb25zJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzUGFnZUFjdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHRoaXMub3BlblJvdXRlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcm91dGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VzdG9tUGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcsIHByZXZlbnRSZXNldCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5fY3VzdG9tUGFnZVRpdGxlJC5uZXh0KHRpdGxlKTtcbiAgICB0aGlzLl9jdXN0b21QYWdlVGl0bGVTZXQkLm5leHQodHJ1ZSk7XG5cbiAgICBpZiAocHJldmVudFJlc2V0KSB7XG4gICAgICB0aGlzLmRpc2FibGVSZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXN0b21QYWdlU3VidGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2N1c3RvbVBhZ2VTdWJ0aXRsZSQubmV4dCh0aXRsZSk7XG4gICAgdGhpcy5fY3VzdG9tUGFnZVN1YnRpdGxlU2V0JC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVSZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wcmV2ZW50UmVzZXQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ByZXZlbnRSZXNldCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldFBhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZihyZWY6IFZpZXdDb250YWluZXJSZWYpOiB2b2lkIHtcbiAgICB0aGlzLl9wYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYkLm5leHQocmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIYXNQYWdlQWN0aW9ucyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2hhc1BhZ2VBY3Rpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJvdXRlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3JvdXRlU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMsXG4gICAgICB0aGlzLl9wYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYkLFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChbZXZlbnRdKSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCB8fFxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlRW5kXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoW18sIHBhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZl0pID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuX3ByZXZlbnRSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tUGFnZVRpdGxlJC5uZXh0KCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbVBhZ2VUaXRsZVNldCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21QYWdlU3VidGl0bGUkLm5leHQoJycpO1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tUGFnZVN1YnRpdGxlU2V0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFnZUFjdGlvbnNWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICBwYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SGFzUGFnZUFjdGlvbnMoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELElBQVcsNEJBQTRCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7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QyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUM7WUFFRCxJQUFJLDJCQUEyQixFQUFFO2dCQUMvQiwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9CO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXJIVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSZXNvbHZlRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tUGFnZVRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbVBhZ2VUaXRsZVNldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tUGFnZVN1YnRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbVBhZ2VTdWJ0aXRsZVNldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFzUGFnZUFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VBY3Rpb25zRnVsbFdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZpZXdDb250YWluZXJSZWYgfCBudWxsPihcbiAgICBudWxsXG4gICk7XG5cbiAgcHJpdmF0ZSBfcm91dGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfcHJldmVudFJlc2V0ITogYm9vbGVhbjtcblxuICBwdWJsaWMgZ2V0IGN1c3RvbVBhZ2VUaXRsZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fY3VzdG9tUGFnZVRpdGxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VzdG9tUGFnZVRpdGxlU2V0JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fY3VzdG9tUGFnZVRpdGxlU2V0JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VzdG9tUGFnZVN1YnRpdGxlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21QYWdlU3VidGl0bGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXN0b21QYWdlU3VidGl0bGVTZXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21QYWdlU3VidGl0bGVTZXQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYkKCk6IE9ic2VydmFibGU8Vmlld0NvbnRhaW5lclJlZj4ge1xuICAgIHJldHVybiB0aGlzLl9wYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNQYWdlQWN0aW9ucyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1BhZ2VBY3Rpb25zJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnZUFjdGlvbnNGdWxsV2lkdGgkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9wYWdlQWN0aW9uc0Z1bGxXaWR0aCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5vcGVuUm91dGVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yb3V0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXN0b21QYWdlVGl0bGUodGl0bGU6IHN0cmluZywgcHJldmVudFJlc2V0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXN0b21QYWdlVGl0bGUkLm5leHQodGl0bGUpO1xuICAgIHRoaXMuX2N1c3RvbVBhZ2VUaXRsZVNldCQubmV4dCh0cnVlKTtcblxuICAgIGlmIChwcmV2ZW50UmVzZXQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEN1c3RvbVBhZ2VTdWJ0aXRsZSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fY3VzdG9tUGFnZVN1YnRpdGxlJC5uZXh0KHRpdGxlKTtcbiAgICB0aGlzLl9jdXN0b21QYWdlU3VidGl0bGVTZXQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ByZXZlbnRSZXNldCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlUmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcHJldmVudFJlc2V0ID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFnZUFjdGlvbnNWaWV3Q29udGFpbmVyUmVmKHJlZjogVmlld0NvbnRhaW5lclJlZik6IHZvaWQge1xuICAgIHRoaXMuX3BhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZiQubmV4dChyZWYpO1xuICB9XG5cbiAgcHVibGljIHNldEhhc1BhZ2VBY3Rpb25zKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faGFzUGFnZUFjdGlvbnMkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNldFBhZ2VBY3Rpb25zRnVsbFdpZHRoKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fcGFnZUFjdGlvbnNGdWxsV2lkdGgkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNldEN1c3RvbVBhZ2VUaXRsZVNldChzZXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9jdXN0b21QYWdlVGl0bGVTZXQkLm5leHQoc2V0KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJvdXRlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3JvdXRlU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMsXG4gICAgICB0aGlzLl9wYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYkLFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChbZXZlbnRdKSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCB8fFxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlRW5kXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoW18sIHBhZ2VBY3Rpb25zVmlld0NvbnRhaW5lclJlZl0pID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuX3ByZXZlbnRSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tUGFnZVRpdGxlJC5uZXh0KCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbVBhZ2VUaXRsZVNldCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21QYWdlU3VidGl0bGUkLm5leHQoJycpO1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tUGFnZVN1YnRpdGxlU2V0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFnZUFjdGlvbnNWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICBwYWdlQWN0aW9uc1ZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SGFzUGFnZUFjdGlvbnMoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -139,11 +139,11 @@ export class SelectComponent {
139
139
  }
140
140
  }
141
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectComponent, selector: "v-select", inputs: { items: "items", defaultSelection: "defaultSelection", defaultSelectionId: "defaultSelectionId", defaultSelectionIds: "defaultSelectionIds", disabled: "disabled", multiple: "multiple", margin: "margin", widthInPx: "widthInPx", notFoundText: "notFoundText", clearAllText: "clearAllText", clearText: "clearText", name: "name", title: "title", titleTranslationKey: "titleTranslationKey", clearSelectionSubject$: "clearSelectionSubject$", tooltip: "tooltip", required: "required", loading: "loading", loadingText: "loadingText", placeholder: "placeholder", smallMargin: "smallMargin", carbonTheme: "carbonTheme" }, outputs: { selectedChange: "selectedChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async\n } as vars\"\n [ngClass]=\"{'--margin': margin, '--small-margin': smallMargin}\"\n class=\"v-select-container\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n <cds-combo-box\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"disabled || loading || vars.items.length === 0\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : vars.items.length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n >\n <cds-dropdown-list\n [items]=\"vars.items\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n ></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */::ng-deep .cds--list-box__wrapper{z-index:100001!important}.v-select-container.--margin{margin-block-end:var(--v-input-margin)}.v-select-container.--small-margin{margin-block-end:var(--v-input-small-margin)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "items", "type", "size", "itemValueKey", "label", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectComponent, selector: "v-select", inputs: { items: "items", defaultSelection: "defaultSelection", defaultSelectionId: "defaultSelectionId", defaultSelectionIds: "defaultSelectionIds", disabled: "disabled", multiple: "multiple", margin: "margin", widthInPx: "widthInPx", notFoundText: "notFoundText", clearAllText: "clearAllText", clearText: "clearText", name: "name", title: "title", titleTranslationKey: "titleTranslationKey", clearSelectionSubject$: "clearSelectionSubject$", tooltip: "tooltip", required: "required", loading: "loading", loadingText: "loadingText", placeholder: "placeholder", smallMargin: "smallMargin", carbonTheme: "carbonTheme" }, outputs: { selectedChange: "selectedChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async\n } as vars\"\n [ngClass]=\"{'--margin': margin, '--small-margin': smallMargin}\"\n class=\"v-select-container\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n <cds-combo-box\n [appendInline]=\"true\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"disabled || loading || vars.items.length === 0\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : vars.items.length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n >\n <cds-dropdown-list\n [items]=\"vars.items\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n ></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-select-container.--margin{margin-block-end:var(--v-input-margin)}.v-select-container.--small-margin{margin-block-end:var(--v-input-small-margin)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "items", "type", "size", "itemValueKey", "label", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'v-select', template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async\n } as vars\"\n [ngClass]=\"{'--margin': margin, '--small-margin': smallMargin}\"\n class=\"v-select-container\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n <cds-combo-box\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"disabled || loading || vars.items.length === 0\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : vars.items.length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n >\n <cds-dropdown-list\n [items]=\"vars.items\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n ></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */::ng-deep .cds--list-box__wrapper{z-index:100001!important}.v-select-container.--margin{margin-block-end:var(--v-input-margin)}.v-select-container.--small-margin{margin-block-end:var(--v-input-small-margin)}\n"] }]
146
+ args: [{ selector: 'v-select', template: "<!--\n ~ Copyright 2015-2023 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<div\n *ngIf=\"{\n placeholderText: placeholder || ('interface.filter' | translate),\n loadingText: loadingText || ('interface.loading' | translate),\n clearText: clearText || ('interface.clear' | translate),\n clearAllText: clearAllText || ('interface.clearAll' | translate),\n notFoundText: notFoundText || ('interface.noItemsFound' | translate),\n items: listItems$ | async\n } as vars\"\n [ngClass]=\"{'--margin': margin, '--small-margin': smallMargin}\"\n class=\"v-select-container\"\n [style.width.px]=\"widthInPx\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [name]=\"name\"\n [required]=\"required\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [title]=\"title\"\n [tooltip]=\"tooltip\"\n >\n </v-input-label>\n <cds-combo-box\n [appendInline]=\"true\"\n [clearSelectionTitle]=\"vars.clearText\"\n [clearSelectionsTitle]=\"vars.clearAllText\"\n [disabled]=\"disabled || loading || vars.items.length === 0\"\n [placeholder]=\"\n loading\n ? vars.loadingText\n : vars.items.length === 0\n ? vars.notFoundText\n : vars.placeholderText\n \"\n [type]=\"multiple ? 'multi' : 'single'\"\n (clear)=\"clear()\"\n (selected)=\"setSelected($event)\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n >\n <cds-dropdown-list\n [items]=\"vars.items\"\n [attr.data-carbon-theme]=\"carbonTheme\"\n ></cds-dropdown-list>\n </cds-combo-box>\n</div>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.v-select-container.--margin{margin-block-end:var(--v-input-margin)}.v-select-container.--small-margin{margin-block-end:var(--v-input-small-margin)}\n"] }]
147
147
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { items: [{
148
148
  type: Input
149
149
  }], defaultSelection: [{
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
191
191
  }], selectedChange: [{
192
192
  type: Output
193
193
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBT3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQW9CLEtBQUssQ0FBQyxLQUF3QjtRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDbEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ1AsSUFBSSxDQUFDLEVBQUUsQ0FDTCxDQUFDO2dCQUNDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjO2dCQUN6QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBYSxDQUNqQjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFrREQsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5Qy9DLGFBQVEsR0FBRyxL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QUFDOytHQWxKVSxlQUFlO21HQUFmLGVBQWUsZ3VCQ3JDNUIsbWtFQTREQTs7NEZEdkJhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsVUFBVTt1R0FLQSxLQUFLO3NCQUF4QixLQUFLO2dCQWNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFVyxjQUFjO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWxlY3RlZFZhbHVlLCBTZWxlY3RJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXRlbXModmFsdWU6IEFycmF5PFNlbGVjdEl0ZW0+KSB7XG4gICAgdGhpcy5fbGlzdEl0ZW1zJC5uZXh0KFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoXG4gICAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS50ZXh0IHx8IGl0ZW0udHJhbnNsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9KSBhcyBMaXN0SXRlbVxuICAgICAgICAgIClcbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRTZWxlY3Rpb24hOiBTZWxlY3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdFNlbGVjdGlvbklkITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdFNlbGVjdGlvbklkcyE6IEFycmF5PHN0cmluZz47XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIG1hcmdpbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgd2lkdGhJblB4ITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgbm90Rm91bmRUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJBbGxUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHRpdGxlVHJhbnNsYXRpb25LZXkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGNsZWFyU2VsZWN0aW9uU3ViamVjdCQhOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmdUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc21hbGxNYXJnaW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGNhcmJvblRoZW1lID0gJ2cxMCc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPFNlbGVjdGVkVmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGVkVmFsdWU+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8TGlzdEl0ZW0+PihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBsaXN0SXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9saXN0SXRlbXMkLFxuICAgIHRoaXMuc2VsZWN0ZWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xpc3RJdGVtcywgc2VsZWN0ZWRdKSA9PlxuICAgICAgbGlzdEl0ZW1zLm1hcChsaXN0SXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobGlzdEl0ZW0uY29udGVudCk7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBBcnJheS5pc0FycmF5KHNlbGVjdGVkKVxuICAgICAgICAgID8gc2VsZWN0ZWQuaW5jbHVkZXMobGlzdEl0ZW0uaWQpXG4gICAgICAgICAgOiBzZWxlY3RlZCA9PT0gbGlzdEl0ZW0uaWQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5saXN0SXRlbSxcbiAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBjb250ZW50OiB0cmFuc2xhdGlvbiAhPT0gbGlzdEl0ZW0uY29udGVudCA/IHRyYW5zbGF0aW9uIDogbGlzdEl0ZW0uY29udGVudCxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBwcml2YXRlIF9zZWxlY3RlZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfY2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREZWZhdWx0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5vcGVuU2VsZWN0ZWRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5DbGVhclN1YmplY3RTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcz8uaXRlbXM/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgY2hhbmdlcz8uZGVmYXVsdFNlbGVjdGlvbklkPy5jdXJyZW50VmFsdWUgfHxcbiAgICAgIGNoYW5nZXM/LmRlZmF1bHRTZWxlY3Rpb24/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgY2hhbmdlcz8uZGVmYXVsdFNlbGVjdGlvbklkcz8uY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fY2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkVmFsdWU6IExpc3RJdGVtIHwgQXJyYXk8TGlzdEl0ZW0+KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSAhQXJyYXkuaXNBcnJheShzZWxlY3RlZFZhbHVlKSAmJiBzZWxlY3RlZFZhbHVlPy5pZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoc2VsZWN0ZWRWYWx1ZS5tYXAodmFsdWUgPT4gdmFsdWUuaWQpKTtcbiAgICB9IGVsc2UgaWYgKGlkICYmIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGVkVmFsdWUoc2VsZWN0ZWRWYWx1ZTogU2VsZWN0ZWRWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGN1cnJlbnRTZWxlY3RlZCA9PiB7XG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY3VycmVudFNlbGVjdGVkKSAhPT0gSlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCQubmV4dChzZWxlY3RlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdEl0ZW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShsaXN0SXRlbXMgPT4ge1xuICAgICAgY29uc3QgaXRlbXNJZHMgPSBsaXN0SXRlbXM/Lm1hcChpdGVtID0+IGl0ZW0uaWQpO1xuICAgICAgY29uc3QgZGVmYXVsdFNlbGVjdGlvbklkcyA9IHRoaXMuZGVmYXVsdFNlbGVjdGlvbklkcztcbiAgICAgIGNvbnN0IGRlZmF1bHRTZWxlY3Rpb25JZCA9IHRoaXMuZGVmYXVsdFNlbGVjdGlvbj8uaWQgfHwgdGhpcy5kZWZhdWx0U2VsZWN0aW9uSWQ7XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZGVmYXVsdFNlbGVjdGlvbklkcykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoWy4uLmRlZmF1bHRTZWxlY3Rpb25JZHNdKTtcbiAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFNlbGVjdGlvbklkICYmIGl0ZW1zSWRzPy5pbmNsdWRlcyhkZWZhdWx0U2VsZWN0aW9uSWQpKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKFtkZWZhdWx0U2VsZWN0aW9uSWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZGVmYXVsdFNlbGVjdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkZWZhdWx0U2VsZWN0aW9uSWQgJiYgIWl0ZW1zSWRzPy5pbmNsdWRlcyhkZWZhdWx0U2VsZWN0aW9uSWQpKSB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNlbGVjdGVkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkU3Vic2NyaXB0aW9uID0gdGhpcy5zZWxlY3RlZCQuc3Vic2NyaWJlKHNlbGVjdGVkVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNlbGVjdGlvbklkID0gdGhpcy5kZWZhdWx0U2VsZWN0aW9uPy5pZCB8fCB0aGlzLmRlZmF1bHRTZWxlY3Rpb25JZDtcblxuICAgICAgaWYgKCghdGhpcy5tdWx0aXBsZSAmJiBzZWxlY3RlZFZhbHVlICE9PSBkZWZhdWx0U2VsZWN0aW9uSWQpIHx8IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFyU2VsZWN0aW9uU3ViamVjdCQpIHtcbiAgICAgIHRoaXMuX2NsZWFyU3ViamVjdFN1YnNjcmlwdGlvbiA9IHRoaXMuY2xlYXJTZWxlY3Rpb25TdWJqZWN0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBwbGFjZWhvbGRlclRleHQ6IHBsYWNlaG9sZGVyIHx8ICgnaW50ZXJmYWNlLmZpbHRlcicgfCB0cmFuc2xhdGUpLFxuICAgIGxvYWRpbmdUZXh0OiBsb2FkaW5nVGV4dCB8fCAoJ2ludGVyZmFjZS5sb2FkaW5nJyB8IHRyYW5zbGF0ZSksXG4gICAgY2xlYXJUZXh0OiBjbGVhclRleHQgfHwgKCdpbnRlcmZhY2UuY2xlYXInIHwgdHJhbnNsYXRlKSxcbiAgICBjbGVhckFsbFRleHQ6IGNsZWFyQWxsVGV4dCB8fCAoJ2ludGVyZmFjZS5jbGVhckFsbCcgfCB0cmFuc2xhdGUpLFxuICAgIG5vdEZvdW5kVGV4dDogbm90Rm91bmRUZXh0IHx8ICgnaW50ZXJmYWNlLm5vSXRlbXNGb3VuZCcgfCB0cmFuc2xhdGUpLFxuICAgIGl0ZW1zOiBsaXN0SXRlbXMkIHwgYXN5bmNcbiAgfSBhcyB2YXJzXCJcbiAgW25nQ2xhc3NdPVwieyctLW1hcmdpbic6IG1hcmdpbiwgJy0tc21hbGwtbWFyZ2luJzogc21hbGxNYXJnaW59XCJcbiAgY2xhc3M9XCJ2LXNlbGVjdC1jb250YWluZXJcIlxuICBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhJblB4XCJcbj5cbiAgPHYtaW5wdXQtbGFiZWxcbiAgICAqbmdJZj1cInRpdGxlIHx8IHRpdGxlVHJhbnNsYXRpb25LZXlcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3RpdGxlVHJhbnNsYXRpb25LZXldPVwidGl0bGVUcmFuc2xhdGlvbktleVwiXG4gICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICBbdG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgPlxuICA8L3YtaW5wdXQtbGFiZWw+XG4gIDxjZHMtY29tYm8tYm94XG4gICAgW2NsZWFyU2VsZWN0aW9uVGl0bGVdPVwidmFycy5jbGVhclRleHRcIlxuICAgIFtjbGVhclNlbGVjdGlvbnNUaXRsZV09XCJ2YXJzLmNsZWFyQWxsVGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmcgfHwgdmFycy5pdGVtcy5sZW5ndGggPT09IDBcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgIGxvYWRpbmdcbiAgICAgICAgPyB2YXJzLmxvYWRpbmdUZXh0XG4gICAgICAgIDogdmFycy5pdGVtcy5sZW5ndGggPT09IDBcbiAgICAgICAgPyB2YXJzLm5vdEZvdW5kVGV4dFxuICAgICAgICA6IHZhcnMucGxhY2Vob2xkZXJUZXh0XG4gICAgXCJcbiAgICBbdHlwZV09XCJtdWx0aXBsZSA/ICdtdWx0aScgOiAnc2luZ2xlJ1wiXG4gICAgKGNsZWFyKT1cImNsZWFyKClcIlxuICAgIChzZWxlY3RlZCk9XCJzZXRTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJjYXJib25UaGVtZVwiXG4gID5cbiAgICA8Y2RzLWRyb3Bkb3duLWxpc3RcbiAgICAgIFtpdGVtc109XCJ2YXJzLml0ZW1zXCJcbiAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cImNhcmJvblRoZW1lXCJcbiAgICA+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgPC9jZHMtY29tYm8tYm94PlxuPC9kaXY+XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBT3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQW9CLEtBQUssQ0FBQyxLQUF3QjtRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDbEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ1AsSUFBSSxDQUFDLEVBQUUsQ0FDTCxDQUFDO2dCQUNDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjO2dCQUN6QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBYSxDQUNqQjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFrREQsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5Qy9DLGFBQVEsR0FBRyxL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QUFDOytHQWxKVSxlQUFlO21HQUFmLGVBQWUsZ3VCQ3JDNUIsZ21FQTZEQTs7NEZEeEJhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsVUFBVTt1R0FLQSxLQUFLO3NCQUF4QixLQUFLO2dCQWNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFVyxjQUFjO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWxlY3RlZFZhbHVlLCBTZWxlY3RJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXRlbXModmFsdWU6IEFycmF5PFNlbGVjdEl0ZW0+KSB7XG4gICAgdGhpcy5fbGlzdEl0ZW1zJC5uZXh0KFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoXG4gICAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgY29udGVudDogaXRlbS50ZXh0IHx8IGl0ZW0udHJhbnNsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9KSBhcyBMaXN0SXRlbVxuICAgICAgICAgIClcbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRTZWxlY3Rpb24hOiBTZWxlY3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdFNlbGVjdGlvbklkITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdFNlbGVjdGlvbklkcyE6IEFycmF5PHN0cmluZz47XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIG1hcmdpbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgd2lkdGhJblB4ITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgbm90Rm91bmRUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJBbGxUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJUZXh0ITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHRpdGxlVHJhbnNsYXRpb25LZXkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGNsZWFyU2VsZWN0aW9uU3ViamVjdCQhOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmdUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc21hbGxNYXJnaW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGNhcmJvblRoZW1lID0gJ2cxMCc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPFNlbGVjdGVkVmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGVkVmFsdWU+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8TGlzdEl0ZW0+PihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBsaXN0SXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9saXN0SXRlbXMkLFxuICAgIHRoaXMuc2VsZWN0ZWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xpc3RJdGVtcywgc2VsZWN0ZWRdKSA9PlxuICAgICAgbGlzdEl0ZW1zLm1hcChsaXN0SXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobGlzdEl0ZW0uY29udGVudCk7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBBcnJheS5pc0FycmF5KHNlbGVjdGVkKVxuICAgICAgICAgID8gc2VsZWN0ZWQuaW5jbHVkZXMobGlzdEl0ZW0uaWQpXG4gICAgICAgICAgOiBzZWxlY3RlZCA9PT0gbGlzdEl0ZW0uaWQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5saXN0SXRlbSxcbiAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICBjb250ZW50OiB0cmFuc2xhdGlvbiAhPT0gbGlzdEl0ZW0uY29udGVudCA/IHRyYW5zbGF0aW9uIDogbGlzdEl0ZW0uY29udGVudCxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBwcml2YXRlIF9zZWxlY3RlZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfY2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREZWZhdWx0U2VsZWN0aW9uKCk7XG4gICAgdGhpcy5vcGVuU2VsZWN0ZWRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5DbGVhclN1YmplY3RTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcz8uaXRlbXM/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgY2hhbmdlcz8uZGVmYXVsdFNlbGVjdGlvbklkPy5jdXJyZW50VmFsdWUgfHxcbiAgICAgIGNoYW5nZXM/LmRlZmF1bHRTZWxlY3Rpb24/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgY2hhbmdlcz8uZGVmYXVsdFNlbGVjdGlvbklkcz8uY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fY2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkVmFsdWU6IExpc3RJdGVtIHwgQXJyYXk8TGlzdEl0ZW0+KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSAhQXJyYXkuaXNBcnJheShzZWxlY3RlZFZhbHVlKSAmJiBzZWxlY3RlZFZhbHVlPy5pZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoc2VsZWN0ZWRWYWx1ZS5tYXAodmFsdWUgPT4gdmFsdWUuaWQpKTtcbiAgICB9IGVsc2UgaWYgKGlkICYmIHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGVkVmFsdWUoc2VsZWN0ZWRWYWx1ZTogU2VsZWN0ZWRWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGN1cnJlbnRTZWxlY3RlZCA9PiB7XG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY3VycmVudFNlbGVjdGVkKSAhPT0gSlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCQubmV4dChzZWxlY3RlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdEl0ZW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShsaXN0SXRlbXMgPT4ge1xuICAgICAgY29uc3QgaXRlbXNJZHMgPSBsaXN0SXRlbXM/Lm1hcChpdGVtID0+IGl0ZW0uaWQpO1xuICAgICAgY29uc3QgZGVmYXVsdFNlbGVjdGlvbklkcyA9IHRoaXMuZGVmYXVsdFNlbGVjdGlvbklkcztcbiAgICAgIGNvbnN0IGRlZmF1bHRTZWxlY3Rpb25JZCA9IHRoaXMuZGVmYXVsdFNlbGVjdGlvbj8uaWQgfHwgdGhpcy5kZWZhdWx0U2VsZWN0aW9uSWQ7XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZGVmYXVsdFNlbGVjdGlvbklkcykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoWy4uLmRlZmF1bHRTZWxlY3Rpb25JZHNdKTtcbiAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFNlbGVjdGlvbklkICYmIGl0ZW1zSWRzPy5pbmNsdWRlcyhkZWZhdWx0U2VsZWN0aW9uSWQpKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKFtkZWZhdWx0U2VsZWN0aW9uSWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZGVmYXVsdFNlbGVjdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkZWZhdWx0U2VsZWN0aW9uSWQgJiYgIWl0ZW1zSWRzPy5pbmNsdWRlcyhkZWZhdWx0U2VsZWN0aW9uSWQpKSB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNlbGVjdGVkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkU3Vic2NyaXB0aW9uID0gdGhpcy5zZWxlY3RlZCQuc3Vic2NyaWJlKHNlbGVjdGVkVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNlbGVjdGlvbklkID0gdGhpcy5kZWZhdWx0U2VsZWN0aW9uPy5pZCB8fCB0aGlzLmRlZmF1bHRTZWxlY3Rpb25JZDtcblxuICAgICAgaWYgKCghdGhpcy5tdWx0aXBsZSAmJiBzZWxlY3RlZFZhbHVlICE9PSBkZWZhdWx0U2VsZWN0aW9uSWQpIHx8IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2xlYXJTdWJqZWN0U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFyU2VsZWN0aW9uU3ViamVjdCQpIHtcbiAgICAgIHRoaXMuX2NsZWFyU3ViamVjdFN1YnNjcmlwdGlvbiA9IHRoaXMuY2xlYXJTZWxlY3Rpb25TdWJqZWN0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBwbGFjZWhvbGRlclRleHQ6IHBsYWNlaG9sZGVyIHx8ICgnaW50ZXJmYWNlLmZpbHRlcicgfCB0cmFuc2xhdGUpLFxuICAgIGxvYWRpbmdUZXh0OiBsb2FkaW5nVGV4dCB8fCAoJ2ludGVyZmFjZS5sb2FkaW5nJyB8IHRyYW5zbGF0ZSksXG4gICAgY2xlYXJUZXh0OiBjbGVhclRleHQgfHwgKCdpbnRlcmZhY2UuY2xlYXInIHwgdHJhbnNsYXRlKSxcbiAgICBjbGVhckFsbFRleHQ6IGNsZWFyQWxsVGV4dCB8fCAoJ2ludGVyZmFjZS5jbGVhckFsbCcgfCB0cmFuc2xhdGUpLFxuICAgIG5vdEZvdW5kVGV4dDogbm90Rm91bmRUZXh0IHx8ICgnaW50ZXJmYWNlLm5vSXRlbXNGb3VuZCcgfCB0cmFuc2xhdGUpLFxuICAgIGl0ZW1zOiBsaXN0SXRlbXMkIHwgYXN5bmNcbiAgfSBhcyB2YXJzXCJcbiAgW25nQ2xhc3NdPVwieyctLW1hcmdpbic6IG1hcmdpbiwgJy0tc21hbGwtbWFyZ2luJzogc21hbGxNYXJnaW59XCJcbiAgY2xhc3M9XCJ2LXNlbGVjdC1jb250YWluZXJcIlxuICBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhJblB4XCJcbj5cbiAgPHYtaW5wdXQtbGFiZWxcbiAgICAqbmdJZj1cInRpdGxlIHx8IHRpdGxlVHJhbnNsYXRpb25LZXlcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3RpdGxlVHJhbnNsYXRpb25LZXldPVwidGl0bGVUcmFuc2xhdGlvbktleVwiXG4gICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICBbdG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgPlxuICA8L3YtaW5wdXQtbGFiZWw+XG4gIDxjZHMtY29tYm8tYm94XG4gICAgW2FwcGVuZElubGluZV09XCJ0cnVlXCJcbiAgICBbY2xlYXJTZWxlY3Rpb25UaXRsZV09XCJ2YXJzLmNsZWFyVGV4dFwiXG4gICAgW2NsZWFyU2VsZWN0aW9uc1RpdGxlXT1cInZhcnMuY2xlYXJBbGxUZXh0XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbG9hZGluZyB8fCB2YXJzLml0ZW1zLmxlbmd0aCA9PT0gMFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgbG9hZGluZ1xuICAgICAgICA/IHZhcnMubG9hZGluZ1RleHRcbiAgICAgICAgOiB2YXJzLml0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICAgICA/IHZhcnMubm90Rm91bmRUZXh0XG4gICAgICAgIDogdmFycy5wbGFjZWhvbGRlclRleHRcbiAgICBcIlxuICAgIFt0eXBlXT1cIm11bHRpcGxlID8gJ211bHRpJyA6ICdzaW5nbGUnXCJcbiAgICAoY2xlYXIpPVwiY2xlYXIoKVwiXG4gICAgKHNlbGVjdGVkKT1cInNldFNlbGVjdGVkKCRldmVudClcIlxuICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cImNhcmJvblRoZW1lXCJcbiAgPlxuICAgIDxjZHMtZHJvcGRvd24tbGlzdFxuICAgICAgW2l0ZW1zXT1cInZhcnMuaXRlbXNcIlxuICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwiY2FyYm9uVGhlbWVcIlxuICAgID48L2Nkcy1kcm9wZG93bi1saXN0PlxuICA8L2Nkcy1jb21iby1ib3g+XG48L2Rpdj5cbiJdfQ==