@eo-sdk/client 11.15.0-rc.2 → 11.15.0-rc.3
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/app/eo-client/about-state/about-state.component.d.ts +1 -1
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/assets/_default/api/xrechnung/xslt/xrechnung-html.uni.sef.json +1 -1
- package/assets/_default/api/xrechnung/xslt/xrechnung-html.uni.xsl +0 -12
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +4 -3
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/grid.component.mjs +2 -1
- package/fesm2022/eo-sdk-client.mjs +23 -22
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -70,13 +70,13 @@ export class CodesystemFilterComponent extends CodesystemComponent {
|
|
|
70
70
|
// this.autoCompleteInput.multiInputEL.nativeElement.focus();
|
|
71
71
|
}
|
|
72
72
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemFilterComponent, deps: [{ token: i1.SystemService }, { token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CodesystemFilterComponent, selector: "eo-codesystem-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CodesystemFilterComponent, selector: "eo-codesystem-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"!readonly\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i4.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i8.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }] }); }
|
|
74
74
|
}
|
|
75
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemFilterComponent, decorators: [{
|
|
76
76
|
type: Component,
|
|
77
|
-
args: [{ selector: 'eo-codesystem-filter', template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
77
|
+
args: [{ selector: 'eo-codesystem-filter', template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"!readonly\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
|
|
78
78
|
}], ctorParameters: () => [{ type: i1.SystemService }, { type: i1.TranslateService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
|
|
79
79
|
type: ViewChild,
|
|
80
80
|
args: [EoDialogComponent]
|
|
81
81
|
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXN5c3RlbS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9maWx0ZXJzL2NvZGVzeXN0ZW0tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvY29kZXN5c3RlbS9jb2Rlc3lzdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBSXhGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7O0FBUXpFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxtQkFBbUI7SUFRaEUsWUFBWSxhQUE0QixFQUFFLFNBQTJCLEVBQVUsWUFBMEI7UUFDdkcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRHdELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHpHLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsY0FBUyxHQUFHLFFBQVEsQ0FBQztRQU1uQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xDLHlCQUF5QjtZQUN6QixxQkFBcUI7WUFDckIsMEhBQTBIO1lBQzFILFNBQVM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQUk7UUFDdkIsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBSTtRQUN6QixLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFHO1FBQ3hCLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUE2QjtRQUMxQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDN0MsVUFBVSxFQUFFLDJCQUEyQjtZQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBK0I7UUFDOUMseUJBQXlCO1FBQ3pCLDZEQUE2RDtJQUMvRCxDQUFDOzhHQXZFVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixzR0FNekIsaUJBQWlCLHVFQ3BCOUIseWpEQTJCQTs7MkZEYmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHNCQUFzQjs0SUFVRixRQUFRO3NCQUFyQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtDb21wb25lbnQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvZGVzeXN0ZW1Db21wb25lbnR9IGZyb20gJy4uLy4uL2Zvcm0tZWxlbWVudHMvY29kZXN5c3RlbS9jb2Rlc3lzdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge0lGaWx0ZXJBbmd1bGFyQ29tcH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2FuZ3VsYXInO1xuaW1wb3J0IHtJQWZ0ZXJHdWlBdHRhY2hlZFBhcmFtcywgSURvZXNGaWx0ZXJQYXNzUGFyYW1zfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0VuYWlvRXZlbnQsIFN5c3RlbVNlcnZpY2UsIEV2ZW50U2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RW9EaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tY29kZXN5c3RlbS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4uLy4uL2Zvcm0tZWxlbWVudHMvY29kZXN5c3RlbS9jb2Rlc3lzdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL2Zvcm0tZWxlbWVudHMvY29kZXN5c3RlbS9jb2Rlc3lzdGVtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29kZXN5c3RlbUZpbHRlckNvbXBvbmVudCBleHRlbmRzIENvZGVzeXN0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBJRmlsdGVyQW5ndWxhckNvbXAge1xuICBwYXJhbXM6IGFueSA9IHt9O1xuICBjb2x1bW46IGFueTtcbiAgbXVsdGlzZWxlY3QgPSB0cnVlO1xuICBzaXR1YXRpb24gPSAnU0VBUkNIJztcblxuICBAVmlld0NoaWxkKEVvRGlhbG9nQ29tcG9uZW50KSBlb0RpYWxvZzogRW9EaWFsb2dDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3Ioc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlKSB7XG4gICAgc3VwZXIoc3lzdGVtU2VydmljZSk7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRyYW5zbGF0ZS5pbnN0YW50KCdlby5maWx0ZXIuaW5wdXQucGxhY2Vob2xkZXInKTtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgfHwgIXRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5hcHBseUJ1dHRvbikge1xuICAgICAgdGhpcy5wYXJhbXMuYXBpLm9uRmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgLy8gVE9ETzogc3RpbGwgbmVjZXNzYXJ5P1xuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyAgIHRoaXMuYXV0b0NvbXBsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5tdWx0aUlucHV0RUwubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyAncHgnO1xuICAgICAgLy8gfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZSkge1xuICAgIHN1cGVyLm9uQXV0b0NvbXBsZXRlU2VsZWN0KG5vZGUpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVVbnNlbGVjdChub2RlKSB7XG4gICAgc3VwZXIub25BdXRvQ29tcGxldGVVbnNlbGVjdChub2RlKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgc3VwZXIub25UcmVlU2VsZWN0aW9uQ2hhbmdlZChldnQpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICB9XG5cbiAgaXNGaWx0ZXJBY3RpdmUoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS52YWx1ZS5sZW5ndGgpO1xuICB9XG5cbiAgZG9lc0ZpbHRlclBhc3MocGFyYW1zOiBJRG9lc0ZpbHRlclBhc3NQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zLmRhdGFbdGhpcy5wYXJhbXMuY29sRGVmLmZpZWxkXTtcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pXG4gICAgICAgIC5zb21lKHZhbCA9PiAhIX50aGlzLnNlbGVjdGVkTm9kZXMubWFwKHYgPT4gdi5uYW1lKS5pbmRleE9mKHZhbCkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnZhbHVlLmxlbmd0aCA/IHtcbiAgICAgIGZpbHRlclR5cGU6ICdDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50JyxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZVxuICAgIH0gOiBudWxsO1xuICB9XG5cbiAgc2V0TW9kZWwodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBhZ0luaXQocGFyYW1zOiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLmNvZGVzeXN0ZW0gPSB0aGlzLl9nZXRDb2Rlc3lzdGVtQnlRbmFtZSh0aGlzLnBhcmFtcy5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgdGhpcy5waWNrZXJUaXRsZSA9IHRoaXMucGFyYW1zLmNvbERlZi5oZWFkZXJOYW1lO1xuICB9XG5cbiAgYWZ0ZXJHdWlBdHRhY2hlZChwYXJhbXM6IElBZnRlckd1aUF0dGFjaGVkUGFyYW1zKTogdm9pZCB7XG4gICAgLy8gVE9ETzogc3RpbGwgbmVjZXNzYXJ5P1xuICAgIC8vIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQubXVsdGlJbnB1dEVMLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWNvZGVzeXN0ZW1cIiAqbmdJZj1cImNvZGVzeXN0ZW1cIlxuICBbbmdDbGFzc109XCJ7ZnVsbDogc2VsZWN0ZWROb2RlcyAmJiBzZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gYXV0b2NvbXBsZXRlVmFsdWVzLmxlbmd0aCwgcmVhZG9ubHk6IHJlYWRvbmx5fVwiPlxuICBAaWYgKGlzU2VhcmNoICYmICFpc1RhYmxlRmlsdGVyICYmICFpc1RhYmxlRWxlbWVudCkge1xuICAgIDx5dmMtZHJvcGRvd24gWyhuZ01vZGVsKV09XCJzZWFyY2hPcHRpb25cIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKClcIiBbb3B0aW9uc109XCJhdmFpbGFibGVTZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFtkaXNhYmxlQ2xlYXJCdXR0b25dPVwidHJ1ZVwiPjwveXZjLWRyb3Bkb3duPlxuICB9XG5cbiAgPHl2Yy1hdXRvY29tcGxldGUgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlVW5zZWxlY3QoJGV2ZW50KVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgZmllbGQ9XCJuYW1lXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9yY2VTZWxlY3Rpb25dPVwiIXJlYWRvbmx5XCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlzZWxlY3RcIiAobmdNb2RlbENoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZVZhbHVlQ2hhbmdlKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIj5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuICBAaWYgKCFyZWFkb25seSkge1xuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidXR0b24gKGNsaWNrKT1cInNldERpYWxvZ1Zpc2libGUodHJ1ZSwgJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cInNldERpYWxvZ1Zpc2libGUodHJ1ZSwgJGV2ZW50KVwiPlxuICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwicGlja2VyVGl0bGUgfHwgJydcIiBbdmlzaWJsZV09XCJkaXNwbGF5XCIgKGhpZGUpPVwiZGlzcGxheSA9IGZhbHNlXCI+XG4gIEBpZiAoZGlzcGxheSkge1xuICAgIDxlby10cmVlIFt0cmVlXT1cInRyZWVcIiBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogbXVsdGlzZWxlY3R9XCJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgIFtlbXB0eU1lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCI+XG4gICAgPC9lby10cmVlPlxuICB9XG48L2VvLWRpYWxvZz5cbiJdfQ==
|
|
@@ -101,6 +101,7 @@ let GridComponent = class GridComponent {
|
|
|
101
101
|
rowSelection: 'multiple',
|
|
102
102
|
multiSortKey: 'ctrl',
|
|
103
103
|
accentedSort: true,
|
|
104
|
+
suppressMovableColumns: true,
|
|
104
105
|
suppressContextMenu: true,
|
|
105
106
|
suppressNoRowsOverlay: true,
|
|
106
107
|
overlayLoadingTemplate: ' ',
|
|
@@ -462,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
462
463
|
type: HostListener,
|
|
463
464
|
args: ['keydown.control.c', ['$event']]
|
|
464
465
|
}] } });
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2dyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUdwRixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUzlCLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUF3RHhCLElBQ0ksT0FBTyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElB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USxDQUFDOztzQkFDbEQsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2hELFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NsaWVudC1zaWRlLXJvdy1tb2RlbCc7XG5pbXBvcnQge0NlbGxQb3NpdGlvbiwgQ29sRGVmLCBDb2x1bW4sIEdyaWRBcGksIEdyaWRPcHRpb25zLCBNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RW9Vc2VyLCBUcmFuc2xhdGVTZXJ2aWNlLCBVc2VyU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0dyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2ZpbHRlcnMvY29kZXN5c3RlbS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RGF0ZXRpbWVGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9kYXRldGltZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9keW5hbWljLWxpc3QtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0xpc3RGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9saXN0LWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9vcmdhbml6YXRpb24tZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0lMb2FkZXJ9IGZyb20gJy4vbG9hZGVyLmludGVyZmFjZSc7XG5pbXBvcnQge0FnR3JpZEFuZ3VsYXJ9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcbmltcG9ydCB7ZGVsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCB7XG5cbiAgcHVibGljIG1vZHVsZXM6IE1vZHVsZVtdID0gW0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZV07XG4gIHNjcm9sbFBvc2l0aW9uID0gMDtcblxuICBvdmVybGF5TG9hZGluZ1RlbXBsYXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgY29tcG9uZW50cyA9IHtcbiAgICBhZ0RhdGVJbnB1dDogRGF0ZXRpbWVGaWx0ZXJDb21wb25lbnQsXG4gICAgT3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50OiBPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnQsXG4gICAgQ29kZXN5c3RlbUZpbHRlckNvbXBvbmVudDogQ29kZXN5c3RlbUZpbHRlckNvbXBvbmVudCxcbiAgICBEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudDogRHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQsXG4gICAgTGlzdEZpbHRlckNvbXBvbmVudDogTGlzdEZpbHRlckNvbXBvbmVudFxuICB9O1xuXG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgcHJpdmF0ZSBfb3B0aW9uczogYW55ID0ge307XG4gIHByaXZhdGUgX2dyaWRDb3VudDogYW55ID0ge307XG4gIHByaXZhdGUgcGlubmVkQ29sdW1uOiBDb2xEZWYgPSB7XG4gICAgaGVhZGVyTmFtZTogJycsXG4gICAgZmlsdGVyOiBmYWxzZSxcbiAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICBzdXBwcmVzc0hlYWRlck1lbnVCdXR0b246IHRydWUsXG4gICAgc3VwcHJlc3NNb3ZhYmxlOiB0cnVlLFxuICAgIHN1cHByZXNzTmF2aWdhYmxlOiB0cnVlLFxuICAgIHN1cHByZXNzUGFzdGU6IHRydWUsXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IHRydWUsXG4gICAgcGlubmVkOiAnbGVmdCcsXG4gICAgd2lkdGg6IDMsXG4gICAgbWF4V2lkdGg6IDMsXG4gICAgZmllbGQ6ICdfX3NlbGVjdGlvbkZpZWxkJyxcbiAgICB2YWx1ZUdldHRlcjogKCkgPT4gJydcbiAgfTtcblxuICBAVmlld0NoaWxkKCdhZ0dyaWQnKSBhZ0dyaWQhOiBBZ0dyaWRBbmd1bGFyO1xuXG4gIEBPdXRwdXQoKSBlb0dyaWRDb3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVvR3JpZFNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVvR3JpZEZvY3VzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW9HcmlkQ2VsbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlb0dyaWREb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW9HcmlkQ29udGV4dE1lbnVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW9HcmlkQ29sdW1uUmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByaXZhdGUgY29sUmVzaXplRGVib3VuY2VyID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBjYWxjdWxhdGVEZWJvdW5jZXIgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGZvY3VzZWRSb3dJRCA9ICcnO1xuXG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VsZWN0aW9uTGltaXQ6IG51bWJlcjtcbiAgQElucHV0KCkgc2VsZWN0ZWRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplVG9GaXQgPSBmYWxzZTtcbiAgQElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dIZWFkZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0Zvb3RlciA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkZXJDb250ZW50OiBJTG9hZGVyID0ge3Nob3c6IGZhbHNlLCBpbWFnZTogbnVsbCwgdGV4dDogbnVsbH07XG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZ3JpZE9wdGlvbnMoZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zIHwgYW55KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdyaWRPcHRpb25zPy5fZ3JpZE9wdGlvbnMgfHwgZ3JpZE9wdGlvbnM7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9ncmlkT3B0aW9ucywgb3B0aW9ucywge1xuICAgICAgY29udGV4dDogT2JqZWN0LmFzc2lnbih0aGlzLl9ncmlkT3B0aW9ucy5jb250ZXh0LCBvcHRpb25zLmNvbnRleHQpLFxuICAgICAgY29sdW1uRGVmczogb3B0aW9ucy5jb2x1bW5EZWZzID8gW3RoaXMucGlubmVkQ29sdW1uXS5jb25jYXQob3B0aW9ucy5jb2x1bW5EZWZzKSA6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBnZXQgY29udGV4dENvdW50KCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID09PSAnbnVtYmVyJyA/IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA6IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudC52YWx1ZTtcbiAgfVxuXG4gIGdldCBjb250ZXh0UmVsYXRpb24oKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPT09ICdudW1iZXInID8gJ2VxJyA6IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudC5yZWxhdGlvbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5hbHQuc2hpZnQuYycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uY29udHJvbC5zaGlmdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmFsdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmMnLCBbJyRldmVudCddKVxuICBjb3B5Q2VsbEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmdyaWRBcGkuY29weVRvQ2xpcGJvYXJkKGV2ZW50LCB0aGlzLmFnR3JpZCwgdGhpcy5ncmlkT3B0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZEFwaTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICApIHtcblxuICAgIHRoaXMuX2dyaWRPcHRpb25zID0ge1xuICAgICAgY29udGV4dDogZ3JpZEFwaS5nZXRDb250ZXh0KCksXG4gICAgICBhbmltYXRlUm93czogdHJ1ZSxcbiAgICAgIGhlYWRlckhlaWdodDogMzAsXG4gICAgICByb3dIZWlnaHQ6IDQ4LFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcbiAgICAgIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICAgICAgYWNjZW50ZWRTb3J0OiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIG92ZXJsYXlMb2FkaW5nVGVtcGxhdGU6ICcgJyxcbiAgICAgIG92ZXJsYXlOb1Jvd3NUZW1wbGF0ZTogJyAnLFxuICAgICAgZ2V0Um93SWQ6IChyb3cpID0+IHJvdz8uZGF0YT8uaWQgfHwgcm93IHx8IG51bGwsXG4gICAgICBnZXRMb2NhbGVUZXh0OiAoe2tleSwgZGVmYXVsdFZhbHVlLCB2YXJpYWJsZVZhbHVlc30pID0+IHtcbiAgICAgICAgbGV0IGdyaWRLZXkgPSAnZW8ucmVzdWx0bGlzdC5ncmlkLicgKyBrZXk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KGdyaWRLZXksIHZhcmlhYmxlVmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIH52YWx1ZS5pbmRleE9mKGdyaWRLZXkpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgICB9LFxuICAgICAgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VycyBob3Jpem9udGFsIHNjcm9sbCByZXNldCBhZnRlciBzb3J0aW5nIHdpdGggYSBkZWxheS5cbiAgICAgICAqL1xuICAgICAgcG9zdFNvcnRSb3dzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGVib3VuY2VyLnBpcGUoXG4gICAgICAgICAgZGVsYXkoNzUwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0SG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubG9hZGluZ01lc3NhZ2UoKTtcbiAgICB0aGlzLmdldFVzZXIoKTtcblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMudGFza3MkXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHRhc2tzKSA9PiB0aGlzLmFwaT8udXBkYXRlR3JpZE9wdGlvbnMoe3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246ICEhdGFza3MubGVuZ3RoLCBzdXBwcmVzc0NlbGxGb2N1czogISF0YXNrcy5sZW5ndGh9KSk7XG5cbiAgICB0aGlzLmNvbFJlc2l6ZURlYm91bmNlci5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwMDApKVxuICAgICAgLnN1YnNjcmliZShjb2wgPT4gdGhpcy5lb0dyaWRDb2x1bW5SZXNpemVkLmVtaXQoY29sKSk7XG5cbiAgICB0aGlzLmNhbGN1bGF0ZURlYm91bmNlci5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2FsY3VsYXRlUm93Q291bnQoKSk7XG4gIH1cblxuICBsb2FkaW5nTWVzc2FnZSgpIHtcbiAgICBsZXQgbG9hZGVyQ29udGVudCA9ICcnO1xuXG4gICAgaWYgKHRoaXMubG9hZGVyQ29udGVudC5zaG93KSB7XG4gICAgICBpZiAodGhpcy5sb2FkZXJDb250ZW50LmltYWdlKSB7XG4gICAgICAgIGxvYWRlckNvbnRlbnQgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyXCI+PGltZyBbc3JjXT1cIiR7dGhpcy5sb2FkZXJDb250ZW50LmltYWdlfVwiIGFsdD1cImxvYWRlciBpbWFnZVwiPjwvc3Bhbj5gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9hZGVyQ29udGVudCA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4ke3RoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5sb2FkZXJDb250ZW50LnRleHQpfTwvc3Bhbj5gO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm92ZXJsYXlMb2FkaW5nVGVtcGxhdGUgPSBsb2FkZXJDb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyOiBFb1VzZXIpID0+IHtcbiAgICAgICh0aGlzLmdyaWRPcHRpb25zIHx8IHRoaXMuX2dyaWRPcHRpb25zKS5lbmFibGVSdGwgPSAodXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcpO1xuICAgICAgdGhpcy5waW5uZWRDb2x1bW4ucGlubmVkID0gKHVzZXIudWlEaXJlY3Rpb24gPT09ICdydGwnKSA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVJvd0NvdW50KCkge1xuICAgIGxldCByb3dDb3VudCA9IDA7XG4gICAgbGV0IHRvdGFsQ291bnQgPSB0aGlzLmNvbnRleHRDb3VudDtcbiAgICBsZXQgcm93SW5kZXggPSB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQucm93SW5kZXg7XG4gICAgbGV0IHNlbGVjdGlvbiA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5zZWxlY3Rpb247XG5cbiAgICBpZiAoIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpICYmIHRoaXMuYXBpPy5nZXRHcmlkT3B0aW9uKCdyb3dEYXRhJykpIHtcbiAgICAgIHRoaXMuYXBpLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXIobiA9PiBuLmdyb3VwIHx8IHJvd0NvdW50KyspO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3dDb3VudCA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCB8fCAwO1xuICAgIH1cblxuICAgIC8vIHJldHJpZXZlIHRoZSBvYmplY3RJZCBmcm9tIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBzZWxlY3QgdGhlIGNvcnJlc3BvbmRpbmcgcm93IGlmIGl0IGV4aXN0c1xuICAgIGNvbnN0IHtxdWVyeVBhcmFtc30gPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgIHRoaXMuc2VsZWN0ZWRJZCA9IHF1ZXJ5UGFyYW1zLm9iamVjdElkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEuZmluZEluZGV4KHJvdyA9PiByb3cuaWQgPT09IHRoaXMuc2VsZWN0ZWRJZCk7XG4gICAgICBpZiAoc2VsZWN0ZWRSb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3coc2VsZWN0ZWRSb3dJbmRleCB8fCAwLCBzZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RGaXJzdCAmJiAhdGhpcy5hcGk/LmlzRGVzdHJveWVkKCkgJiYgIXRoaXMuYXBpLmdldEZvY3VzZWRDZWxsKCkgJiYgKHJvd0luZGV4ICE9PSBudWxsIHx8ICF0aGlzLmZvY3VzZWRSb3dJRCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3RSb3cocm93SW5kZXggfHwgMCwgc2VsZWN0aW9uKSwgMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLl9ncmlkQ291bnQgPSB7dG90YWxDb3VudCwgcm93Q291bnQsIHJlbGF0aW9uOiB0aGlzLmNvbnRleHRSZWxhdGlvbn07XG4gICAgdGhpcy5lb0dyaWRDb3VudENoYW5nZWQuZW1pdCh0aGlzLl9ncmlkQ291bnQpO1xuICB9XG5cbiAgdXBkYXRlRm9jdXMoaWQgPSB0aGlzLmZvY3VzZWRSb3dJRCkge1xuICAgIGlmICghdGhpcy5hcGk/LmlzRGVzdHJveWVkKCkpIHtcbiAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpO1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5hcGkuZ2V0Um93Tm9kZShpZCk7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5maWx0ZXJBY3RpdmUgJiYgKGNlbGwgJiYgY2VsbC5yb3dJbmRleCkgIT09IChyb3cgJiYgcm93LnJvd0luZGV4KSkge1xuICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgdGhpcy5hcGkuc2V0Rm9jdXNlZENlbGwocm93LnJvd0luZGV4LCAodGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzWzFdIGFzIENvbERlZikuZmllbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWQoJGV2ZW50KSB7XG5cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIGlmICgkZXZlbnQuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ3JvdXRlci1saW5rLWNlbGwnKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lb0dyaWRDZWxsQ2xpY2suZW1pdCgkZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KSB7XG5cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIHRoaXMuZW9HcmlkRG91YmxlQ2xpY2suZW1pdCgkZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VEb3duKCRldmVudDogTW91c2VFdmVudCB8IGFueSkge1xuICAgIGlmICh0aGlzLmFwaT8uZ2V0R3JpZE9wdGlvbignc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbicpKSB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkge1xuICAgICAgICB0aGlzLmFwaT8udXBkYXRlR3JpZE9wdGlvbnMoe3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IGZhbHNlLCBzdXBwcmVzc0NlbGxGb2N1czogZmFsc2V9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RFdmVudCgkZXZlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEV2ZW50KCRldmVudDogTW91c2VFdmVudCB8IGFueSkge1xuICAgIGNvbnN0IGNvbElkID0gJGV2ZW50LmNvbXBvc2VkUGF0aD8uKCkuZmluZCgoZWwpID0+IGVsPy5nZXRBdHRyaWJ1dGUoJ2NvbC1pZCcpKT8uZ2V0QXR0cmlidXRlKCdjb2wtaWQnKTtcbiAgICBjb25zdCByb3dJZCA9ICRldmVudC5jb21wb3NlZFBhdGg/LigpLmZpbmQoKGVsKSA9PiBlbD8uZ2V0QXR0cmlidXRlKCdyb3ctaWQnKSk/LmdldEF0dHJpYnV0ZSgncm93LWlkJyk7XG4gICAgaWYgKGNvbElkKSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLmFwaT8uZ2V0Um93Tm9kZShyb3dJZCk7XG4gICAgICAvL3NlbGVjdCByb3cgb25seSBvbiBsZWZ0IGNsaWNrXG4gICAgICB0aGlzLnNlbGVjdFJvdyhyb3cucm93SW5kZXgsICRldmVudC5idXR0b24gPT09IDAgPyBudWxsIDogW10sICEkZXZlbnQuY3RybEtleSk7XG4gICAgICBpZiAoJGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAvL29wZW4gY29udGV4dCBtZW51IG9uIHJpZ2h0IGNsaWNrXG4gICAgICAgIHRoaXMub25Db250ZXh0TWVudUNsaWNrZWQoe3Jvd0luZGV4OiByb3cucm93SW5kZXgsIG5vZGU6IHJvdywgZGF0YTogcm93LmRhdGF9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNlbGxGb2N1c2VkKCRldmVudCkge1xuICAgIGlmICh0aGlzLmFwaS5nZXRHcmlkT3B0aW9uKCdzdXBwcmVzc0NlbGxGb2N1cycpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVGb2N1cygpO1xuICAgIH1cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAkZXZlbnQuZm9jdXNlZE5vZGUgPSB0aGlzLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KCRldmVudC5yb3dJbmRleCk7XG4gICAgICBpZiAoJGV2ZW50LmZvY3VzZWROb2RlICYmICEkZXZlbnQuZm9jdXNlZE5vZGUuZ3JvdXAgJiYgJGV2ZW50LmZvY3VzZWROb2RlLmRhdGEpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkUm93SUQgPSAkZXZlbnQuZm9jdXNlZE5vZGUuaWQ7XG4gICAgICAgIHRoaXMuZW9HcmlkRm9jdXNDaGFuZ2VkLmVtaXQoJGV2ZW50LmZvY3VzZWROb2RlLmRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29udGV4dE1lbnVDbGlja2VkKCRldmVudCkge1xuICAgIGlmICgkZXZlbnQucm93SW5kZXggIT09IG51bGwgJiYgISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICBsZXQgc2VsZWN0ZWROb2RlcyA9IHRoaXMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAobiA9PiBuLmRhdGEpLmZpbHRlcihkID0+IGQpO1xuICAgICAgaWYgKHNlbGVjdGVkTm9kZXMubGVuZ3RoICYmIHNlbGVjdGVkTm9kZXMuc29tZShuID0+IG4uaWQgPT09ICRldmVudC5kYXRhLmlkKSkge1xuICAgICAgICB0aGlzLmVvR3JpZENvbnRleHRNZW51Q2xpY2suZW1pdChzZWxlY3RlZE5vZGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW9HcmlkQ29udGV4dE1lbnVDbGljay5lbWl0KFskZXZlbnQuZGF0YV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpIHtcbiAgICBsZXQgc2VsZWN0ZWROb2RlcyA9IHRoaXMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAobiA9PiBuLmRhdGEpLmZpbHRlcihkID0+IGQpO1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpbWl0ICYmIHNlbGVjdGVkTm9kZXMubGVuZ3RoID4gdGhpcy5zZWxlY3Rpb25MaW1pdCkge1xuICAgICAgdGhpcy5zZWxlY3RSb3codGhpcy5hcGkuZ2V0Rm9jdXNlZENlbGwoKS5yb3dJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGVkTm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZCgkZXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LmNvbHVtbikge1xuICAgICAgdGhpcy5jb2xSZXNpemVEZWJvdW5jZXIubmV4dCgkZXZlbnQuY29sdW1uKTtcbiAgICB9XG4gIH1cblxuICBvbk1vZGVsVXBkYXRlZCgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZURlYm91bmNlci5uZXh0KHt9KTtcbiAgfVxuXG4gIG9uUmVhZHkoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZVRvRml0KSB7XG4gICAgICB0aGlzLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgZ3JpZCBpcyBzb3J0ZWQuXG4gICovXG4gIG9uU29ydENoYW5nZWQoZXZlbnQpIHtcbiAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gZXZlbnQuYXBpLmdldEhvcml6b250YWxQaXhlbFJhbmdlKCkubGVmdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRoZSBncmlkIGhvcml6b250YWxseSB0byBhIHByZWRlZmluZWQgaW5pdGlhbCBwb3NpdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGdyaWQgaXMgc29ydGVkLlxuICAgKi9cbiAgc2V0SG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGdyaWRCb2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtdmlld3BvcnQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoZ3JpZEJvZHkpIHtcbiAgICAgIGdyaWRCb2R5LnNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIG9uUXVpY2tGaWx0ZXJDaGFuZ2VkKCRldmVudCkge1xuICAgIHRoaXMuYXBpLnNldFF1aWNrRmlsdGVyKCRldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogbnVtYmVyIHwgc3RyaW5nLCBzZWxlY3Rpb24/OiBudW1iZXJbXSwgY2xlYXJTZWxlY3Rpb24gPSB0cnVlLCBwb3NpdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuYXBpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgcm93Tm9kZSA9IHR5cGVvZiByb3cgPT09ICdudW1iZXInID8gIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpICYmIHRoaXMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgocm93KSA6IHRoaXMuYXBpLmdldFJvd05vZGUocm93KTtcbiAgICBsZXQgaW5kZXggPSByb3dOb2RlID8gcm93Tm9kZS5yb3dJbmRleCA6IDA7XG5cbiAgICBpZiAocm93Tm9kZSAmJiByb3dOb2RlLmRhdGEpIHtcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgc2VsZWN0aW9uLmZvckVhY2goKHJvd0luZGV4LCBpKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3dJbmRleCkuc2V0U2VsZWN0ZWQodHJ1ZSwgaSA9PT0gMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuc2VsZWN0aW9uID0gbnVsbDsgLy9yZXNldCBpbml0aWFsIHNlbGVjdGlvblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlLCBjbGVhclNlbGVjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBpLnNldEZvY3VzZWRDZWxsKGluZGV4LCAodGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzWzFdIGFzIENvbERlZikuZmllbGQpO1xuICAgICAgdGhpcy5zY3JvbGxUb1JvdyhpbmRleCwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0luZGV4ID0gbnVsbDsgLy9yZXNldCBpbml0aWFsIHJvd0luZGV4XG4gICAgfSBlbHNlIGlmIChpbmRleCA+IDAgJiYgdGhpcy5jb250ZXh0Q291bnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0Um93KC0taW5kZXgsIHNlbGVjdGlvbiwgY2xlYXJTZWxlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW9HcmlkRm9jdXNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG9Sb3coaW5kZXg/OiBudW1iZXIsIHBvc2l0aW9uID0gbnVsbCkge1xuICAgIHRoaXMuYXBpLmVuc3VyZUluZGV4VmlzaWJsZShpbmRleCA9PT0gdW5kZWZpbmVkID8gKHRoaXMuYXBpLmdldEZvY3VzZWRDZWxsKCkgPyB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpLnJvd0luZGV4IDogMCkgOiBpbmRleCwgcG9zaXRpb24pO1xuICB9XG5cbiAgc2VsZWN0Um93QnlJZChpZCwgcG9zaXRpb24gPSAnJykge1xuICAgIGNvbnN0IHJvd05vZGUgPSBpZCAmJiB0aGlzLmFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICBpZiAocm93Tm9kZSkge1xuICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlKTtcbiAgICAgIHRoaXMuc2VsZWN0Um93KHJvd05vZGUucm93SW5kZXgsIFtdLCB0cnVlLCBwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29sdW1uRGVmcyhjb2x1bW5EZWZzOiBDb2xEZWZbXSkge1xuICAgIHRoaXMuYXBpLnNldEdyaWRPcHRpb24oJ2NvbHVtbkRlZnMnLCBjb2x1bW5EZWZzID8gW3RoaXMucGlubmVkQ29sdW1uXS5jb25jYXQoY29sdW1uRGVmcykgOiBudWxsKTtcbiAgfVxuXG4gIHNldFJvd0RhdGEoZGF0YTogYW55W10gPSBbXSwgcm93PzogYW55KSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gZGF0YS5sZW5ndGg7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0luZGV4ID0gcm93O1xuICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICB0aGlzLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTb2Z0RGF0YShkYXRhOiBhbnlbXSA9IFtdKSB7XG4gICAgbGV0IHJlbW92ZSA9IGRhdGEuZmlsdGVyKGkgPT4gaS5fX3JlbW92ZWQpLm1hcChpID0+IHtcbiAgICAgIGRlbGV0ZSBpLl9fcmVtb3ZlZDtcbiAgICAgIHJldHVybiBpO1xuICAgIH0pO1xuXG4gICAgbGV0IHVwZGF0ZSA9IGRhdGEuZmlsdGVyKGkgPT4gaS5fX3VwZGF0ZWQpLm1hcChpID0+IHtcbiAgICAgIGRlbGV0ZSBpLl9fdXBkYXRlZDtcbiAgICAgIHJldHVybiBpO1xuICAgIH0pO1xuXG4gICAgLy8gZmluYWxseSByZW1vdmUgaXRlbXMgZnJvbSBhcnJheVxuICAgIHJlbW92ZS5mb3JFYWNoKGkgPT4gZGF0YS5zcGxpY2UoZGF0YS5pbmRleE9mKGkpLCAxKSk7XG5cbiAgICBsZXQgYXBwbHlVcGRhdGUgPSByZW1vdmUubGVuZ3RoIHx8IHVwZGF0ZS5sZW5ndGg7XG5cbiAgICByZXR1cm4ge2FwcGx5VXBkYXRlLCByZW1vdmUsIHVwZGF0ZX07XG4gIH1cblxuICB1cGRhdGVSb3dEYXRhKGRhdGE6IGFueVtdID0gW10sIHJvdz86IGFueSwgc2VsZWN0aW9uPzogbnVtYmVyW10pIHtcblxuICAgIGxldCB7YXBwbHlVcGRhdGUsIHJlbW92ZSwgdXBkYXRlfSA9IHRoaXMucHJvY2Vzc1NvZnREYXRhKGRhdGEpO1xuICAgIGlmICghYXBwbHlVcGRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFJvd0RhdGEoZGF0YSwgcm93KTtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSBkYXRhLmxlbmd0aDtcbiAgICBsZXQgbGFzdEZvY3VzZWRDZWxsOiBDZWxsUG9zaXRpb24gPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpO1xuICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oe3JlbW92ZSwgdXBkYXRlfSk7XG4gICAgdGhpcy5hcGkucmVkcmF3Um93cygpO1xuICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICB0aGlzLnNlbGVjdFJvdyhsYXN0Rm9jdXNlZENlbGwgPyBsYXN0Rm9jdXNlZENlbGwucm93SW5kZXggOiAocm93IHx8IDApLCBzZWxlY3Rpb24pO1xuICAgIH0sIHRoaXMuY29udGV4dENvdW50ID8gNTAwIDogMCk7XG4gIH1cblxuICB1cGRhdGVSb3dzKGRhdGE6IGFueVtdID0gW10pIHtcblxuICAgIGxldCB7YXBwbHlVcGRhdGUsIHJlbW92ZSwgdXBkYXRlfSA9IHRoaXMucHJvY2Vzc1NvZnREYXRhKGRhdGEpO1xuICAgIGlmICghYXBwbHlVcGRhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSB0aGlzLmNvbnRleHRDb3VudCAtIHJlbW92ZS5sZW5ndGg7XG4gICAgbGV0IGxhc3RGb2N1c2VkSW5kZXggPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpID8gdGhpcy5hcGkuZ2V0Rm9jdXNlZENlbGwoKS5yb3dJbmRleCA6IDA7XG5cbiAgICB0aGlzLmFwaS5hcHBseVRyYW5zYWN0aW9uKHtyZW1vdmUsIHVwZGF0ZX0pO1xuXG4gICAgc2V0VGltZW91dChfID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0Um93KGxhc3RGb2N1c2VkSW5kZXgpO1xuICAgIH0sIHRoaXMuY29udGV4dENvdW50ID8gNTAwIDogMCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmdldENvbHVtbnMoKS5maWx0ZXIoYyA9PiBjLmdldENvbElkKCkgIT09IHRoaXMucGlubmVkQ29sdW1uLmZpZWxkKTtcbiAgfVxuXG4gIGdldCBhcGkoKTogR3JpZEFwaSB7XG4gICAgcmV0dXJuIHRoaXMuYWdHcmlkPy5hcGk7XG4gIH1cblxuICBnZXQgaXNSZWFkeSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmFwaTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fZ3JpZENvdW50LnRvdGFsQ291bnQgJiYgKCF0aGlzLmFwaSB8fCAhT2JqZWN0LmtleXModGhpcy5hcGkuZ2V0RmlsdGVyTW9kZWwoKSkubGVuZ3RoKTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5Um93cygpIHtcbiAgICByZXR1cm4gIXRoaXMuX2dyaWRDb3VudC5yb3dDb3VudDtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tZ3JpZC1lbXB0eVwiIFtoaWRkZW5dPVwiIShpc0VtcHR5IHx8IGlzRW1wdHlSb3dzKVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZW1wdHlcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJlby1ncmlkLWhlYWRlclwiICpuZ0lmPVwic2hvd0hlYWRlclwiIFtoaWRkZW5dPVwiaXNFbXB0eVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48YWctZ3JpZC1hbmd1bGFyICNhZ0dyaWQgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW1cIiBbbW9kdWxlc109XCJtb2R1bGVzXCJcbiAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoaWRlLWhlYWRlcic6IHNob3dIZWFkZXIsICdlbmFibGUtZm9vdGVyJzogc2hvd0Zvb3RlciwgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCJcbiAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgKG1vZGVsVXBkYXRlZCk9XCJvbk1vZGVsVXBkYXRlZCgpXCJcbiAgICAgICAgICAgICAgICAgKGNlbGxGb2N1c2VkKT1cIm9uQ2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChjZWxsQ29udGV4dE1lbnUpPVwib25Db250ZXh0TWVudUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAoY2VsbENsaWNrZWQpPVwib25DZWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgKGNlbGxEb3VibGVDbGlja2VkKT1cIm9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cIm9uUmVhZHkoKVwiXG4gICAgICAgICAgICAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIj5cbjwvYWctZ3JpZC1hbmd1bGFyPlxuPGRpdiBjbGFzcz1cImVvLWdyaWQtZm9vdGVyXCIgKm5nSWY9XCJzaG93Rm9vdGVyXCIgW2hpZGRlbl09XCJpc0VtcHR5XCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5mb290ZXJcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2dyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUdwRixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUzlCLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUF3RHhCLElBQ0ksT0FBTyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElB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QUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNsRCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xpZW50U2lkZVJvd01vZGVsTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsJztcbmltcG9ydCB7Q2VsbFBvc2l0aW9uLCBDb2xEZWYsIENvbHVtbiwgR3JpZEFwaSwgR3JpZE9wdGlvbnMsIE1vZHVsZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtFb1VzZXIsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JpZFNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0NvZGVzeXN0ZW1GaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9jb2Rlc3lzdGVtLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtEYXRldGltZUZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9maWx0ZXJzL2RhdGV0aW1lLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9maWx0ZXJzL2R5bmFtaWMtbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdEZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9maWx0ZXJzL2xpc3QtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge09yZ2FuaXphdGlvbkZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9maWx0ZXJzL29yZ2FuaXphdGlvbi1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7SUxvYWRlcn0gZnJvbSAnLi9sb2FkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7QWdHcmlkQW5ndWxhcn0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2FuZ3VsYXInO1xuaW1wb3J0IHtkZWxheX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBHcmlkQ29tcG9uZW50IHtcblxuICBwdWJsaWMgbW9kdWxlczogTW9kdWxlW10gPSBbQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlXTtcbiAgc2Nyb2xsUG9zaXRpb24gPSAwO1xuXG4gIG92ZXJsYXlMb2FkaW5nVGVtcGxhdGU6IHN0cmluZztcbiAgcHJpdmF0ZSBjb21wb25lbnRzID0ge1xuICAgIGFnRGF0ZUlucHV0OiBEYXRldGltZUZpbHRlckNvbXBvbmVudCxcbiAgICBPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnQ6IE9yZ2FuaXphdGlvbkZpbHRlckNvbXBvbmVudCxcbiAgICBDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50OiBDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50LFxuICAgIER5bmFtaWNMaXN0RmlsdGVyQ29tcG9uZW50OiBEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudCxcbiAgICBMaXN0RmlsdGVyQ29tcG9uZW50OiBMaXN0RmlsdGVyQ29tcG9uZW50XG4gIH07XG5cbiAgcHJpdmF0ZSBfZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBfZ3JpZENvdW50OiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBwaW5uZWRDb2x1bW46IENvbERlZiA9IHtcbiAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICBmaWx0ZXI6IGZhbHNlLFxuICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICByZXNpemFibGU6IGZhbHNlLFxuICAgIHN1cHByZXNzSGVhZGVyTWVudUJ1dHRvbjogdHJ1ZSxcbiAgICBzdXBwcmVzc01vdmFibGU6IHRydWUsXG4gICAgc3VwcHJlc3NOYXZpZ2FibGU6IHRydWUsXG4gICAgc3VwcHJlc3NQYXN0ZTogdHJ1ZSxcbiAgICBzdXBwcmVzc1NpemVUb0ZpdDogdHJ1ZSxcbiAgICBwaW5uZWQ6ICdsZWZ0JyxcbiAgICB3aWR0aDogMyxcbiAgICBtYXhXaWR0aDogMyxcbiAgICBmaWVsZDogJ19fc2VsZWN0aW9uRmllbGQnLFxuICAgIHZhbHVlR2V0dGVyOiAoKSA9PiAnJ1xuICB9O1xuXG4gIEBWaWV3Q2hpbGQoJ2FnR3JpZCcpIGFnR3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG5cbiAgQE91dHB1dCgpIGVvR3JpZENvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW9HcmlkRm9jdXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlb0dyaWRDZWxsQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVvR3JpZERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlb0dyaWRDb250ZXh0TWVudUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlb0dyaWRDb2x1bW5SZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBjb2xSZXNpemVEZWJvdW5jZXIgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGNhbGN1bGF0ZURlYm91bmNlciA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgZm9jdXNlZFJvd0lEID0gJyc7XG5cbiAgQElucHV0KCkgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBASW5wdXQoKSBzZWxlY3Rpb25MaW1pdDogbnVtYmVyO1xuICBASW5wdXQoKSBzZWxlY3RlZElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpemVUb0ZpdCA9IGZhbHNlO1xuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0hlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Rm9vdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxvYWRlckNvbnRlbnQ6IElMb2FkZXIgPSB7c2hvdzogZmFsc2UsIGltYWdlOiBudWxsLCB0ZXh0OiBudWxsfTtcbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBncmlkT3B0aW9ucyhncmlkT3B0aW9uczogR3JpZE9wdGlvbnMgfCBhbnkpIHtcbiAgICBjb25zdCBvcHRpb25zID0gZ3JpZE9wdGlvbnM/Ll9ncmlkT3B0aW9ucyB8fCBncmlkT3B0aW9ucztcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2dyaWRPcHRpb25zLCBvcHRpb25zLCB7XG4gICAgICBjb250ZXh0OiBPYmplY3QuYXNzaWduKHRoaXMuX2dyaWRPcHRpb25zLmNvbnRleHQsIG9wdGlvbnMuY29udGV4dCksXG4gICAgICBjb2x1bW5EZWZzOiBvcHRpb25zLmNvbHVtbkRlZnMgPyBbdGhpcy5waW5uZWRDb2x1bW5dLmNvbmNhdChvcHRpb25zLmNvbHVtbkRlZnMpIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIGdldCBjb250ZXh0Q291bnQoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPT09ICdudW1iZXInID8gdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50IDogdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50LnZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbnRleHRSZWxhdGlvbigpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9PT0gJ251bWJlcicgPyAnZXEnIDogdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50LnJlbGF0aW9uO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLmFsdC5zaGlmdC5jJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5jb250cm9sLnNoaWZ0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYWx0LmMnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmNvbnRyb2wuYycsIFsnJGV2ZW50J10pXG4gIGNvcHlDZWxsSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuZ3JpZEFwaS5jb3B5VG9DbGlwYm9hcmQoZXZlbnQsIHRoaXMuYWdHcmlkLCB0aGlzLmdyaWRPcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkQXBpOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuXG4gICAgdGhpcy5fZ3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb250ZXh0OiBncmlkQXBpLmdldENvbnRleHQoKSxcbiAgICAgIGFuaW1hdGVSb3dzOiB0cnVlLFxuICAgICAgaGVhZGVySGVpZ2h0OiAzMCxcbiAgICAgIHJvd0hlaWdodDogNDgsXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgcm93U2VsZWN0aW9uOiAnbXVsdGlwbGUnLFxuICAgICAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICBzdXBwcmVzc01vdmFibGVDb2x1bW5zOiB0cnVlLFxuICAgICAgc3VwcHJlc3NDb250ZXh0TWVudTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzTm9Sb3dzT3ZlcmxheTogdHJ1ZSxcbiAgICAgIG92ZXJsYXlMb2FkaW5nVGVtcGxhdGU6ICcgJyxcbiAgICAgIG92ZXJsYXlOb1Jvd3NUZW1wbGF0ZTogJyAnLFxuICAgICAgZ2V0Um93SWQ6IChyb3cpID0+IHJvdz8uZGF0YT8uaWQgfHwgcm93IHx8IG51bGwsXG4gICAgICBnZXRMb2NhbGVUZXh0OiAoe2tleSwgZGVmYXVsdFZhbHVlLCB2YXJpYWJsZVZhbHVlc30pID0+IHtcbiAgICAgICAgbGV0IGdyaWRLZXkgPSAnZW8ucmVzdWx0bGlzdC5ncmlkLicgKyBrZXk7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KGdyaWRLZXksIHZhcmlhYmxlVmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIH52YWx1ZS5pbmRleE9mKGdyaWRLZXkpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgICB9LFxuICAgICAgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzLFxuICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VycyBob3Jpem9udGFsIHNjcm9sbCByZXNldCBhZnRlciBzb3J0aW5nIHdpdGggYSBkZWxheS5cbiAgICAgICAqL1xuICAgICAgcG9zdFNvcnRSb3dzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGVib3VuY2VyLnBpcGUoXG4gICAgICAgICAgZGVsYXkoNzUwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0SG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubG9hZGluZ01lc3NhZ2UoKTtcbiAgICB0aGlzLmdldFVzZXIoKTtcblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMudGFza3MkXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHRhc2tzKSA9PiB0aGlzLmFwaT8udXBkYXRlR3JpZE9wdGlvbnMoe3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246ICEhdGFza3MubGVuZ3RoLCBzdXBwcmVzc0NlbGxGb2N1czogISF0YXNrcy5sZW5ndGh9KSk7XG5cbiAgICB0aGlzLmNvbFJlc2l6ZURlYm91bmNlci5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwMDApKVxuICAgICAgLnN1YnNjcmliZShjb2wgPT4gdGhpcy5lb0dyaWRDb2x1bW5SZXNpemVkLmVtaXQoY29sKSk7XG5cbiAgICB0aGlzLmNhbGN1bGF0ZURlYm91bmNlci5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2FsY3VsYXRlUm93Q291bnQoKSk7XG4gIH1cblxuICBsb2FkaW5nTWVzc2FnZSgpIHtcbiAgICBsZXQgbG9hZGVyQ29udGVudCA9ICcnO1xuXG4gICAgaWYgKHRoaXMubG9hZGVyQ29udGVudC5zaG93KSB7XG4gICAgICBpZiAodGhpcy5sb2FkZXJDb250ZW50LmltYWdlKSB7XG4gICAgICAgIGxvYWRlckNvbnRlbnQgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyXCI+PGltZyBbc3JjXT1cIiR7dGhpcy5sb2FkZXJDb250ZW50LmltYWdlfVwiIGFsdD1cImxvYWRlciBpbWFnZVwiPjwvc3Bhbj5gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9hZGVyQ29udGVudCA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4ke3RoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5sb2FkZXJDb250ZW50LnRleHQpfTwvc3Bhbj5gO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm92ZXJsYXlMb2FkaW5nVGVtcGxhdGUgPSBsb2FkZXJDb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyOiBFb1VzZXIpID0+IHtcbiAgICAgICh0aGlzLmdyaWRPcHRpb25zIHx8IHRoaXMuX2dyaWRPcHRpb25zKS5lbmFibGVSdGwgPSAodXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcpO1xuICAgICAgdGhpcy5waW5uZWRDb2x1bW4ucGlubmVkID0gKHVzZXIudWlEaXJlY3Rpb24gPT09ICdydGwnKSA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVJvd0NvdW50KCkge1xuICAgIGxldCByb3dDb3VudCA9IDA7XG4gICAgbGV0IHRvdGFsQ291bnQgPSB0aGlzLmNvbnRleHRDb3VudDtcbiAgICBsZXQgcm93SW5kZXggPSB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQucm93SW5kZXg7XG4gICAgbGV0IHNlbGVjdGlvbiA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5zZWxlY3Rpb247XG5cbiAgICBpZiAoIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpICYmIHRoaXMuYXBpPy5nZXRHcmlkT3B0aW9uKCdyb3dEYXRhJykpIHtcbiAgICAgIHRoaXMuYXBpLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXIobiA9PiBuLmdyb3VwIHx8IHJvd0NvdW50KyspO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3dDb3VudCA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCB8fCAwO1xuICAgIH1cblxuICAgIC8vIHJldHJpZXZlIHRoZSBvYmplY3RJZCBmcm9tIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIGFuZCBzZWxlY3QgdGhlIGNvcnJlc3BvbmRpbmcgcm93IGlmIGl0IGV4aXN0c1xuICAgIGNvbnN0IHtxdWVyeVBhcmFtc30gPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgIHRoaXMuc2VsZWN0ZWRJZCA9IHF1ZXJ5UGFyYW1zLm9iamVjdElkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEuZmluZEluZGV4KHJvdyA9PiByb3cuaWQgPT09IHRoaXMuc2VsZWN0ZWRJZCk7XG4gICAgICBpZiAoc2VsZWN0ZWRSb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RSb3coc2VsZWN0ZWRSb3dJbmRleCB8fCAwLCBzZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RGaXJzdCAmJiAhdGhpcy5hcGk/LmlzRGVzdHJveWVkKCkgJiYgIXRoaXMuYXBpLmdldEZvY3VzZWRDZWxsKCkgJiYgKHJvd0luZGV4ICE9PSBudWxsIHx8ICF0aGlzLmZvY3VzZWRSb3dJRCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3RSb3cocm93SW5kZXggfHwgMCwgc2VsZWN0aW9uKSwgMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLl9ncmlkQ291bnQgPSB7dG90YWxDb3VudCwgcm93Q291bnQsIHJlbGF0aW9uOiB0aGlzLmNvbnRleHRSZWxhdGlvbn07XG4gICAgdGhpcy5lb0dyaWRDb3VudENoYW5nZWQuZW1pdCh0aGlzLl9ncmlkQ291bnQpO1xuICB9XG5cbiAgdXBkYXRlRm9jdXMoaWQgPSB0aGlzLmZvY3VzZWRSb3dJRCkge1xuICAgIGlmICghdGhpcy5hcGk/LmlzRGVzdHJveWVkKCkpIHtcbiAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpO1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5hcGkuZ2V0Um93Tm9kZShpZCk7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5maWx0ZXJBY3RpdmUgJiYgKGNlbGwgJiYgY2VsbC5yb3dJbmRleCkgIT09IChyb3cgJiYgcm93LnJvd0luZGV4KSkge1xuICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgdGhpcy5hcGkuc2V0Rm9jdXNlZENlbGwocm93LnJvd0luZGV4LCAodGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzWzFdIGFzIENvbERlZikuZmllbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbENsaWNrZWQoJGV2ZW50KSB7XG5cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIGlmICgkZXZlbnQuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ3JvdXRlci1saW5rLWNlbGwnKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKCRldmVudC5ldmVudCwgJ2FnLXJvdycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lb0dyaWRDZWxsQ2xpY2suZW1pdCgkZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KSB7XG5cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBpZiAoISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICAgIHRoaXMuZW9HcmlkRG91YmxlQ2xpY2suZW1pdCgkZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VEb3duKCRldmVudDogTW91c2VFdmVudCB8IGFueSkge1xuICAgIGlmICh0aGlzLmFwaT8uZ2V0R3JpZE9wdGlvbignc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbicpKSB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkge1xuICAgICAgICB0aGlzLmFwaT8udXBkYXRlR3JpZE9wdGlvbnMoe3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IGZhbHNlLCBzdXBwcmVzc0NlbGxGb2N1czogZmFsc2V9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RFdmVudCgkZXZlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEV2ZW50KCRldmVudDogTW91c2VFdmVudCB8IGFueSkge1xuICAgIGNvbnN0IGNvbElkID0gJGV2ZW50LmNvbXBvc2VkUGF0aD8uKCkuZmluZCgoZWwpID0+IGVsPy5nZXRBdHRyaWJ1dGUoJ2NvbC1pZCcpKT8uZ2V0QXR0cmlidXRlKCdjb2wtaWQnKTtcbiAgICBjb25zdCByb3dJZCA9ICRldmVudC5jb21wb3NlZFBhdGg/LigpLmZpbmQoKGVsKSA9PiBlbD8uZ2V0QXR0cmlidXRlKCdyb3ctaWQnKSk/LmdldEF0dHJpYnV0ZSgncm93LWlkJyk7XG4gICAgaWYgKGNvbElkKSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLmFwaT8uZ2V0Um93Tm9kZShyb3dJZCk7XG4gICAgICAvL3NlbGVjdCByb3cgb25seSBvbiBsZWZ0IGNsaWNrXG4gICAgICB0aGlzLnNlbGVjdFJvdyhyb3cucm93SW5kZXgsICRldmVudC5idXR0b24gPT09IDAgPyBudWxsIDogW10sICEkZXZlbnQuY3RybEtleSk7XG4gICAgICBpZiAoJGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgICAvL29wZW4gY29udGV4dCBtZW51IG9uIHJpZ2h0IGNsaWNrXG4gICAgICAgIHRoaXMub25Db250ZXh0TWVudUNsaWNrZWQoe3Jvd0luZGV4OiByb3cucm93SW5kZXgsIG5vZGU6IHJvdywgZGF0YTogcm93LmRhdGF9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNlbGxGb2N1c2VkKCRldmVudCkge1xuICAgIGlmICh0aGlzLmFwaS5nZXRHcmlkT3B0aW9uKCdzdXBwcmVzc0NlbGxGb2N1cycpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVGb2N1cygpO1xuICAgIH1cbiAgICBpZiAoJGV2ZW50LnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAkZXZlbnQuZm9jdXNlZE5vZGUgPSB0aGlzLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KCRldmVudC5yb3dJbmRleCk7XG4gICAgICBpZiAoJGV2ZW50LmZvY3VzZWROb2RlICYmICEkZXZlbnQuZm9jdXNlZE5vZGUuZ3JvdXAgJiYgJGV2ZW50LmZvY3VzZWROb2RlLmRhdGEpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkUm93SUQgPSAkZXZlbnQuZm9jdXNlZE5vZGUuaWQ7XG4gICAgICAgIHRoaXMuZW9HcmlkRm9jdXNDaGFuZ2VkLmVtaXQoJGV2ZW50LmZvY3VzZWROb2RlLmRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29udGV4dE1lbnVDbGlja2VkKCRldmVudCkge1xuICAgIGlmICgkZXZlbnQucm93SW5kZXggIT09IG51bGwgJiYgISRldmVudC5ub2RlLmdyb3VwICYmICRldmVudC5kYXRhKSB7XG4gICAgICBsZXQgc2VsZWN0ZWROb2RlcyA9IHRoaXMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAobiA9PiBuLmRhdGEpLmZpbHRlcihkID0+IGQpO1xuICAgICAgaWYgKHNlbGVjdGVkTm9kZXMubGVuZ3RoICYmIHNlbGVjdGVkTm9kZXMuc29tZShuID0+IG4uaWQgPT09ICRldmVudC5kYXRhLmlkKSkge1xuICAgICAgICB0aGlzLmVvR3JpZENvbnRleHRNZW51Q2xpY2suZW1pdChzZWxlY3RlZE5vZGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW9HcmlkQ29udGV4dE1lbnVDbGljay5lbWl0KFskZXZlbnQuZGF0YV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpIHtcbiAgICBsZXQgc2VsZWN0ZWROb2RlcyA9IHRoaXMuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAobiA9PiBuLmRhdGEpLmZpbHRlcihkID0+IGQpO1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpbWl0ICYmIHNlbGVjdGVkTm9kZXMubGVuZ3RoID4gdGhpcy5zZWxlY3Rpb25MaW1pdCkge1xuICAgICAgdGhpcy5zZWxlY3RSb3codGhpcy5hcGkuZ2V0Rm9jdXNlZENlbGwoKS5yb3dJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGVkTm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uUmVzaXplZCgkZXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LmNvbHVtbikge1xuICAgICAgdGhpcy5jb2xSZXNpemVEZWJvdW5jZXIubmV4dCgkZXZlbnQuY29sdW1uKTtcbiAgICB9XG4gIH1cblxuICBvbk1vZGVsVXBkYXRlZCgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZURlYm91bmNlci5uZXh0KHt9KTtcbiAgfVxuXG4gIG9uUmVhZHkoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZVRvRml0KSB7XG4gICAgICB0aGlzLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgZ3JpZCBpcyBzb3J0ZWQuXG4gICovXG4gIG9uU29ydENoYW5nZWQoZXZlbnQpIHtcbiAgICB0aGlzLnNjcm9sbFBvc2l0aW9uID0gZXZlbnQuYXBpLmdldEhvcml6b250YWxQaXhlbFJhbmdlKCkubGVmdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRoZSBncmlkIGhvcml6b250YWxseSB0byBhIHByZWRlZmluZWQgaW5pdGlhbCBwb3NpdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGdyaWQgaXMgc29ydGVkLlxuICAgKi9cbiAgc2V0SG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGdyaWRCb2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwtdmlld3BvcnQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoZ3JpZEJvZHkpIHtcbiAgICAgIGdyaWRCb2R5LnNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbFBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIG9uUXVpY2tGaWx0ZXJDaGFuZ2VkKCRldmVudCkge1xuICAgIHRoaXMuYXBpLnNldFF1aWNrRmlsdGVyKCRldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogbnVtYmVyIHwgc3RyaW5nLCBzZWxlY3Rpb24/OiBudW1iZXJbXSwgY2xlYXJTZWxlY3Rpb24gPSB0cnVlLCBwb3NpdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuYXBpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgcm93Tm9kZSA9IHR5cGVvZiByb3cgPT09ICdudW1iZXInID8gIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpICYmIHRoaXMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgocm93KSA6IHRoaXMuYXBpLmdldFJvd05vZGUocm93KTtcbiAgICBsZXQgaW5kZXggPSByb3dOb2RlID8gcm93Tm9kZS5yb3dJbmRleCA6IDA7XG5cbiAgICBpZiAocm93Tm9kZSAmJiByb3dOb2RlLmRhdGEpIHtcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgc2VsZWN0aW9uLmZvckVhY2goKHJvd0luZGV4LCBpKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3dJbmRleCkuc2V0U2VsZWN0ZWQodHJ1ZSwgaSA9PT0gMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuc2VsZWN0aW9uID0gbnVsbDsgLy9yZXNldCBpbml0aWFsIHNlbGVjdGlvblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlLCBjbGVhclNlbGVjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBpLnNldEZvY3VzZWRDZWxsKGluZGV4LCAodGhpcy5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzWzFdIGFzIENvbERlZikuZmllbGQpO1xuICAgICAgdGhpcy5zY3JvbGxUb1JvdyhpbmRleCwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0luZGV4ID0gbnVsbDsgLy9yZXNldCBpbml0aWFsIHJvd0luZGV4XG4gICAgfSBlbHNlIGlmIChpbmRleCA+IDAgJiYgdGhpcy5jb250ZXh0Q291bnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0Um93KC0taW5kZXgsIHNlbGVjdGlvbiwgY2xlYXJTZWxlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuYXBpPy5pc0Rlc3Ryb3llZCgpKSB7XG4gICAgICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW9HcmlkRm9jdXNDaGFuZ2VkLmVtaXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG9Sb3coaW5kZXg/OiBudW1iZXIsIHBvc2l0aW9uID0gbnVsbCkge1xuICAgIHRoaXMuYXBpLmVuc3VyZUluZGV4VmlzaWJsZShpbmRleCA9PT0gdW5kZWZpbmVkID8gKHRoaXMuYXBpLmdldEZvY3VzZWRDZWxsKCkgPyB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpLnJvd0luZGV4IDogMCkgOiBpbmRleCwgcG9zaXRpb24pO1xuICB9XG5cbiAgc2VsZWN0Um93QnlJZChpZCwgcG9zaXRpb24gPSAnJykge1xuICAgIGNvbnN0IHJvd05vZGUgPSBpZCAmJiB0aGlzLmFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICBpZiAocm93Tm9kZSkge1xuICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZCh0cnVlKTtcbiAgICAgIHRoaXMuc2VsZWN0Um93KHJvd05vZGUucm93SW5kZXgsIFtdLCB0cnVlLCBwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29sdW1uRGVmcyhjb2x1bW5EZWZzOiBDb2xEZWZbXSkge1xuICAgIHRoaXMuYXBpLnNldEdyaWRPcHRpb24oJ2NvbHVtbkRlZnMnLCBjb2x1bW5EZWZzID8gW3RoaXMucGlubmVkQ29sdW1uXS5jb25jYXQoY29sdW1uRGVmcykgOiBudWxsKTtcbiAgfVxuXG4gIHNldFJvd0RhdGEoZGF0YTogYW55W10gPSBbXSwgcm93PzogYW55KSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gZGF0YS5sZW5ndGg7XG4gICAgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0luZGV4ID0gcm93O1xuICAgIHRoaXMuYXBpLmNsZWFyRm9jdXNlZENlbGwoKTtcbiAgICB0aGlzLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTb2Z0RGF0YShkYXRhOiBhbnlbXSA9IFtdKSB7XG4gICAgbGV0IHJlbW92ZSA9IGRhdGEuZmlsdGVyKGkgPT4gaS5fX3JlbW92ZWQpLm1hcChpID0+IHtcbiAgICAgIGRlbGV0ZSBpLl9fcmVtb3ZlZDtcbiAgICAgIHJldHVybiBpO1xuICAgIH0pO1xuXG4gICAgbGV0IHVwZGF0ZSA9IGRhdGEuZmlsdGVyKGkgPT4gaS5fX3VwZGF0ZWQpLm1hcChpID0+IHtcbiAgICAgIGRlbGV0ZSBpLl9fdXBkYXRlZDtcbiAgICAgIHJldHVybiBpO1xuICAgIH0pO1xuXG4gICAgLy8gZmluYWxseSByZW1vdmUgaXRlbXMgZnJvbSBhcnJheVxuICAgIHJlbW92ZS5mb3JFYWNoKGkgPT4gZGF0YS5zcGxpY2UoZGF0YS5pbmRleE9mKGkpLCAxKSk7XG5cbiAgICBsZXQgYXBwbHlVcGRhdGUgPSByZW1vdmUubGVuZ3RoIHx8IHVwZGF0ZS5sZW5ndGg7XG5cbiAgICByZXR1cm4ge2FwcGx5VXBkYXRlLCByZW1vdmUsIHVwZGF0ZX07XG4gIH1cblxuICB1cGRhdGVSb3dEYXRhKGRhdGE6IGFueVtdID0gW10sIHJvdz86IGFueSwgc2VsZWN0aW9uPzogbnVtYmVyW10pIHtcblxuICAgIGxldCB7YXBwbHlVcGRhdGUsIHJlbW92ZSwgdXBkYXRlfSA9IHRoaXMucHJvY2Vzc1NvZnREYXRhKGRhdGEpO1xuICAgIGlmICghYXBwbHlVcGRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFJvd0RhdGEoZGF0YSwgcm93KTtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSBkYXRhLmxlbmd0aDtcbiAgICBsZXQgbGFzdEZvY3VzZWRDZWxsOiBDZWxsUG9zaXRpb24gPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpO1xuICAgIHRoaXMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oe3JlbW92ZSwgdXBkYXRlfSk7XG4gICAgdGhpcy5hcGkucmVkcmF3Um93cygpO1xuICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICB0aGlzLnNlbGVjdFJvdyhsYXN0Rm9jdXNlZENlbGwgPyBsYXN0Rm9jdXNlZENlbGwucm93SW5kZXggOiAocm93IHx8IDApLCBzZWxlY3Rpb24pO1xuICAgIH0sIHRoaXMuY29udGV4dENvdW50ID8gNTAwIDogMCk7XG4gIH1cblxuICB1cGRhdGVSb3dzKGRhdGE6IGFueVtdID0gW10pIHtcblxuICAgIGxldCB7YXBwbHlVcGRhdGUsIHJlbW92ZSwgdXBkYXRlfSA9IHRoaXMucHJvY2Vzc1NvZnREYXRhKGRhdGEpO1xuICAgIGlmICghYXBwbHlVcGRhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSB0aGlzLmNvbnRleHRDb3VudCAtIHJlbW92ZS5sZW5ndGg7XG4gICAgbGV0IGxhc3RGb2N1c2VkSW5kZXggPSB0aGlzLmFwaS5nZXRGb2N1c2VkQ2VsbCgpID8gdGhpcy5hcGkuZ2V0Rm9jdXNlZENlbGwoKS5yb3dJbmRleCA6IDA7XG5cbiAgICB0aGlzLmFwaS5hcHBseVRyYW5zYWN0aW9uKHtyZW1vdmUsIHVwZGF0ZX0pO1xuXG4gICAgc2V0VGltZW91dChfID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0Um93KGxhc3RGb2N1c2VkSW5kZXgpO1xuICAgIH0sIHRoaXMuY29udGV4dENvdW50ID8gNTAwIDogMCk7XG4gIH1cblxuICBnZXQgY29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmdldENvbHVtbnMoKS5maWx0ZXIoYyA9PiBjLmdldENvbElkKCkgIT09IHRoaXMucGlubmVkQ29sdW1uLmZpZWxkKTtcbiAgfVxuXG4gIGdldCBhcGkoKTogR3JpZEFwaSB7XG4gICAgcmV0dXJuIHRoaXMuYWdHcmlkPy5hcGk7XG4gIH1cblxuICBnZXQgaXNSZWFkeSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmFwaTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fZ3JpZENvdW50LnRvdGFsQ291bnQgJiYgKCF0aGlzLmFwaSB8fCAhT2JqZWN0LmtleXModGhpcy5hcGkuZ2V0RmlsdGVyTW9kZWwoKSkubGVuZ3RoKTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5Um93cygpIHtcbiAgICByZXR1cm4gIXRoaXMuX2dyaWRDb3VudC5yb3dDb3VudDtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tZ3JpZC1lbXB0eVwiIFtoaWRkZW5dPVwiIShpc0VtcHR5IHx8IGlzRW1wdHlSb3dzKVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZW1wdHlcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJlby1ncmlkLWhlYWRlclwiICpuZ0lmPVwic2hvd0hlYWRlclwiIFtoaWRkZW5dPVwiaXNFbXB0eVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48YWctZ3JpZC1hbmd1bGFyICNhZ0dyaWQgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW1cIiBbbW9kdWxlc109XCJtb2R1bGVzXCJcbiAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoaWRlLWhlYWRlcic6IHNob3dIZWFkZXIsICdlbmFibGUtZm9vdGVyJzogc2hvd0Zvb3RlciwgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGh9XCJcbiAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgKG1vZGVsVXBkYXRlZCk9XCJvbk1vZGVsVXBkYXRlZCgpXCJcbiAgICAgICAgICAgICAgICAgKGNlbGxGb2N1c2VkKT1cIm9uQ2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChjZWxsQ29udGV4dE1lbnUpPVwib25Db250ZXh0TWVudUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAoY2VsbENsaWNrZWQpPVwib25DZWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgKGNlbGxEb3VibGVDbGlja2VkKT1cIm9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cIm9uUmVhZHkoKVwiXG4gICAgICAgICAgICAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIj5cbjwvYWctZ3JpZC1hbmd1bGFyPlxuPGRpdiBjbGFzcz1cImVvLWdyaWQtZm9vdGVyXCIgKm5nSWY9XCJzaG93Rm9vdGVyXCIgW2hpZGRlbl09XCJpc0VtcHR5XCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5mb290ZXJcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|