@fundamental-ngx/platform 0.47.0-rc.21 → 0.47.0-rc.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action-button-group/action-button-group.component.d.ts +6 -0
- package/button/button.component.d.ts +4 -0
- package/esm2022/action-button-group/action-button-group.component.mjs +11 -2
- package/esm2022/button/button.component.mjs +6 -1
- package/esm2022/feed-input/feed-input.component.mjs +10 -2
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +3 -3
- package/esm2022/form/input/input.component.mjs +2 -2
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +2 -2
- package/esm2022/form/multi-input/multi-input.component.mjs +2 -2
- package/esm2022/form/text-area/text-area.component.mjs +2 -2
- package/esm2022/info-label/info-label.component.mjs +8 -2
- package/esm2022/link/link.component.mjs +7 -1
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +7 -7
- package/esm2022/menu/menu-item.component.mjs +4 -1
- package/esm2022/menu/menu.component.mjs +7 -2
- package/esm2022/menu-button/menu-button.component.mjs +7 -1
- package/esm2022/object-attribute/index.mjs +4 -3
- package/esm2022/object-marker/object-marker.component.mjs +11 -2
- package/esm2022/object-status/object-status.component.mjs +9 -3
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +2 -2
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +2 -2
- package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +2 -2
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +2 -2
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +2 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -2
- package/feed-input/feed-input.component.d.ts +5 -0
- package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +10 -1
- package/fesm2022/fundamental-ngx-platform-action-button-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +5 -0
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +6 -6
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +7 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +6 -0
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +6 -6
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +6 -0
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +9 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +1 -60
- package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +10 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +8 -2
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.47.0-rc.23.tgz +0 -0
- package/info-label/info-label.component.d.ts +5 -0
- package/link/link.component.d.ts +4 -0
- package/menu/menu-item.component.d.ts +3 -0
- package/menu/menu.component.d.ts +4 -0
- package/menu-button/menu-button.component.d.ts +4 -0
- package/object-attribute/index.d.ts +3 -2
- package/object-marker/object-marker.component.d.ts +6 -0
- package/object-status/object-status.component.d.ts +6 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/esm2022/object-attribute/object-attribute.component.mjs +0 -45
- package/esm2022/object-attribute/object-attribute.module.mjs +0 -16
- package/fundamental-ngx-platform-v0.47.0-rc.21.tgz +0 -0
- package/object-attribute/README.md +0 -25
- package/object-attribute/object-attribute.component.d.ts +0 -26
- package/object-attribute/object-attribute.module.d.ts +0 -7
|
@@ -361,7 +361,7 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
|
|
|
361
361
|
multi: true
|
|
362
362
|
},
|
|
363
363
|
contentDensityObserverProviders()
|
|
364
|
-
], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"isOpen ? _suggestions : []\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [interceptTabKey]=\"false\"\n (keydown.tab)=\"close()\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator", "interceptTabKey"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
364
|
+
], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"isOpen ? _suggestions : []\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [interceptTabKey]=\"false\"\n (keydown.tab)=\"close()\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator", "interceptTabKey"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: MultiAnnouncerDirective, selector: "[fdMultiAnnouncer]", inputs: ["multiAnnouncerOptions"], exportAs: ["fdMultiAnnouncer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
365
365
|
}
|
|
366
366
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformMultiInputComponent, decorators: [{
|
|
367
367
|
type: Component,
|
|
@@ -475,4 +475,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
475
475
|
}], displayFn: [{
|
|
476
476
|
type: Input
|
|
477
477
|
}] } });
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENB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d0JBQ3BCLGVBQWU7d0JBQ2YsdUJBQXVCO3FCQUMxQjs7MEJBdUhJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxRQUFROzswQkFFcEIsUUFBUTs7MEJBQUksSUFBSTs7MEJBRWhCLFFBQVE7OzBCQVFSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs7MEJBSWpDLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBRXBELFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO2lGQWxJakUsYUFBYTtzQkFEWixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxhQUFhO2dCQVFwQixRQUFRO3NCQURYLEtBQUs7Z0JBWU4sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFnQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWVOLGVBQWU7c0JBRGQsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLRyxlQUFlO3NCQUR2QixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSzVCLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjO2dCQUtSLFVBQVU7c0JBRDFCLFlBQVk7dUJBQUMsWUFBWTtnQkFrRDFCLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IERPV05fQVJST1csIEVTQ0FQRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Rm5QaXBlLCBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCwgVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbml6ZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b2tlbic7XG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIE1vZGlmeUl0ZW1FdmVudCxcbiAgICBQbGF0Zm9ybUxpc3RNb2R1bGUsXG4gICAgU2VsZWN0aW9uVHlwZSxcbiAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vbGlzdCc7XG5pbXBvcnQge1xuICAgIERBVEFfUFJPVklERVJTLFxuICAgIERhdGFQcm92aWRlcixcbiAgICBNdWx0aUlucHV0RGF0YVNvdXJjZSxcbiAgICBNdWx0aUlucHV0T3B0aW9uLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICBpc0Z1bmN0aW9uXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcblxuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgTXVsdGlBbm5vdW5jZXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbXVsdGktY29tYm9ib3gnO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQsIFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVEaXJlY3RpdmUsIEF1dG9Db21wbGV0ZUV2ZW50IH0gZnJvbSAnLi4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZU11bHRpSW5wdXQgfSBmcm9tICcuL2Jhc2UtbXVsdGktaW5wdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm1NdWx0aUlucHV0TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1pbnB1dC1tb2JpbGUvbXVsdGktaW5wdXQtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1pbnB1dC5jb25maWcnO1xuaW1wb3J0IHsgTVVMVElJTlBVVF9DT01QT05FTlQgfSBmcm9tICcuL211bHRpLWlucHV0LmludGVyZmFjZSc7XG5cbmxldCB1bmlxdWVIaWRkZW5MYWJlbCA9IDA7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIE11bHRpIElucHV0IHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIE11bHRpIElucHV0IGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCxcbiAgICAgICAgcHVibGljIHBheWxvYWQ6IGFueSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtXG4gICAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tdWx0aS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIElucHV0R3JvdXBNb2R1bGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRva2VuQ29tcG9uZW50LFxuICAgICAgICBUb2tlbml6ZXJDb21wb25lbnQsXG4gICAgICAgIFRva2VuaXplcklucHV0RGlyZWN0aXZlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBBdXRvQ29tcGxldGVEaXJlY3RpdmUsXG4gICAgICAgIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgUGxhdGZvcm1MaXN0TW9kdWxlLFxuICAgICAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBEaXNwbGF5Rm5QaXBlLFxuICAgICAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNdWx0aUFubm91bmNlckRpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1NdWx0aUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZU11bHRpSW5wdXQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHRva2VuQ291bnRIaWRkZW5MYWJlbCA9IGBmZHAtbXVsdGktaW5wdXQtdG9rZW4tY291bnQtaWQtJHt1bmlxdWVIaWRkZW5MYWJlbCsrfWA7XG5cbiAgICAvKiogdG9rZW4gIGNvdW50IGhpZGRlbiBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5IaWRkZW5JZDogc3RyaW5nID0gdGhpcy50b2tlbkNvdW50SGlkZGVuTGFiZWw7XG5cbiAgICAvKiogdHlwZSBSZXByZXNlbnQgdGhlIHR5cGUgb2YgaW5wdXQgdXNlZCBmb3IgdGhlIG11bHRpIElucHV0ICovXG4gICAgQElucHV0KClcbiAgICB0eXBlOiBJbnB1dFR5cGU7XG5cbiAgICAvKiogYm9vbGVhbiB0eXBlIHJlcHJlc2VudHMgdGhlIGZvY3VzIHNldCBmb3IgdGhlIHJlc3BlY3RpdmUgbXVsdGkgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGhBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RUZW1wbGF0ZUREOiBMaXN0Q29tcG9uZW50PE11bHRpSW5wdXRPcHRpb24+O1xuXG4gICAgLyoqIFNlbGVjdGVkIHZhbHVlcyBmcm9tIHRoZSBsaXN0IGl0ZW1zLiAqL1xuICAgIF9zZWxlY3RlZDogYW55W10gPSBbXTtcblxuICAgIC8qKiBTZWxlY3RlZCBpdGVtcyBvZiB0aGUgbXVsdGkgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZTogYW55W10pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZCgpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uVHlwZSA9ICdub25lJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGluIGJ5bGluZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGFzQnlMaW5lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkVmFsdWU/OiBNdWx0aUlucHV0T3B0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNHcm91cCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cEtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpIGlucHV0IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgb3B0aW9ucyBwb3BvdmVyLlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tYm9ib3ggc2hvdWxkIGNsb3NlLCB3aGVuIGEgY2xpY2sgaXMgcGVyZm9ybWVkIG91dHNpZGUgaXRzIGJvdW5kYXJpZXMuIFRydWUgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBhZGQtb24gYnV0dG9uIGNsaWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBhZGRPbkJ1dHRvbkNsaWNrRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVG9rZW5pemVyQ29tcG9uZW50KVxuICAgIHRva2VuaXplcjogVG9rZW5pemVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250cm9sVGVtcGxhdGUnKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGlzdFRlbXBsYXRlJylcbiAgICBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQmFzZUxpc3RJdGVtKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RJdGVtczogUXVlcnlMaXN0PEJhc2VMaXN0SXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIHJlYWRvbmx5IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQV9QUk9WSURFUlMpIHByaXZhdGUgX3Byb3ZpZGVyczogTWFwPHN0cmluZywgRGF0YVByb3ZpZGVyPGFueT4+LFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBfbXVsdGlJbnB1dENvbmZpZzogTXVsdGlJbnB1dENvbmZpZyxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBjZCxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICBuZ0NvbnRyb2wsXG4gICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgbmdGb3JtLFxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgX211bHRpSW5wdXRDb25maWcsXG4gICAgICAgICAgICBmb3JtRmllbGQsXG4gICAgICAgICAgICBmb3JtQ29udHJvbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBEaXNwbGF5IGZ1bmN0aW9uLiBBY2NlcHRzIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZVxuICAgICAqIGl0ZW1zIHBhc3NlZCB0byBkcm9wZG93blZhbHVlcyBhcyBhcmd1bWVudCwgYW5kIG91dHB1dHMgYSBzdHJpbmcuXG4gICAgICogQW4gYXJyb3cgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSAqdGhpcyoga2V5d29yZCBpbiB0aGUgY2FsbGluZyBjb21wb25lbnQuXG4gICAgICogU2VlIG11bHRpIGlucHV0IGV4YW1wbGVzIGZvciBkZXRhaWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUZuID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHN0cjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5fcHJvdmlkZXJzPy5zaXplID09PSAwID8gdGhpcy5fbXVsdGlJbnB1dENvbmZpZy5wcm92aWRlcnMgOiB0aGlzLl9wcm92aWRlcnM7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYm90aCBwcmVmZXIgZGF0YVNvdXJjZVxuICAgICAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSAmJiB0aGlzLmVudGl0eUNsYXNzICYmIHByb3ZpZGVycz8uaGFzKHRoaXMuZW50aXR5Q2xhc3MpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTXVsdGlJbnB1dERhdGFTb3VyY2UocHJvdmlkZXJzLmdldCh0aGlzLmVudGl0eUNsYXNzKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRva2VuaXplci5fc2hvd092ZXJmbG93UG9wb3ZlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0byBlbWl0IGNoYW5nZSBldmVudCAqL1xuICAgIGVtaXRDaGFuZ2VFdmVudDxUPihtb2RlbFZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpSW5wdXRTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCBtb2RlbFZhbHVlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jaGVja2JveFNlbGVjdGVkKHZhbHVlOiBhbnksIGV2ZW50OiBNb2RpZnlJdGVtRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGV2ZW50LnNvdXJjZS5fc2VsZWN0ZWQ7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHNlbGVjdHZhbHVlKSA9PiBlcXVhbChzZWxlY3R2YWx1ZSwgdmFsdWUpKTtcblxuICAgICAgICBpZiAoaXNTZWxlY3RlZCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFkZFRvQXJyYXkodmFsdWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZFRvQXJyYXkodmFsdWU6IGFueSwgZm9jdXNPbklucHV0ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWQuZmluZEluZGV4KChzZWxlY3R2YWx1ZSkgPT4gZXF1YWwoc2VsZWN0dmFsdWUsIHZhbHVlKSk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSAmJiBmb2N1c09uSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgaWYgKGZvY3VzT25JbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KHZhbHVlID8gdGhpcy5zZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRPbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoIXRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFkZE9uQnV0dG9uQ2xpY2tlZC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzLmFkZE9uQnV0dG9uQ2xpY2tGbikpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkT25CdXR0b25DbGlja0ZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSW5wdXRHcm91cENsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiAhdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtb3JlQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZWxldGVUb2tlbihzZWxlY3RlZFZhbHVlOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci50b2tlbkxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIudG9rZW5MaXN0LmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnRva2VuV3JhcHBlckVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9PT0gc2VsZWN0ZWRWYWx1ZS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZSh0aGlzLnNlbGVjdGVkLmluZGV4T2Yoc2VsZWN0ZWRWYWx1ZSksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVUb2tlbih0b2tlbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuc3BsaWNlKHRoaXMuc2VsZWN0ZWQuaW5kZXhPZih0b2tlbiksIDEpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0b2tlbiA/IHRoaXMuc2VsZWN0ZWQgOiBudWxsKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlU2VsZWN0ZWRUb2tlbnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRE9XTl9BUlJPVywgVVBfQVJST1ddKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50Ll9zZXRDdXJyZW50QWN0aXZlSXRlbUluZGV4KDApO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdFRlbXBsYXRlREQubGlzdEl0ZW1zLmZpcnN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoIXRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlZmluZSBpcyBzZWxlY3RlZCBpdGVtIHNlbGVjdGVkICovXG4gICAgaXNTZWxlY3RlZE9wdGlvbkl0ZW0oc2VsZWN0ZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmxvb2t1cEtleSAmJiB0aGlzLmxvb2t1cFZhbHVlKHRoaXMuc2VsZWN0ZWQpID09PSB0aGlzLmxvb2t1cFZhbHVlKHNlbGVjdGVkSXRlbSkpIHx8XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSh0aGlzLnNlbGVjdGVkKSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUoc2VsZWN0ZWRJdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0byBzZXQgc2VsZWN0ZWQgaXRlbSAqL1xuICAgIHNlbGVjdE9wdGlvbkl0ZW0oaXRlbTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZShpdGVtKTtcbiAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHNldCBhcyBzZWxlY3RlZCAqL1xuICAgIHNldEFzU2VsZWN0ZWQoaXRlbTogTXVsdGlJbnB1dE9wdGlvbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gaXRlbTtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fbWFya0xpc3RJdGVtc0FzU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWF0aG9kIGZvciBtYXJraW5nIGl0ZW1zIGluIGRyb3Bkb3duIGFzIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIF9tYXJrTGlzdEl0ZW1zQXNTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zPy5mb3JFYWNoKChsaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9ICEhdGhpcy5fc2VsZWN0ZWQuZmluZCgodmFsdWUpID0+IGVxdWFsKHZhbHVlLnZhbHVlLCBsaXN0SXRlbS52YWx1ZSkpO1xuICAgICAgICAgICAgbGlzdEl0ZW0uc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uQXV0b0NvbXBsZXRlKGV2ZW50OiBBdXRvQ29tcGxldGVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWV2ZW50LmZvcmNlQ2xvc2UgfHwgIXRoaXMuX3N1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbaXRlbV0gPSB0aGlzLmlzR3JvdXAgPyB0aGlzLl9zdWdnZXN0aW9uc1swXT8uY2hpbGRyZW4gfHwgW10gOiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5sYWJlbCA9PT0gZXZlbnQudGVybSkge1xuICAgICAgICAgICAgdGhpcy5hZGRUb0FycmF5KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25LZXlkb3duRW50ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSBkaWFsb2cgZGlzbWlzc2luZywgY2xvc2VzIHBvcG92ZXIgYW5kIHNldHMgYmFja3VwIGRhdGEuICovXG4gICAgX2RpYWxvZ0Rpc21pc3Moc2VsZWN0ZWQ6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSBkaWFsb2cgYXBwcm92YWwsIGNsb3NlcyBwb3BvdmVyIGFuZCBwcm9wYWdhdGVzIGRhdGEgY2hhbmdlcy4gKi9cbiAgICBfZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGlmIG5vdCBzZWxlY3RlZCB1cGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZShtb2RlbFZhbHVlOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcHRpb25JdGVtKG1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRPcHRpb25JdGVtKHRoaXMuaW5wdXRUZXh0KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbChvcHRpb25JdGVtID8gb3B0aW9uSXRlbS52YWx1ZSA6IHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0ZXh0OiBzdHJpbmcpOiBNdWx0aUlucHV0T3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSB0ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9uc1xuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0OiBNdWx0aUlucHV0T3B0aW9uW10sIGl0ZW06IE11bHRpSW5wdXRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuICYmIHJlc3VsdC5wdXNoKC4uLml0ZW0uY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubGFiZWwgPT09IHRleHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFVwZGF0ZSBtb2RlbCAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gc2V0dGluZyB2YWx1ZSwgaXQgd2lsbCBjYWxsIHNldFZhbHVlKClcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1VTFRJSU5QVVRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY0NvbXBvbmVudChcbiAgICAgICAgICAgIHsgbGlzdFRlbXBsYXRlOiB0aGlzLmxpc3RUZW1wbGF0ZSwgY29udHJvbFRlbXBsYXRlOiB0aGlzLmNvbnRyb2xUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgUGxhdGZvcm1NdWx0aUlucHV0TW9iaWxlQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZjogdGhpcy5fdmlld0NvbnRhaW5lclJlZlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgaW5qZWN0b3IgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1tdWx0aS1pbnB1dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGRlc2t0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmRwLW11bHRpLWlucHV0X19saXN0LWNvbnRhaW5lclwiXG4gICAgICAgIFtpc09wZW5dPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cInRyaWdnZXJzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgW21heFdpZHRoXT1cIighYXV0b1Jlc2l6ZSAmJiBtaW5XaWR0aCkgfHwgMFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlPlxuICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgIGdseXBoPVwidmFsdWUtaGVscFwiXG4gICAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChrZXlkb3duKT1cInJlbW92ZVNlbGVjdGVkVG9rZW5zKCRldmVudClcIlxuICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cImFkZE9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJvbklucHV0R3JvdXBDbGlja2VkKClcIlxuICAgICAgICBbZ2x5cGhBcmlhTGFiZWxdPVwiZ2x5cGhBcmlhTGFiZWxcIlxuICAgID5cbiAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwidG9rZW5IaWRkZW5JZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmRwLW11bHRpLWlucHV0X19pbnZpc2libGUtdGV4dFwiXG4gICAgICAgICAgICA+Q29udGFpbnMge3sgc2VsZWN0ZWQubGVuZ3RoIHx8ICdubycgfX0gdG9rZW48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8ZmQtdG9rZW5pemVyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt0b2tlbml6ZXJGb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2NvbXBhY3RDb2xsYXBzZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICN0b2tlbml6ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtbXVsdGktaW5wdXQtdG9rZW5pemVyLWN1c3RvbVwiXG4gICAgICAgICAgICAobW9yZUNsaWNrZWRFdmVudCk9XCJtb3JlQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgICAgZmRNdWx0aUFubm91bmNlclxuICAgICAgICAgICAgW211bHRpQW5ub3VuY2VyT3B0aW9uc109XCJpc09wZW4gPyBfc3VnZ2VzdGlvbnMgOiBbXVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVUb2tlbih0b2tlbilcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b2tlbiBvZiBzZWxlY3RlZDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwic2VsZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0b2tlbi5sYWJlbCB8IGRpc3BsYXlGblBpcGUgOiBkaXNwbGF5Rm4gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2ZkLXRva2VuPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjc2VhcmNoSW5wdXRFbGVtZW50XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtbXVsdGktaW5wdXQtdG9rZW5pemVyLWlucHV0IGZkLXRva2VuaXplcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIGZkcC1hdXRvLWNvbXBsZXRlXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAob25Db21wbGV0ZSk9XCJfb25BdXRvQ29tcGxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX29uS2V5ZG93bkVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hUZXJtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVG91Y2hlZCgpOyB0b2tlbml6ZXIuX3Nob3dBbGxUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwidG9rZW5pemVyLl9oaWRlVG9rZW5zKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbCB8fCAoJ2NvcmVNdWx0aUlucHV0Lm11bHRpSW5wdXRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwidG9rZW5IaWRkZW5JZFwiXG4gICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJNdWx0aSBWYWx1ZSBJbnB1dFwiXG4gICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgW2VuYWJsZWRdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZmQtdG9rZW5pemVyPlxuICAgIDwvZmQtaW5wdXQtZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNsaXN0VGVtcGxhdGU+XG4gICAgPGZkcC1saXN0XG4gICAgICAgIFtub0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgI2xpc3RUZW1wbGF0ZUREXG4gICAgICAgIFtoYXNCeUxpbmVdPVwiaGFzQnlMaW5lXCJcbiAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgICAgICpuZ0lmPVwiX3N1Z2dlc3Rpb25zICYmIF9zdWdnZXN0aW9ucy5sZW5ndGhcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICAgIFtpbnRlcmNlcHRUYWJLZXldPVwiZmFsc2VcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxpc3RJdGVtIG9mIF9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImxpc3RJdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwibGlzdEl0ZW0uZGVzY3JpcHRpb24gfHwgJydcIlxuICAgICAgICAgICAgICAgIFthdmF0YXJdPVwibGlzdEl0ZW0uYXZhdGFyU3JjXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibGlzdEl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VsZWN0aW9uTW9kZSAhPT0gJ211bHRpJyAmJiBhZGRUb0FycmF5KGxpc3RJdGVtLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1DaGVja2JveFNlbGVjdGVkKT1cIl9jaGVja2JveFNlbGVjdGVkKGxpc3RJdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJkZWxldGVUb2tlbihsaXN0SXRlbSlcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIF9zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBJdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC1saXN0LWdyb3VwLWhlYWRlciBbZ3JvdXBIZWFkZXJUaXRsZV09XCJncm91cC5sYWJlbFwiPjwvZmRwLWxpc3QtZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBsYWJlbDogZ3JvdXAubGFiZWwgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGZkcC1zdGFuZGFyZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgZ3JvdXAuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uSXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25JdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJhZGRUb0FycmF5KG9wdGlvbkl0ZW0sIHRydWUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGVja2JveFNlbGVjdGVkKT1cImFkZFRvQXJyYXkob3B0aW9uSXRlbSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwiZGVsZXRlVG9rZW4ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmRwLWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENB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d0JBQ3BCLGVBQWU7d0JBQ2YsdUJBQXVCO3FCQUMxQjs7MEJBdUhJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxRQUFROzswQkFFcEIsUUFBUTs7MEJBQUksSUFBSTs7MEJBRWhCLFFBQVE7OzBCQVFSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs7MEJBSWpDLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBRXBELFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO2lGQWxJakUsYUFBYTtzQkFEWixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxhQUFhO2dCQVFwQixRQUFRO3NCQURYLEtBQUs7Z0JBWU4sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFnQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWVOLGVBQWU7c0JBRGQsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLRyxlQUFlO3NCQUR2QixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSzVCLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjO2dCQUtSLFVBQVU7c0JBRDFCLFlBQVk7dUJBQUMsWUFBWTtnQkFrRDFCLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IERPV05fQVJST1csIEVTQ0FQRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Rm5QaXBlLCBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCwgVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbml6ZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b2tlbic7XG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIE1vZGlmeUl0ZW1FdmVudCxcbiAgICBQbGF0Zm9ybUxpc3RNb2R1bGUsXG4gICAgU2VsZWN0aW9uVHlwZSxcbiAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vbGlzdCc7XG5pbXBvcnQge1xuICAgIERBVEFfUFJPVklERVJTLFxuICAgIERhdGFQcm92aWRlcixcbiAgICBNdWx0aUlucHV0RGF0YVNvdXJjZSxcbiAgICBNdWx0aUlucHV0T3B0aW9uLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICBpc0Z1bmN0aW9uXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcblxuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgTXVsdGlBbm5vdW5jZXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbXVsdGktY29tYm9ib3gnO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQsIFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVEaXJlY3RpdmUsIEF1dG9Db21wbGV0ZUV2ZW50IH0gZnJvbSAnLi4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZU11bHRpSW5wdXQgfSBmcm9tICcuL2Jhc2UtbXVsdGktaW5wdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm1NdWx0aUlucHV0TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1pbnB1dC1tb2JpbGUvbXVsdGktaW5wdXQtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1pbnB1dC5jb25maWcnO1xuaW1wb3J0IHsgTVVMVElJTlBVVF9DT01QT05FTlQgfSBmcm9tICcuL211bHRpLWlucHV0LmludGVyZmFjZSc7XG5cbmxldCB1bmlxdWVIaWRkZW5MYWJlbCA9IDA7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIE11bHRpIElucHV0IHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIE11bHRpIElucHV0IGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCxcbiAgICAgICAgcHVibGljIHBheWxvYWQ6IGFueSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtXG4gICAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tdWx0aS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIElucHV0R3JvdXBNb2R1bGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRva2VuQ29tcG9uZW50LFxuICAgICAgICBUb2tlbml6ZXJDb21wb25lbnQsXG4gICAgICAgIFRva2VuaXplcklucHV0RGlyZWN0aXZlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBBdXRvQ29tcGxldGVEaXJlY3RpdmUsXG4gICAgICAgIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgUGxhdGZvcm1MaXN0TW9kdWxlLFxuICAgICAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBEaXNwbGF5Rm5QaXBlLFxuICAgICAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNdWx0aUFubm91bmNlckRpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1NdWx0aUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZU11bHRpSW5wdXQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHRva2VuQ291bnRIaWRkZW5MYWJlbCA9IGBmZHAtbXVsdGktaW5wdXQtdG9rZW4tY291bnQtaWQtJHt1bmlxdWVIaWRkZW5MYWJlbCsrfWA7XG5cbiAgICAvKiogdG9rZW4gIGNvdW50IGhpZGRlbiBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5IaWRkZW5JZDogc3RyaW5nID0gdGhpcy50b2tlbkNvdW50SGlkZGVuTGFiZWw7XG5cbiAgICAvKiogdHlwZSBSZXByZXNlbnQgdGhlIHR5cGUgb2YgaW5wdXQgdXNlZCBmb3IgdGhlIG11bHRpIElucHV0ICovXG4gICAgQElucHV0KClcbiAgICB0eXBlOiBJbnB1dFR5cGU7XG5cbiAgICAvKiogYm9vbGVhbiB0eXBlIHJlcHJlc2VudHMgdGhlIGZvY3VzIHNldCBmb3IgdGhlIHJlc3BlY3RpdmUgbXVsdGkgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGhBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RUZW1wbGF0ZUREOiBMaXN0Q29tcG9uZW50PE11bHRpSW5wdXRPcHRpb24+O1xuXG4gICAgLyoqIFNlbGVjdGVkIHZhbHVlcyBmcm9tIHRoZSBsaXN0IGl0ZW1zLiAqL1xuICAgIF9zZWxlY3RlZDogYW55W10gPSBbXTtcblxuICAgIC8qKiBTZWxlY3RlZCBpdGVtcyBvZiB0aGUgbXVsdGkgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZTogYW55W10pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZCgpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uVHlwZSA9ICdub25lJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGluIGJ5bGluZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGFzQnlMaW5lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkVmFsdWU/OiBNdWx0aUlucHV0T3B0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNHcm91cCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cEtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpIGlucHV0IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgb3B0aW9ucyBwb3BvdmVyLlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tYm9ib3ggc2hvdWxkIGNsb3NlLCB3aGVuIGEgY2xpY2sgaXMgcGVyZm9ybWVkIG91dHNpZGUgaXRzIGJvdW5kYXJpZXMuIFRydWUgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBhZGQtb24gYnV0dG9uIGNsaWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBhZGRPbkJ1dHRvbkNsaWNrRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVG9rZW5pemVyQ29tcG9uZW50KVxuICAgIHRva2VuaXplcjogVG9rZW5pemVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250cm9sVGVtcGxhdGUnKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGlzdFRlbXBsYXRlJylcbiAgICBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQmFzZUxpc3RJdGVtKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RJdGVtczogUXVlcnlMaXN0PEJhc2VMaXN0SXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIHJlYWRvbmx5IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQV9QUk9WSURFUlMpIHByaXZhdGUgX3Byb3ZpZGVyczogTWFwPHN0cmluZywgRGF0YVByb3ZpZGVyPGFueT4+LFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBfbXVsdGlJbnB1dENvbmZpZzogTXVsdGlJbnB1dENvbmZpZyxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBjZCxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICBuZ0NvbnRyb2wsXG4gICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgbmdGb3JtLFxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgX211bHRpSW5wdXRDb25maWcsXG4gICAgICAgICAgICBmb3JtRmllbGQsXG4gICAgICAgICAgICBmb3JtQ29udHJvbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBEaXNwbGF5IGZ1bmN0aW9uLiBBY2NlcHRzIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZVxuICAgICAqIGl0ZW1zIHBhc3NlZCB0byBkcm9wZG93blZhbHVlcyBhcyBhcmd1bWVudCwgYW5kIG91dHB1dHMgYSBzdHJpbmcuXG4gICAgICogQW4gYXJyb3cgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSAqdGhpcyoga2V5d29yZCBpbiB0aGUgY2FsbGluZyBjb21wb25lbnQuXG4gICAgICogU2VlIG11bHRpIGlucHV0IGV4YW1wbGVzIGZvciBkZXRhaWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUZuID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHN0cjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5fcHJvdmlkZXJzPy5zaXplID09PSAwID8gdGhpcy5fbXVsdGlJbnB1dENvbmZpZy5wcm92aWRlcnMgOiB0aGlzLl9wcm92aWRlcnM7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYm90aCBwcmVmZXIgZGF0YVNvdXJjZVxuICAgICAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSAmJiB0aGlzLmVudGl0eUNsYXNzICYmIHByb3ZpZGVycz8uaGFzKHRoaXMuZW50aXR5Q2xhc3MpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTXVsdGlJbnB1dERhdGFTb3VyY2UocHJvdmlkZXJzLmdldCh0aGlzLmVudGl0eUNsYXNzKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRva2VuaXplci5fc2hvd092ZXJmbG93UG9wb3ZlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0byBlbWl0IGNoYW5nZSBldmVudCAqL1xuICAgIGVtaXRDaGFuZ2VFdmVudDxUPihtb2RlbFZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpSW5wdXRTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCBtb2RlbFZhbHVlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jaGVja2JveFNlbGVjdGVkKHZhbHVlOiBhbnksIGV2ZW50OiBNb2RpZnlJdGVtRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGV2ZW50LnNvdXJjZS5fc2VsZWN0ZWQ7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHNlbGVjdHZhbHVlKSA9PiBlcXVhbChzZWxlY3R2YWx1ZSwgdmFsdWUpKTtcblxuICAgICAgICBpZiAoaXNTZWxlY3RlZCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFkZFRvQXJyYXkodmFsdWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZFRvQXJyYXkodmFsdWU6IGFueSwgZm9jdXNPbklucHV0ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWQuZmluZEluZGV4KChzZWxlY3R2YWx1ZSkgPT4gZXF1YWwoc2VsZWN0dmFsdWUsIHZhbHVlKSk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSAmJiBmb2N1c09uSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgaWYgKGZvY3VzT25JbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KHZhbHVlID8gdGhpcy5zZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRPbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoIXRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFkZE9uQnV0dG9uQ2xpY2tlZC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzLmFkZE9uQnV0dG9uQ2xpY2tGbikpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkT25CdXR0b25DbGlja0ZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSW5wdXRHcm91cENsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiAhdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtb3JlQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZWxldGVUb2tlbihzZWxlY3RlZFZhbHVlOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci50b2tlbkxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIudG9rZW5MaXN0LmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnRva2VuV3JhcHBlckVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9PT0gc2VsZWN0ZWRWYWx1ZS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZSh0aGlzLnNlbGVjdGVkLmluZGV4T2Yoc2VsZWN0ZWRWYWx1ZSksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVUb2tlbih0b2tlbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuc3BsaWNlKHRoaXMuc2VsZWN0ZWQuaW5kZXhPZih0b2tlbiksIDEpO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0b2tlbiA/IHRoaXMuc2VsZWN0ZWQgOiBudWxsKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlU2VsZWN0ZWRUb2tlbnMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRE9XTl9BUlJPVywgVVBfQVJST1ddKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50Ll9zZXRDdXJyZW50QWN0aXZlSXRlbUluZGV4KDApO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdFRlbXBsYXRlREQubGlzdEl0ZW1zLmZpcnN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoIXRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlZmluZSBpcyBzZWxlY3RlZCBpdGVtIHNlbGVjdGVkICovXG4gICAgaXNTZWxlY3RlZE9wdGlvbkl0ZW0oc2VsZWN0ZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmxvb2t1cEtleSAmJiB0aGlzLmxvb2t1cFZhbHVlKHRoaXMuc2VsZWN0ZWQpID09PSB0aGlzLmxvb2t1cFZhbHVlKHNlbGVjdGVkSXRlbSkpIHx8XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSh0aGlzLnNlbGVjdGVkKSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUoc2VsZWN0ZWRJdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0byBzZXQgc2VsZWN0ZWQgaXRlbSAqL1xuICAgIHNlbGVjdE9wdGlvbkl0ZW0oaXRlbTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZShpdGVtKTtcbiAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHNldCBhcyBzZWxlY3RlZCAqL1xuICAgIHNldEFzU2VsZWN0ZWQoaXRlbTogTXVsdGlJbnB1dE9wdGlvbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gaXRlbTtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fbWFya0xpc3RJdGVtc0FzU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWF0aG9kIGZvciBtYXJraW5nIGl0ZW1zIGluIGRyb3Bkb3duIGFzIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIF9tYXJrTGlzdEl0ZW1zQXNTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdEl0ZW1zPy5mb3JFYWNoKChsaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9ICEhdGhpcy5fc2VsZWN0ZWQuZmluZCgodmFsdWUpID0+IGVxdWFsKHZhbHVlLnZhbHVlLCBsaXN0SXRlbS52YWx1ZSkpO1xuICAgICAgICAgICAgbGlzdEl0ZW0uc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uQXV0b0NvbXBsZXRlKGV2ZW50OiBBdXRvQ29tcGxldGVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWV2ZW50LmZvcmNlQ2xvc2UgfHwgIXRoaXMuX3N1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbaXRlbV0gPSB0aGlzLmlzR3JvdXAgPyB0aGlzLl9zdWdnZXN0aW9uc1swXT8uY2hpbGRyZW4gfHwgW10gOiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5sYWJlbCA9PT0gZXZlbnQudGVybSkge1xuICAgICAgICAgICAgdGhpcy5hZGRUb0FycmF5KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25LZXlkb3duRW50ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSBkaWFsb2cgZGlzbWlzc2luZywgY2xvc2VzIHBvcG92ZXIgYW5kIHNldHMgYmFja3VwIGRhdGEuICovXG4gICAgX2RpYWxvZ0Rpc21pc3Moc2VsZWN0ZWQ6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSBkaWFsb2cgYXBwcm92YWwsIGNsb3NlcyBwb3BvdmVyIGFuZCBwcm9wYWdhdGVzIGRhdGEgY2hhbmdlcy4gKi9cbiAgICBfZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGlmIG5vdCBzZWxlY3RlZCB1cGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZShtb2RlbFZhbHVlOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcHRpb25JdGVtKG1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRPcHRpb25JdGVtKHRoaXMuaW5wdXRUZXh0KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbChvcHRpb25JdGVtID8gb3B0aW9uSXRlbS52YWx1ZSA6IHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0ZXh0OiBzdHJpbmcpOiBNdWx0aUlucHV0T3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSB0ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9uc1xuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0OiBNdWx0aUlucHV0T3B0aW9uW10sIGl0ZW06IE11bHRpSW5wdXRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuICYmIHJlc3VsdC5wdXNoKC4uLml0ZW0uY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubGFiZWwgPT09IHRleHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFVwZGF0ZSBtb2RlbCAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gc2V0dGluZyB2YWx1ZSwgaXQgd2lsbCBjYWxsIHNldFZhbHVlKClcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1VTFRJSU5QVVRfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY0NvbXBvbmVudChcbiAgICAgICAgICAgIHsgbGlzdFRlbXBsYXRlOiB0aGlzLmxpc3RUZW1wbGF0ZSwgY29udHJvbFRlbXBsYXRlOiB0aGlzLmNvbnRyb2xUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgUGxhdGZvcm1NdWx0aUlucHV0TW9iaWxlQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZjogdGhpcy5fdmlld0NvbnRhaW5lclJlZlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgaW5qZWN0b3IgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1tdWx0aS1pbnB1dFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGRlc2t0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmRwLW11bHRpLWlucHV0X19saXN0LWNvbnRhaW5lclwiXG4gICAgICAgIFtpc09wZW5dPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cInRyaWdnZXJzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgW21heFdpZHRoXT1cIighYXV0b1Jlc2l6ZSAmJiBtaW5XaWR0aCkgfHwgMFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlPlxuICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImJ1dHRvbkZvY3VzYWJsZVwiXG4gICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgIGdseXBoPVwidmFsdWUtaGVscFwiXG4gICAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChrZXlkb3duKT1cInJlbW92ZVNlbGVjdGVkVG9rZW5zKCRldmVudClcIlxuICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cImFkZE9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJvbklucHV0R3JvdXBDbGlja2VkKClcIlxuICAgICAgICBbZ2x5cGhBcmlhTGFiZWxdPVwiZ2x5cGhBcmlhTGFiZWxcIlxuICAgID5cbiAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwidG9rZW5IaWRkZW5JZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmRwLW11bHRpLWlucHV0X19pbnZpc2libGUtdGV4dFwiXG4gICAgICAgICAgICA+Q29udGFpbnMge3sgc2VsZWN0ZWQubGVuZ3RoIHx8ICdubycgfX0gdG9rZW48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8ZmQtdG9rZW5pemVyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt0b2tlbml6ZXJGb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2NvbXBhY3RDb2xsYXBzZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICN0b2tlbml6ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtbXVsdGktaW5wdXQtdG9rZW5pemVyLWN1c3RvbVwiXG4gICAgICAgICAgICAobW9yZUNsaWNrZWRFdmVudCk9XCJtb3JlQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgICAgZmRNdWx0aUFubm91bmNlclxuICAgICAgICAgICAgW211bHRpQW5ub3VuY2VyT3B0aW9uc109XCJpc09wZW4gPyBfc3VnZ2VzdGlvbnMgOiBbXVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVUb2tlbih0b2tlbilcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b2tlbiBvZiBzZWxlY3RlZDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwic2VsZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0b2tlbi5sYWJlbCB8IGRpc3BsYXlGblBpcGUgOiBkaXNwbGF5Rm4gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2ZkLXRva2VuPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjc2VhcmNoSW5wdXRFbGVtZW50XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtbXVsdGktaW5wdXQtdG9rZW5pemVyLWlucHV0IGZkLXRva2VuaXplcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIGZkcC1hdXRvLWNvbXBsZXRlXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAob25Db21wbGV0ZSk9XCJfb25BdXRvQ29tcGxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX29uS2V5ZG93bkVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hUZXJtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVG91Y2hlZCgpOyB0b2tlbml6ZXIuX3Nob3dBbGxUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwidG9rZW5pemVyLl9oaWRlVG9rZW5zKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbCB8fCAoJ2NvcmVNdWx0aUlucHV0Lm11bHRpSW5wdXRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwidG9rZW5IaWRkZW5JZFwiXG4gICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJNdWx0aSBWYWx1ZSBJbnB1dFwiXG4gICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgW2VuYWJsZWRdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZmQtdG9rZW5pemVyPlxuICAgIDwvZmQtaW5wdXQtZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNsaXN0VGVtcGxhdGU+XG4gICAgPGZkcC1saXN0XG4gICAgICAgIFtub0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgI2xpc3RUZW1wbGF0ZUREXG4gICAgICAgIFtoYXNCeUxpbmVdPVwiaGFzQnlMaW5lXCJcbiAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgICAgICpuZ0lmPVwiX3N1Z2dlc3Rpb25zICYmIF9zdWdnZXN0aW9ucy5sZW5ndGhcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICAgIFtpbnRlcmNlcHRUYWJLZXldPVwiZmFsc2VcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxpc3RJdGVtIG9mIF9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImxpc3RJdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwibGlzdEl0ZW0uZGVzY3JpcHRpb24gfHwgJydcIlxuICAgICAgICAgICAgICAgIFthdmF0YXJdPVwibGlzdEl0ZW0uYXZhdGFyU3JjXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibGlzdEl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VsZWN0aW9uTW9kZSAhPT0gJ211bHRpJyAmJiBhZGRUb0FycmF5KGxpc3RJdGVtLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1DaGVja2JveFNlbGVjdGVkKT1cIl9jaGVja2JveFNlbGVjdGVkKGxpc3RJdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJkZWxldGVUb2tlbihsaXN0SXRlbSlcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIF9zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBJdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC1saXN0LWdyb3VwLWhlYWRlciBbZ3JvdXBIZWFkZXJUaXRsZV09XCJncm91cC5sYWJlbFwiPjwvZmRwLWxpc3QtZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBsYWJlbDogZ3JvdXAubGFiZWwgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGZkcC1zdGFuZGFyZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgZ3JvdXAuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uSXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25JdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJhZGRUb0FycmF5KG9wdGlvbkl0ZW0sIHRydWUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW1DaGVja2JveFNlbGVjdGVkKT1cImFkZFRvQXJyYXkob3B0aW9uSXRlbSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwiZGVsZXRlVG9rZW4ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmRwLWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -277,7 +277,7 @@ export class TextAreaComponent extends BaseInput {
|
|
|
277
277
|
useExisting: TextAreaComponent,
|
|
278
278
|
multi: true
|
|
279
279
|
}
|
|
280
|
-
], viewQueries: [{ propertyName: "_textareaCounter", first: true, predicate: ["counter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<textarea\n #inputElementRef\n fd-form-control\n [disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [attr.rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [attr.cols]=\"cols\"\n [attr.wrap]=\"wrapType\"\n [attr.maxlength]=\"!showExceededText ? maxLength : null\"\n [attr.readonly]=\"readonly ? true : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-template>\n</div>\n", styles: [".fd-textarea-counter{display:inline-block;width:100%}\n"], dependencies: [{ kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
280
|
+
], viewQueries: [{ propertyName: "_textareaCounter", first: true, predicate: ["counter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<textarea\n #inputElementRef\n fd-form-control\n [disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [attr.rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [attr.cols]=\"cols\"\n [attr.wrap]=\"wrapType\"\n [attr.maxlength]=\"!showExceededText ? maxLength : null\"\n [attr.readonly]=\"readonly ? true : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-template>\n</div>\n", styles: [".fd-textarea-counter{display:inline-block;width:100%}\n"], dependencies: [{ kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
281
281
|
}
|
|
282
282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
283
283
|
type: Component,
|
|
@@ -343,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
343
343
|
type: HostListener,
|
|
344
344
|
args: ['keyup', ['$event']]
|
|
345
345
|
}] } });
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBRXBELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBSWpEOzs7R0FHRztBQWlCSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQXVENUM7O09BRUc7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFVO1FBQ2hCLElBQUksS0FBSyxFQUFFO1lBQ1AsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0gsc0dBQXNHO1lBQ3RHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsaUNBQWlDO1lBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQThCRDs7O09BR0c7SUFDSCxJQUFJLG9CQUFvQjtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQzdELENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQ0ksRUFBcUIsRUFDckIsVUFBc0IsRUFDRixTQUFvQixFQUNoQixnQkFBa0MsRUFDbEMsTUFBYyxFQUNpQixTQUE0QixFQUNwQixXQUFxQyxFQUMxRixlQUErQjtRQUV6QyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUZ6RSxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUF0RzdDOztXQUVHO1FBRUgsYUFBUSxHQUFhLE1BQU0sQ0FBQztRQWdCNUI7Ozs7V0FJRztRQUVILHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6Qjs7V0FFRztRQUVILFlBQU8sR0FBRyxLQUFLLENBQUM7UUF3QmhCLGNBQWM7UUFDZCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixxQ0FBcUM7UUFDckMsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLCtHQUErRztRQUMvRyw2QkFBd0IsR0FBRyxXQUFXLENBQUM7UUFFdkMsNkRBQTZEO1FBQzdELHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixjQUFjO1FBQ2QsNERBQTREO1FBQ3BELHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUUvQixjQUFjO1FBQ04sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQiwyQ0FBMkM7UUFDMUIsa0JBQWEsR0FBRyxXQUFXLENBQUM7UUFDN0MsMkNBQTJDO1FBQzFCLGVBQVUsR0FBRyxRQUFRLENBQUM7UUEyQm5DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxRQUFRLG1CQUFtQixDQUFDLENBQUM7U0FDM0U7UUFDRCx3R0FBd0c7UUFDeEcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7UUFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztTQUMxQjtRQUVELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLDRFQUE0RTtRQUM1RSx1R0FBdUc7UUFDdkcsK0NBQStDO1FBQy9DLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyw0REFBNEQ7WUFDckYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsVUFBVSxDQUFDLEtBQVU7UUFDakIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsMERBQTBEO0lBQzFELHlCQUF5QjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRWxELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixvRUFBb0U7WUFDcEUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLHlCQUF5QjtRQUNyQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2xGO1lBRUQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3JFO2FBQU07WUFDSCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7U0FDckU7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQseURBQXlEO0lBQ3pELHNCQUFzQjtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixxREFBcUQ7UUFDckQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQzdDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDM0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUUsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsSUFBSSxtQkFBbUIsSUFBSSxTQUFTLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7aUJBQ2pFO3FCQUFNO29CQUNILElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztxQkFDbEQ7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUM7cUJBQ3ZEO2lCQUNKO2FBQ0o7aUJBQU07Z0JBQ0gsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2FBQ2pFO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxxQkFBcUI7UUFDakIsMENBQTBDO1FBQzFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTlELHVCQUF1QjtZQUN2QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztJQUMzRCxDQUFDO0lBRUQ7O01BRUU7SUFFRixlQUFlLENBQUMsS0FBb0I7UUFDaEMscUZBQXFGO1FBQ3JGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQywyQ0FBMkM7U0FDN0U7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFO1lBQzdFLHVHQUF1RztZQUN2RyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUM1QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUMxQywyQkFBMkI7b0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDckQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLHlEQUF5RDtpQkFDM0Y7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDLHdEQUF3RDtZQUNyRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUVoRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFDNUUsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0lBQzNDLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsaUJBQWlCO1FBQ3JCLElBQUksYUFBYSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVELHVFQUF1RTtJQUMvRCx1QkFBdUI7UUFDM0IsMENBQTBDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuRSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsc0NBQXNDO0lBQzlCLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsR0FBRyxJQUFJLENBQUM7YUFDcEc7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDckQ7U0FDSjthQUFNO1lBQ0gsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixpREFBaUQ7YUFDcEQ7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDbEQ7U0FDSjtJQUNMLENBQUM7OEdBL1VRLGlCQUFpQix3UEF5SGtCLGFBQWEseURBQ2IscUJBQXFCO2tHQTFIeEQsaUJBQWlCLHNWQVZmO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLDhKQ2pETCwrOURBcURBLGlIREZjLG9CQUFvQixnSUFBRSxXQUFXLCttQkFBRSxJQUFJLHdGQUFFLGVBQWU7OzJGQUV6RCxpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNJLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0osY0FDVyxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQzs7MEJBd0g5RCxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjt5RUFySGpFLE1BQU07c0JBREwsS0FBSztnQkFRTixlQUFlO3NCQURkLEtBQUs7Z0JBUU4sSUFBSTtzQkFESCxLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sU0FBUztzQkFEUixLQUFLO2dCQVNOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLE9BQU87c0JBRE4sS0FBSztnQkFPRixLQUFLO3NCQURSLEtBQUs7Z0JBaUJOLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLFNBQVM7Z0JBbUxwQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBLZXlVdGlsLCBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1Db250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IEJhc2VJbnB1dCwgUGxhdGZvcm1Gb3JtRmllbGQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFRleHRBcmVhQ29uZmlnIH0gZnJvbSAnLi90ZXh0LWFyZWEuY29uZmlnJztcblxuY29uc3QgVkFMSURfV1JBUF9UWVBFUyA9IFsnaGFyZCcsICdzb2Z0JywgJ29mZiddO1xuXG5leHBvcnQgdHlwZSBXcmFwVHlwZSA9ICdoYXJkJyB8ICdzb2Z0JyB8ICdvZmYnO1xuXG4vKipcbiAqIFRleHRhcmVhIGZpZWxkIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgY29tcGxpYW50IHdpdGggUGxhdGZvcm0ncyBGb3JtR3JvdXAvRm9ybUZpZWxkIGRlc2lnblxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtdGV4dGFyZWEnLFxuICAgIHRlbXBsYXRlVXJsOiAndGV4dC1hcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsndGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfRk9STV9GSUVMRF9DT05UUk9MLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRleHRBcmVhQ29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRm9ybUNvbnRyb2xDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBOZ0lmLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0IHRvIHdoaWNoIHRoZSB0ZXh0YXJlYSB3aWxsIGdyb3cgd2hlbiBgZ3Jvd2luZ2AgaXMgc2V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiByb3dzIHRoYXQgd2lsbCBiZSB2aXNpYmxlIHdoZW4gYGdyb3dpbmdgIGlzIHNldC5cbiAgICAgKiBJZiBib3RoIGBncm93aW5nTWF4TGluZXNgIGFuZCBgaGVpZ2h0YCBhcmUgcHJvdmlkZWQsIGBoZWlnaHRgIHZhbHVlIHRha2VzIHByZWNlZGVuY2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncm93aW5nTWF4TGluZXM6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dGFyZWEgYGNvbHNgIGF0dHJpYnV0ZSB3cmFwcGVkLSB0aGUgbnVtYmVyIG9mIGxldHRlcnMgdmlzaWJsZSBwZXIgbGluZS5cbiAgICAgKiBJZiB3aWR0aCBpcyBzZXQgdG8gYXV0bywgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHM6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0YXJlYSBgd3JhcGAgYXR0cmlidXRlIC0gY2FuIGJlIG9uZSBvZiB0aHJlZTogJ29mZicsICdoYXJkJyBvciAnc29mdCcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB3cmFwVHlwZTogV3JhcFR5cGUgPSAnc29mdCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyByZWFkb25seVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCB0byBlbnRlci5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIGBtYXhMZW5ndGhgIGhhcyBuYXRpdmUgdGV4dGFyZWEncyBiZWhhdmlvciBvZiBkaXNhbGxvd2luZyB0eXBpbmcgYmV5b25kIGBtYXhMZW5ndGhgLlxuICAgICAqIElmIGBzaG93RXhjZWVkZWRUZXh0YCBpcyB0cnVlLCB1c2VyIGlzIGFsbG93ZWQgdG8gdHlwZSBiZXlvbmQgYG1heExlbmd0aGAsIGJ1dCBlcnJvciBzdGF0ZXMgYW5kIGNvdW50ZXIgbWVzc2FnZXMgc2hvd2luZ1xuICAgICAqIHRoZSBleGNlZWRlZCBjb3VudCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY291bnRlciBtZXNzYWdlIHNob3VsZCBiZSBzaG93bi5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIG5vIHN0YXRlIGNoYW5nZXMgb3IgZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiBVc2VyIGlzIHNpbXBseSBub3QgYWxsb3dlZCB0byB0eXBlXG4gICAgICogYmV5b25kIHRoZSBgbWF4TGVuZ3RoYCBjaGFyYWN0ZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0V4Y2VlZGVkVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIHRleHRhcmVhIGNhbiBncm93LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3Jvd2luZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRleHRhcmVhJ3MgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiBjdXN0b20gdmFsdWUgbm90IHNldCwgd2Ugc2hvdWxkIHNldC9yZXNldCBjb3VudGVyIHRvIG1heGxlbmd0aCB2YWx1ZSB3aGVuIGl0IGJlY29tZXMgdW5kZWZpbmVkXG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5tYXhMZW5ndGggPyB0aGlzLm1heExlbmd0aCA6IDA7XG4gICAgICAgICAgICAvLyByZXNldCBzdGF0ZSBieSByZXNldHRpbmcgdmFsdWVcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb3VudGVyJylcbiAgICBfdGV4dGFyZWFDb3VudGVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gZXhjZXNzIGNoYXJhY3RlciBjb3VudCAqL1xuICAgIGV4Y2VlZGVkQ2hhckNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIGEgc3RyaW5nIHBsYWNlaG9sZGVyIHRoYXQgdG9nZ2xlcyBiZXR3ZWVuICdyZW1haW5pbmcnIGFuZCAnZXhjZXNzJyBmb3IgdGhlIHNlbGVjdCBJQ1UgZXhwcmVzc2lvbiAqL1xuICAgIGNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9ICdyZW1haW5pbmcnO1xuXG4gICAgLyoqIEBoaWRkZW4gZmxhZyB0byBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbml0aWFsIHZhbHVlIHNldCAqL1xuICAgIGlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLyoqIHRvIGtlZXAgdHJhY2sgb2YgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHRhcmVhICovXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFDaGFyQ291bnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1Bhc3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIGZvciBpMThuIGNvdW50ZXIgbWVzc2FnZSB0cmFuc2xhdGlvbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtYWluaW5nVGV4dCA9ICdyZW1haW5pbmcnO1xuICAgIC8qKiBmb3IgaTE4biBjb3VudGVyIG1lc3NhZ2UgdHJhbnNsYXRpb24gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2Vzc1RleHQgPSAnZXhjZXNzJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAc2VlIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbC5leHRyYUNvbnRlbnRIZWlnaHRQeFxuICAgICAqL1xuICAgIGdldCBleHRyYUNvbnRlbnRIZWlnaHRQeCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dGFyZWFDb3VudGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9zaG91bGRUcmFja1RleHRMaW1pdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoID4gMCAmJiAhdGhpcy5zaG93RXhjZWVkZWRUZXh0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBwcm90ZWN0ZWQgX3RleHRBcmVhQ29uZmlnOiBUZXh0QXJlYUNvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBUeXBlIHx8IFZBTElEX1dSQVBfVFlQRVMuaW5kZXhPZih0aGlzLndyYXBUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGV4dGFyZWEgd3JhcCB0eXBlICR7dGhpcy53cmFwVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIG5vdCBjdXN0b20gc2V0LCBzZXQgY291bnRlciB0byBtYXggbGVuZ3RoIHZhbHVlLCBlbHNlIGl0IGNhbGN1bGF0ZXMgcmVtYWluaW5nL2V4Y2VlZGVkIGNoYXJhY3RlcnMuXG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHNldCBtYXggaGVpZ2h0XG4gICAgICAgIHRoaXMuX3NldE1heEhlaWdodCgpO1xuXG4gICAgICAgIC8vIGRvbid0IHNldCBhbnkgZXJyb3Igc3RhdGUgaWYgd2UgYXJlIG5vdCBzaG93aW5nIGNvdW50ZXIgbWVzc2FnZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gdmFsdWUgaXMgY3VzdG9tIHNldChpbml0aWFsIHZhbHVlIGlzIHByZXNlbnQpLCB0aGUgaGVpZ2h0cyBkb24ndCBnZXRcbiAgICAgICAgLy8gc2V0IHRvIHNob3cgdGhlIGZ1bGwgdGV4dCBpbiB0aGUgbmdBZnRlclZpZXdJbml0IGltbWVkaWF0ZWx5LiB0aGVyZWZvcmUsIHdlIGNhbGwgYXV0b0dyb3dUZXh0QXJlYSBpblxuICAgICAgICAvLyBuZ0FmdGVyVmlld0NoZWNrZWQgYW5kIGRldGVjdCBjaGFuZ2VzIGFnYWluLlxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmlzVmFsdWVDdXN0b21TZXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b0dyb3dUZXh0QXJlYSgpOyAvLyBpZiBhcHBsaWNhYmxlLCBncm93IHRoZSB0ZXh0YXJlYSB3aGVuIHZhbHVlIGlzIGN1c3RvbSBzZXRcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3RleHRhcmVhOiBuZ0FmdGVyVmlld0NoZWNrZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiB3cml0ZSB2YWx1ZSBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSA/PyAnJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCd0ZXh0YXJlYTogd3JpdGVWYWx1ZScpO1xuICAgIH1cblxuICAgIC8qKiB1cGRhdGUgdGhlIGNvdW50ZXIgbWVzc2FnZSBhbmQgcmVsYXRlZCBpbnRlcmFjdGlvbnMgKi9cbiAgICB1cGRhdGVDb3VudGVySW50ZXJhY3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWU/Lmxlbmd0aCA/PyAwO1xuXG4gICAgICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgLy8gbmV3bHkgYWRkZWQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaXRlcmF0aW9uLCByZW1vdmUgaWYgaXNzdWUgZm91bmRcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVMZW5ndGhPbkN1c3RvbVNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIGlmIGV4Y2VlZGVkIG1heGxlbmd0aCB3aGVuIHNldCBhcyBhIHZhbHVlIGluIGNvZGUsIGhpZ2hsaWdodCB0aGUgZXhjZWVkZWQgdGV4dC4gKi9cbiAgICB2YWxpZGF0ZUxlbmd0aE9uQ3VzdG9tU2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUGFzdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5tYXhMZW5ndGgsIHRoaXMuX3RleHRBcmVhQ2hhckNvdW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPSB0aGlzLmV4Y2Vzc1RleHQ7XG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgLSB0aGlzLm1heExlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5yZW1haW5pbmdUZXh0O1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIC0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1Bhc3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBoYW5kbGUgZXhjZWVkZWQgbWF4bGVuZ3RoIGNhc2Ugd2hlbiB0ZXh0IGlzIHBhc3RlZCAqL1xuICAgIGhhbmRsZVBhc3RlSW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzUGFzdGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBXcmFwcGVkIGluIHRpbWVvdXQgdG8gbWFrZSBzZWxlY3RpbmcgcmFuZ2Ugd29ya2luZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpKTtcbiAgICB9XG5cbiAgICAvKiogaGFuZGxlIGF1dG8gZ3Jvd2luZyBvZiB0ZXh0YXJlYSAqL1xuICAgIGF1dG9Hcm93VGV4dEFyZWEoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgICAgICAgICAgY29uc3QgdGV4dGFyZWFUb3RhbEhlaWdodCA9IHRoaXMuX2dldFRleHRhcmVhVG90YWxIZWlnaHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHBhcnNlSW50KHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0IGFzIHN0cmluZywgMTApO1xuICAgICAgICAgICAgaWYgKG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0YXJlYVRvdGFsSGVpZ2h0IDw9IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRleHRhcmVhVG90YWxIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbWF4SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbm8gYm91bmQgbWF4IGhlaWdodCwga2VlcCBncm93aW5nXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0ZXh0YXJlYVRvdGFsSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBsaW5lIGhlaWdodCBvZiB0ZXh0YXJlYVxuICAgICAqL1xuICAgIGdldFRleHRhcmVhTGluZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGFyZ2V0RWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVpZ2h0XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAyMDsgLy8gZGVmYXVsdCBsaW5lIGhlaWdodCBpZiBub3RoaW5nIGlzIGRlZmluZWRcbiAgICB9XG5cbiAgICAvKiogd2hlbiBiYWNrcHJlc3Mgb3IgZGVsZXRlIGtleSBpcyBwcmVzc2VkIHdoZW4gc2hvd0V4Y2VlZGVkVGV4dCBmaWVsZCBpcyBub3Qgc2V0LCBzaW1wbHkgcmVtb3ZlIGV4Y2VzcyBjaGFyYWN0ZXJzLFxuICAgIC8qIGVsc2UgaGFuZGxlIGF1dG9ncm93IGNhc2VcbiAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVCYWNrUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgbm90IHNob3dpbmcgZXhjZWVkZWQgdGV4dCBtZXNzYWdlL2ludGVyYWN0aW9ucyBvciBncm93aW5nLCBhbmQgY3VzdG9tIHZhbHVlIHNldFxuICAgICAgICBpZiAodGhpcy5ncm93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9Hcm93VGV4dEFyZWEoKTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWx1ZUN1c3RvbVNldCA9IGZhbHNlOyAvLyBzZXQgaXQgdG8gZmFsc2UgZmlyc3QgdGltZSBpdCBjb21lcyBoZXJlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0ICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbREVMRVRFLCBCQUNLU1BBQ0VdKSkge1xuICAgICAgICAgICAgLy8gZm9yIHRoZSBjdXN0b20gdmFsdWUgc2V0IGFuZCBzaG93RXhjZWVkZWRUZXh0PWZhbHNlIGNhc2UsIG9uIGFueSBrZXkgcHJlc3MsIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTsgLy8gc2luY2UgdmFsdWUgaXMgbm93IGNoYW5nZWQsIGl0IGlzIG5vIGxvbmdlciBjdXN0b20gc2V0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IHRoZSB1cGRhdGVkIHN0YXRlIHdoZW4gY2hhcmFjdGVyIGNvdW50IGJyZWFjaGVzIGBtYXhMZW5ndGhgXG4gICAgICovXG4gICAgZ2V0VXBkYXRlZFN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAodGhpcy5fZ2V0Q29udGVudExlbmd0aCgpID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzVGV4dEV4Y2VlZGVkID0gdHJ1ZTsgLy8gc2V0IGZsYWcgZm9yIGVycm9yIG1lc3NhZ2UgdG8gYWxzbyBjaGFuZ2UgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5leGNlc3NUZXh0O1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9IHRoaXMucmVtYWluaW5nVGV4dDtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTsgLy8gcmV0dXJuIGFueSBvdGhlciBlcnJvcnMgZm91bmQgYnkgcGFyZW50IGZvcm0gZmllbGRcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBOYXRpdmUgZWxlbWVudCAgKi9cbiAgICBnZXQgX3RhcmdldEVsZW1lbnQoKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0YXJlYSBjb250ZW50ICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29udGVudExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgY29udGVudExlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLl90YXJnZXRFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50TGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgdG90YWwgaGVpZ2h0IGluY2x1ZGluZyBib3JkZXJzIGFuZCBzY3JvbGwgaGVpZ2h0ICovXG4gICAgcHJpdmF0ZSBfZ2V0VGV4dGFyZWFUb3RhbEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl90YXJnZXRFbGVtZW50KTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWlnaHRcbiAgICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSwgMTApICtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICtcbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSwgMTApO1xuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gc2V0IGluaXRpYWwgbWF4IGhlaWdodCAqKi9cbiAgICBwcml2YXRlIF9zZXRNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcgJiYgdGhpcy5fdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3Jvd2luZ01heExpbmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmdyb3dpbmdNYXhMaW5lcyAqIHRoaXMuZ2V0VGV4dGFyZWFMaW5lSGVpZ2h0KCkgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3dpbmdNYXhMaW5lcykge1xuICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZS4gcm93cyBhdHRyaWJ1dGUgdGFrZXMgY2FyZS5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgICAjaW5wdXRFbGVtZW50UmVmXG4gICAgZmQtZm9ybS1jb250cm9sXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZCArICctY291bnRlcidcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbYXR0ci5yb3dzXT1cImdyb3dpbmcgPyAyIDogaGVpZ2h0ID8gMiA6IGdyb3dpbmdNYXhMaW5lc1wiXG4gICAgW2F0dHIuY29sc109XCJjb2xzXCJcbiAgICBbYXR0ci53cmFwXT1cIndyYXBUeXBlXCJcbiAgICBbYXR0ci5tYXhsZW5ndGhdPVwiIXNob3dFeGNlZWRlZFRleHQgPyBtYXhMZW5ndGggOiBudWxsXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/IHRydWUgOiBudWxsXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbc3RhdGVdPVwiZ2V0VXBkYXRlZFN0YXRlKClcIlxuICAgIChwYXN0ZSk9XCJoYW5kbGVQYXN0ZUludGVyYWN0aW9uKClcIlxuICAgIChibHVyKT1cIl9vbkZvY3VzQ2hhbmdlZChmYWxzZSlcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1c0NoYW5nZWQodHJ1ZSlcIlxuPjwvdGV4dGFyZWE+XG5cbjwhLS0gSUNVIHJlY29tbWVuZHMgZnVsbCB0ZXh0IGluIGZvcm1hdCAtLT5cbjxkaXZcbiAgICBjbGFzcz1cImZkLXRleHRhcmVhLWNvdW50ZXJcIlxuICAgICpuZ0lmPVwic2hvd0V4Y2VlZGVkVGV4dFwiXG4gICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgIFthdHRyLmlkXT1cImlkICsgJy1jb3VudGVyJ1wiXG4gICAgI2NvdW50ZXJcbj5cbiAgICA8IS0tIHJlbmRlciBzcGFjZXMgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHZhbHVlIHdoaWxlIHRyYW5zbGF0aW9uIHN0cmluZyBpcyBsb2FkaW5nIGluIG9yZGVyIHRvIGF2b2lkIGNvbnRlbnQganVtcHMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9PT0gJ2V4Y2Vzcyc7IGVsc2UgY2hhcmFjdGVyc1JlbWFpbmluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJcbiAgICAgICAgICAgICAgICAoZXhjZWVkZWRDaGFyQ291bnQgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRTaW5ndWxhcidcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRQbHVyYWwnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBjb3VudDogZXhjZWVkZWRDaGFyQ291bnQgfSA6ICcmbmJzcDsmbmJzcDsnXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2hhcmFjdGVyc1JlbWFpbmluZz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiXG4gICAgICAgICAgICAgICAgKGV4Y2VlZGVkQ2hhckNvdW50ID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nUGx1cmFsJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGV4Y2VlZGVkQ2hhckNvdW50IH0gOiAnJm5ic3A7Jm5ic3A7J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FB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aUJOLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLFNBQVM7Z0JBbUxwQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBLZXlVdGlsLCBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1Db250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IEJhc2VJbnB1dCwgUGxhdGZvcm1Gb3JtRmllbGQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFRleHRBcmVhQ29uZmlnIH0gZnJvbSAnLi90ZXh0LWFyZWEuY29uZmlnJztcblxuY29uc3QgVkFMSURfV1JBUF9UWVBFUyA9IFsnaGFyZCcsICdzb2Z0JywgJ29mZiddO1xuXG5leHBvcnQgdHlwZSBXcmFwVHlwZSA9ICdoYXJkJyB8ICdzb2Z0JyB8ICdvZmYnO1xuXG4vKipcbiAqIFRleHRhcmVhIGZpZWxkIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgY29tcGxpYW50IHdpdGggUGxhdGZvcm0ncyBGb3JtR3JvdXAvRm9ybUZpZWxkIGRlc2lnblxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtdGV4dGFyZWEnLFxuICAgIHRlbXBsYXRlVXJsOiAndGV4dC1hcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsndGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfRk9STV9GSUVMRF9DT05UUk9MLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRleHRBcmVhQ29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRm9ybUNvbnRyb2xDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBOZ0lmLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0IHRvIHdoaWNoIHRoZSB0ZXh0YXJlYSB3aWxsIGdyb3cgd2hlbiBgZ3Jvd2luZ2AgaXMgc2V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiByb3dzIHRoYXQgd2lsbCBiZSB2aXNpYmxlIHdoZW4gYGdyb3dpbmdgIGlzIHNldC5cbiAgICAgKiBJZiBib3RoIGBncm93aW5nTWF4TGluZXNgIGFuZCBgaGVpZ2h0YCBhcmUgcHJvdmlkZWQsIGBoZWlnaHRgIHZhbHVlIHRha2VzIHByZWNlZGVuY2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncm93aW5nTWF4TGluZXM6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dGFyZWEgYGNvbHNgIGF0dHJpYnV0ZSB3cmFwcGVkLSB0aGUgbnVtYmVyIG9mIGxldHRlcnMgdmlzaWJsZSBwZXIgbGluZS5cbiAgICAgKiBJZiB3aWR0aCBpcyBzZXQgdG8gYXV0bywgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHM6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0YXJlYSBgd3JhcGAgYXR0cmlidXRlIC0gY2FuIGJlIG9uZSBvZiB0aHJlZTogJ29mZicsICdoYXJkJyBvciAnc29mdCcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB3cmFwVHlwZTogV3JhcFR5cGUgPSAnc29mdCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyByZWFkb25seVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCB0byBlbnRlci5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIGBtYXhMZW5ndGhgIGhhcyBuYXRpdmUgdGV4dGFyZWEncyBiZWhhdmlvciBvZiBkaXNhbGxvd2luZyB0eXBpbmcgYmV5b25kIGBtYXhMZW5ndGhgLlxuICAgICAqIElmIGBzaG93RXhjZWVkZWRUZXh0YCBpcyB0cnVlLCB1c2VyIGlzIGFsbG93ZWQgdG8gdHlwZSBiZXlvbmQgYG1heExlbmd0aGAsIGJ1dCBlcnJvciBzdGF0ZXMgYW5kIGNvdW50ZXIgbWVzc2FnZXMgc2hvd2luZ1xuICAgICAqIHRoZSBleGNlZWRlZCBjb3VudCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY291bnRlciBtZXNzYWdlIHNob3VsZCBiZSBzaG93bi5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIG5vIHN0YXRlIGNoYW5nZXMgb3IgZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiBVc2VyIGlzIHNpbXBseSBub3QgYWxsb3dlZCB0byB0eXBlXG4gICAgICogYmV5b25kIHRoZSBgbWF4TGVuZ3RoYCBjaGFyYWN0ZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0V4Y2VlZGVkVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIHRleHRhcmVhIGNhbiBncm93LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3Jvd2luZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRleHRhcmVhJ3MgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiBjdXN0b20gdmFsdWUgbm90IHNldCwgd2Ugc2hvdWxkIHNldC9yZXNldCBjb3VudGVyIHRvIG1heGxlbmd0aCB2YWx1ZSB3aGVuIGl0IGJlY29tZXMgdW5kZWZpbmVkXG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5tYXhMZW5ndGggPyB0aGlzLm1heExlbmd0aCA6IDA7XG4gICAgICAgICAgICAvLyByZXNldCBzdGF0ZSBieSByZXNldHRpbmcgdmFsdWVcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb3VudGVyJylcbiAgICBfdGV4dGFyZWFDb3VudGVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gZXhjZXNzIGNoYXJhY3RlciBjb3VudCAqL1xuICAgIGV4Y2VlZGVkQ2hhckNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIGEgc3RyaW5nIHBsYWNlaG9sZGVyIHRoYXQgdG9nZ2xlcyBiZXR3ZWVuICdyZW1haW5pbmcnIGFuZCAnZXhjZXNzJyBmb3IgdGhlIHNlbGVjdCBJQ1UgZXhwcmVzc2lvbiAqL1xuICAgIGNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9ICdyZW1haW5pbmcnO1xuXG4gICAgLyoqIEBoaWRkZW4gZmxhZyB0byBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbml0aWFsIHZhbHVlIHNldCAqL1xuICAgIGlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLyoqIHRvIGtlZXAgdHJhY2sgb2YgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHRhcmVhICovXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFDaGFyQ291bnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1Bhc3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIGZvciBpMThuIGNvdW50ZXIgbWVzc2FnZSB0cmFuc2xhdGlvbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtYWluaW5nVGV4dCA9ICdyZW1haW5pbmcnO1xuICAgIC8qKiBmb3IgaTE4biBjb3VudGVyIG1lc3NhZ2UgdHJhbnNsYXRpb24gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2Vzc1RleHQgPSAnZXhjZXNzJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAc2VlIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbC5leHRyYUNvbnRlbnRIZWlnaHRQeFxuICAgICAqL1xuICAgIGdldCBleHRyYUNvbnRlbnRIZWlnaHRQeCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dGFyZWFDb3VudGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9zaG91bGRUcmFja1RleHRMaW1pdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoID4gMCAmJiAhdGhpcy5zaG93RXhjZWVkZWRUZXh0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBwcm90ZWN0ZWQgX3RleHRBcmVhQ29uZmlnOiBUZXh0QXJlYUNvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBUeXBlIHx8IFZBTElEX1dSQVBfVFlQRVMuaW5kZXhPZih0aGlzLndyYXBUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGV4dGFyZWEgd3JhcCB0eXBlICR7dGhpcy53cmFwVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIG5vdCBjdXN0b20gc2V0LCBzZXQgY291bnRlciB0byBtYXggbGVuZ3RoIHZhbHVlLCBlbHNlIGl0IGNhbGN1bGF0ZXMgcmVtYWluaW5nL2V4Y2VlZGVkIGNoYXJhY3RlcnMuXG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHNldCBtYXggaGVpZ2h0XG4gICAgICAgIHRoaXMuX3NldE1heEhlaWdodCgpO1xuXG4gICAgICAgIC8vIGRvbid0IHNldCBhbnkgZXJyb3Igc3RhdGUgaWYgd2UgYXJlIG5vdCBzaG93aW5nIGNvdW50ZXIgbWVzc2FnZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gdmFsdWUgaXMgY3VzdG9tIHNldChpbml0aWFsIHZhbHVlIGlzIHByZXNlbnQpLCB0aGUgaGVpZ2h0cyBkb24ndCBnZXRcbiAgICAgICAgLy8gc2V0IHRvIHNob3cgdGhlIGZ1bGwgdGV4dCBpbiB0aGUgbmdBZnRlclZpZXdJbml0IGltbWVkaWF0ZWx5LiB0aGVyZWZvcmUsIHdlIGNhbGwgYXV0b0dyb3dUZXh0QXJlYSBpblxuICAgICAgICAvLyBuZ0FmdGVyVmlld0NoZWNrZWQgYW5kIGRldGVjdCBjaGFuZ2VzIGFnYWluLlxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmlzVmFsdWVDdXN0b21TZXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b0dyb3dUZXh0QXJlYSgpOyAvLyBpZiBhcHBsaWNhYmxlLCBncm93IHRoZSB0ZXh0YXJlYSB3aGVuIHZhbHVlIGlzIGN1c3RvbSBzZXRcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3RleHRhcmVhOiBuZ0FmdGVyVmlld0NoZWNrZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiB3cml0ZSB2YWx1ZSBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSA/PyAnJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCd0ZXh0YXJlYTogd3JpdGVWYWx1ZScpO1xuICAgIH1cblxuICAgIC8qKiB1cGRhdGUgdGhlIGNvdW50ZXIgbWVzc2FnZSBhbmQgcmVsYXRlZCBpbnRlcmFjdGlvbnMgKi9cbiAgICB1cGRhdGVDb3VudGVySW50ZXJhY3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWU/Lmxlbmd0aCA/PyAwO1xuXG4gICAgICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgLy8gbmV3bHkgYWRkZWQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaXRlcmF0aW9uLCByZW1vdmUgaWYgaXNzdWUgZm91bmRcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVMZW5ndGhPbkN1c3RvbVNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIGlmIGV4Y2VlZGVkIG1heGxlbmd0aCB3aGVuIHNldCBhcyBhIHZhbHVlIGluIGNvZGUsIGhpZ2hsaWdodCB0aGUgZXhjZWVkZWQgdGV4dC4gKi9cbiAgICB2YWxpZGF0ZUxlbmd0aE9uQ3VzdG9tU2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUGFzdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5tYXhMZW5ndGgsIHRoaXMuX3RleHRBcmVhQ2hhckNvdW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPSB0aGlzLmV4Y2Vzc1RleHQ7XG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgLSB0aGlzLm1heExlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5yZW1haW5pbmdUZXh0O1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIC0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1Bhc3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBoYW5kbGUgZXhjZWVkZWQgbWF4bGVuZ3RoIGNhc2Ugd2hlbiB0ZXh0IGlzIHBhc3RlZCAqL1xuICAgIGhhbmRsZVBhc3RlSW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzUGFzdGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBXcmFwcGVkIGluIHRpbWVvdXQgdG8gbWFrZSBzZWxlY3RpbmcgcmFuZ2Ugd29ya2luZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpKTtcbiAgICB9XG5cbiAgICAvKiogaGFuZGxlIGF1dG8gZ3Jvd2luZyBvZiB0ZXh0YXJlYSAqL1xuICAgIGF1dG9Hcm93VGV4dEFyZWEoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgICAgICAgICAgY29uc3QgdGV4dGFyZWFUb3RhbEhlaWdodCA9IHRoaXMuX2dldFRleHRhcmVhVG90YWxIZWlnaHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHBhcnNlSW50KHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0IGFzIHN0cmluZywgMTApO1xuICAgICAgICAgICAgaWYgKG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0YXJlYVRvdGFsSGVpZ2h0IDw9IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRleHRhcmVhVG90YWxIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbWF4SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbm8gYm91bmQgbWF4IGhlaWdodCwga2VlcCBncm93aW5nXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0ZXh0YXJlYVRvdGFsSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBsaW5lIGhlaWdodCBvZiB0ZXh0YXJlYVxuICAgICAqL1xuICAgIGdldFRleHRhcmVhTGluZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGFyZ2V0RWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVpZ2h0XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAyMDsgLy8gZGVmYXVsdCBsaW5lIGhlaWdodCBpZiBub3RoaW5nIGlzIGRlZmluZWRcbiAgICB9XG5cbiAgICAvKiogd2hlbiBiYWNrcHJlc3Mgb3IgZGVsZXRlIGtleSBpcyBwcmVzc2VkIHdoZW4gc2hvd0V4Y2VlZGVkVGV4dCBmaWVsZCBpcyBub3Qgc2V0LCBzaW1wbHkgcmVtb3ZlIGV4Y2VzcyBjaGFyYWN0ZXJzLFxuICAgIC8qIGVsc2UgaGFuZGxlIGF1dG9ncm93IGNhc2VcbiAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVCYWNrUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgbm90IHNob3dpbmcgZXhjZWVkZWQgdGV4dCBtZXNzYWdlL2ludGVyYWN0aW9ucyBvciBncm93aW5nLCBhbmQgY3VzdG9tIHZhbHVlIHNldFxuICAgICAgICBpZiAodGhpcy5ncm93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9Hcm93VGV4dEFyZWEoKTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWx1ZUN1c3RvbVNldCA9IGZhbHNlOyAvLyBzZXQgaXQgdG8gZmFsc2UgZmlyc3QgdGltZSBpdCBjb21lcyBoZXJlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0ICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbREVMRVRFLCBCQUNLU1BBQ0VdKSkge1xuICAgICAgICAgICAgLy8gZm9yIHRoZSBjdXN0b20gdmFsdWUgc2V0IGFuZCBzaG93RXhjZWVkZWRUZXh0PWZhbHNlIGNhc2UsIG9uIGFueSBrZXkgcHJlc3MsIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTsgLy8gc2luY2UgdmFsdWUgaXMgbm93IGNoYW5nZWQsIGl0IGlzIG5vIGxvbmdlciBjdXN0b20gc2V0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IHRoZSB1cGRhdGVkIHN0YXRlIHdoZW4gY2hhcmFjdGVyIGNvdW50IGJyZWFjaGVzIGBtYXhMZW5ndGhgXG4gICAgICovXG4gICAgZ2V0VXBkYXRlZFN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAodGhpcy5fZ2V0Q29udGVudExlbmd0aCgpID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzVGV4dEV4Y2VlZGVkID0gdHJ1ZTsgLy8gc2V0IGZsYWcgZm9yIGVycm9yIG1lc3NhZ2UgdG8gYWxzbyBjaGFuZ2UgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5leGNlc3NUZXh0O1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9IHRoaXMucmVtYWluaW5nVGV4dDtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTsgLy8gcmV0dXJuIGFueSBvdGhlciBlcnJvcnMgZm91bmQgYnkgcGFyZW50IGZvcm0gZmllbGRcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBOYXRpdmUgZWxlbWVudCAgKi9cbiAgICBnZXQgX3RhcmdldEVsZW1lbnQoKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0YXJlYSBjb250ZW50ICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29udGVudExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgY29udGVudExlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLl90YXJnZXRFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50TGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgdG90YWwgaGVpZ2h0IGluY2x1ZGluZyBib3JkZXJzIGFuZCBzY3JvbGwgaGVpZ2h0ICovXG4gICAgcHJpdmF0ZSBfZ2V0VGV4dGFyZWFUb3RhbEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl90YXJnZXRFbGVtZW50KTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWlnaHRcbiAgICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSwgMTApICtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICtcbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSwgMTApO1xuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gc2V0IGluaXRpYWwgbWF4IGhlaWdodCAqKi9cbiAgICBwcml2YXRlIF9zZXRNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcgJiYgdGhpcy5fdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3Jvd2luZ01heExpbmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmdyb3dpbmdNYXhMaW5lcyAqIHRoaXMuZ2V0VGV4dGFyZWFMaW5lSGVpZ2h0KCkgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3dpbmdNYXhMaW5lcykge1xuICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZS4gcm93cyBhdHRyaWJ1dGUgdGFrZXMgY2FyZS5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgICAjaW5wdXRFbGVtZW50UmVmXG4gICAgZmQtZm9ybS1jb250cm9sXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZCArICctY291bnRlcidcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbYXR0ci5yb3dzXT1cImdyb3dpbmcgPyAyIDogaGVpZ2h0ID8gMiA6IGdyb3dpbmdNYXhMaW5lc1wiXG4gICAgW2F0dHIuY29sc109XCJjb2xzXCJcbiAgICBbYXR0ci53cmFwXT1cIndyYXBUeXBlXCJcbiAgICBbYXR0ci5tYXhsZW5ndGhdPVwiIXNob3dFeGNlZWRlZFRleHQgPyBtYXhMZW5ndGggOiBudWxsXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/IHRydWUgOiBudWxsXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbc3RhdGVdPVwiZ2V0VXBkYXRlZFN0YXRlKClcIlxuICAgIChwYXN0ZSk9XCJoYW5kbGVQYXN0ZUludGVyYWN0aW9uKClcIlxuICAgIChibHVyKT1cIl9vbkZvY3VzQ2hhbmdlZChmYWxzZSlcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1c0NoYW5nZWQodHJ1ZSlcIlxuPjwvdGV4dGFyZWE+XG5cbjwhLS0gSUNVIHJlY29tbWVuZHMgZnVsbCB0ZXh0IGluIGZvcm1hdCAtLT5cbjxkaXZcbiAgICBjbGFzcz1cImZkLXRleHRhcmVhLWNvdW50ZXJcIlxuICAgICpuZ0lmPVwic2hvd0V4Y2VlZGVkVGV4dFwiXG4gICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgIFthdHRyLmlkXT1cImlkICsgJy1jb3VudGVyJ1wiXG4gICAgI2NvdW50ZXJcbj5cbiAgICA8IS0tIHJlbmRlciBzcGFjZXMgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHZhbHVlIHdoaWxlIHRyYW5zbGF0aW9uIHN0cmluZyBpcyBsb2FkaW5nIGluIG9yZGVyIHRvIGF2b2lkIGNvbnRlbnQganVtcHMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9PT0gJ2V4Y2Vzcyc7IGVsc2UgY2hhcmFjdGVyc1JlbWFpbmluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJcbiAgICAgICAgICAgICAgICAoZXhjZWVkZWRDaGFyQ291bnQgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRTaW5ndWxhcidcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRQbHVyYWwnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBjb3VudDogZXhjZWVkZWRDaGFyQ291bnQgfSA6ICcmbmJzcDsmbmJzcDsnXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2hhcmFjdGVyc1JlbWFpbmluZz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiXG4gICAgICAgICAgICAgICAgKGV4Y2VlZGVkQ2hhckNvdW50ID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nUGx1cmFsJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGV4Y2VlZGVkQ2hhckNvdW50IH0gOiAnJm5ic3A7Jm5ic3A7J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { warnOnce } from '@fundamental-ngx/cdk/utils';
|
|
2
3
|
import { InfoLabelComponent as CoreInfoLabelComponent } from '@fundamental-ngx/core/info-label';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use `InfoLabelComponent` from `@fundamental-ngx/core` instead.
|
|
7
|
+
*/
|
|
4
8
|
export class InfoLabelComponent {
|
|
9
|
+
/** @hidden */
|
|
5
10
|
constructor() {
|
|
6
11
|
/**
|
|
7
12
|
* The icon font
|
|
8
13
|
* Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'
|
|
9
14
|
*/
|
|
10
15
|
this.font = 'SAP-icons';
|
|
16
|
+
warnOnce('InfoLabelComponent is deprecated. Use InfoLabelComponent from @fundamental-ngx/core/info-label instead.');
|
|
11
17
|
}
|
|
12
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InfoLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
19
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: InfoLabelComponent, isStandalone: true, selector: "fdp-info-label", inputs: { type: "type", font: "font", glyph: "glyph", label: "label", color: "color", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", title: "title" }, ngImport: i0, template: "<fd-info-label\n [type]=\"type\"\n [color]=\"color\"\n [glyph]=\"glyph\"\n [font]=\"font\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [title]=\"title\"\n [label]=\"label\"\n>\n</fd-info-label>\n", dependencies: [{ kind: "component", type: CoreInfoLabelComponent, selector: "fd-info-label", inputs: ["class", "type", "glyph", "font", "color", "label", "title", "ariaLabel", "ariaLabelledBy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
@@ -15,7 +21,7 @@ export class InfoLabelComponent {
|
|
|
15
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: InfoLabelComponent, decorators: [{
|
|
16
22
|
type: Component,
|
|
17
23
|
args: [{ selector: 'fdp-info-label', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CoreInfoLabelComponent], template: "<fd-info-label\n [type]=\"type\"\n [color]=\"color\"\n [glyph]=\"glyph\"\n [font]=\"font\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [title]=\"title\"\n [label]=\"label\"\n>\n</fd-info-label>\n" }]
|
|
18
|
-
}], propDecorators: { type: [{
|
|
24
|
+
}], ctorParameters: function () { return []; }, propDecorators: { type: [{
|
|
19
25
|
type: Input
|
|
20
26
|
}], font: [{
|
|
21
27
|
type: Input
|
|
@@ -32,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
32
38
|
}], title: [{
|
|
33
39
|
type: Input
|
|
34
40
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvaW5mby1sYWJlbC9pbmZvLWxhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9pbmZvLWxhYmVsL2luZm8tbGFiZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFZLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxzQkFBc0IsRUFBYSxNQUFNLGtDQUFrQyxDQUFDOztBQUUzRzs7R0FFRztBQVNILE1BQU0sT0FBTyxrQkFBa0I7SUF3QzNCLGNBQWM7SUFDZDtRQWhDQTs7O1dBR0c7UUFFSCxTQUFJLEdBQWEsV0FBVyxDQUFDO1FBNEJ6QixRQUFRLENBQ0oseUdBQXlHLENBQzVHLENBQUM7SUFDTixDQUFDOzhHQTdDUSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0T0NqQi9CLHFQQVdBLDRDREljLHNCQUFzQjs7MkZBRXZCLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDSSxnQkFBZ0IsaUJBRVgsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsQ0FBQzswRUFTakMsSUFBSTtzQkFESCxLQUFLO2dCQVFOLElBQUk7c0JBREgsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSwgd2Fybk9uY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBJY29uRm9udCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IEluZm9MYWJlbENvbXBvbmVudCBhcyBDb3JlSW5mb0xhYmVsQ29tcG9uZW50LCBMYWJlbFR5cGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5mby1sYWJlbCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBJbmZvTGFiZWxDb21wb25lbnRgIGZyb20gYEBmdW5kYW1lbnRhbC1uZ3gvY29yZWAgaW5zdGVhZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaW5mby1sYWJlbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2luZm8tbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29yZUluZm9MYWJlbENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW5mb0xhYmVsQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBUaGUgTGFiZWxUeXBlIHJlcHJlc2VudGVkIGJ5IHRoZSBpbmZvIGxhYmVsIC5cbiAgICAgKiBDYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICdudW1lcmljJyB8ICdvbmx5LWljb24nIHwgJ2ljb24nXG4gICAgICogRm9yIGRlZmF1bHQgaW5mbyBsYWJlbCBvbWl0IHRoaXMgcHJvcGVydHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGU6IExhYmVsVHlwZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIGZvbnRcbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdTQVAtaWNvbnMnLCAnQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9scycgYW5kICdTQVAtaWNvbnMtVE5UJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9udDogSWNvbkZvbnQgPSAnU0FQLWljb25zJztcblxuICAgIC8qKiBnbHlwaCBkZWZpbmUgdGhlIGljb24gb2YgaW5mbyBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGg6IHN0cmluZztcblxuICAgIC8qKiBnbHlwaCBkZWZpbmUgdGhlIGljb24gb2YgaW5mbyBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBkZWZpbmUgdGhlIGNvbG91ciBvZiB0aGUgaW5mbyBsYWJlbCBzdGFydGluZyBmb3JtIDEgdG8gMTAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbG9yOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBjb250cm9sIGFyaWEtbGFiZWwgYXR0cmlidXRlIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQmluZHMgdG8gY29udHJvbCBhcmlhLWxhYmVsbGVkQnkgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgYXJpYS10aXRsZSB0byBhIHN0cmluZyBhdHRyaWJ1dGUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICdJbmZvTGFiZWxDb21wb25lbnQgaXMgZGVwcmVjYXRlZC4gVXNlIEluZm9MYWJlbENvbXBvbmVudCBmcm9tIEBmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbmZvLWxhYmVsIGluc3RlYWQuJ1xuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxmZC1pbmZvLWxhYmVsXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbZ2x5cGhdPVwiZ2x5cGhcIlxuICAgIFtmb250XT1cImZvbnRcIlxuICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcbj5cbjwvZmQtaW5mby1sYWJlbD5cbiJdfQ==
|