ngx-sumax-erp-components 1.14.0 → 1.14.1
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/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs +3 -4
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs +3 -3
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-paginable/sc-ag-grid-paginable.component.mjs +3 -3
- package/fesm2022/ngx-sumax-erp-components.mjs +6 -7
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs
CHANGED
|
@@ -15,11 +15,10 @@ export class ScCellRenderButtonService {
|
|
|
15
15
|
this._handlerButtonAction$.next(option);
|
|
16
16
|
}
|
|
17
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRenderButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRenderButtonService
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRenderButtonService }); }
|
|
19
19
|
}
|
|
20
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRenderButtonService, decorators: [{
|
|
21
|
-
type: Injectable
|
|
22
|
-
args: [{ providedIn: 'root' }]
|
|
21
|
+
type: Injectable
|
|
23
22
|
}] });
|
|
24
23
|
class ScCellRenderBase {
|
|
25
24
|
isFunctionDisabled(value) {
|
|
@@ -248,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
248
247
|
class: 'd-flex justify-content-center sc-cell-render-button',
|
|
249
248
|
}, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\n <button\n matRipple\n class=\"btn sc-cell-render-button-action\"\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\n [matMenuTriggerFor]=\"panel.menu\"\n [matTooltip]=\"getTooltipOption(option).label\"\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\n [attr.aria-label]=\"getTooltipOption(option).label\">\n <em\n class=\"p-0\"\n [class]=\"\n (option?.iconOption?.icon ?? '') +\n ' ' +\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\n \"></em>\n </button>\n\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\n </ng-container>\n </ng-container>\n\n <ng-template #buttonPrincipal>\n <button\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\n class=\"btn sc-cell-render-button-action\"\n matRipple\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\n type=\"button\"\n [matTooltip]=\"getTooltipOption(option).label\"\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\n [attr.aria-label]=\"getTooltipOption(option).label\">\n <em\n class=\"pt-0\"\n [class]=\"\n (option?.iconOption?.icon ?? '') +\n ' ' +\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\n \"></em>\n </button>\n </ng-template>\n</ng-container>\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
|
|
250
249
|
}] });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBSXZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBZ0U7UUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVZVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxN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VixZQUFZLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBTTtRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFrQjtRQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQy9CLElBQUksT0FBTyxJQUFJLElBQUksVUFBVTtnQkFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBaUM7UUFDaEQsSUFBSSxPQUFPLGFBQWEsRUFBRSxhQUFhLEtBQUssVUFBVTtZQUNwRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBOztZQUVoRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDeEMsQ0FBQzsrR0EzQ1UsNkJBQTZCO21HQUE3Qiw2QkFBNkIsME1Dak4xQyxndEVBbURBLHF3Q0RnR2Esb0JBQW9COzs0RkE4RHBCLDZCQUE2QjtrQkFqQ3pDLFNBQVM7MkJBMkJGO3dCQUNKLE1BQU0sRUFBRSxzQkFBc0I7d0JBQzlCLEtBQUssRUFBRSxxREFBcUQ7cUJBQzdELGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWdCdXR0b25BZ0dyaWQsIERpc2FibGVkRnVjLCBFbnVtQnV0dG9uVHlwZSwgSGlkZUZ1YywgU3ViTWVudSwgVG9vbHRpcE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL0lTY0FnR3JpZCc7XG5cbmxldCBzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWQgPSAwO1xubGV0IHNjTWVudVBhbmVsTmV4dElkID0gMDtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfaGFuZGxlckJ1dHRvbkFjdGlvbiQgPSBuZXcgU3ViamVjdDx7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW47XG4gIH0+KCk7XG4gIGhhbmRsZXJCdXR0b25BY3Rpb24kID0gdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgYnV0dG9uQWN0aW9uKG9wdGlvbjogeyBpbmRleDogbnVtYmVyOyBhY3Rpb246IHN0cmluZzsgaXNSaWdodENsaWNrOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVyQnV0dG9uQWN0aW9uJC5uZXh0KG9wdGlvbik7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5hYnN0cmFjdCBjbGFzcyBTY0NlbGxSZW5kZXJCYXNlIHtcbiAgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcblxuICBpc0Z1bmN0aW9uRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBEaXNhYmxlZEZ1YyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGlzRnVuY3Rpb25IaWRlKHZhbHVlOiBib29sZWFuIHwgSGlkZUZ1Yyk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYy1tZW51LXBhbmVsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LW1lbnUgI21lbnU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJNZW51IG9mIHN1Yk1lbnVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUoc3ViTWVudS5oaWRlID8/IGZhbHNlKVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiIXN1Yk1lbnUuc3VibWVudTsgZWxzZSBicmFuY2hcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChzdWJNZW51Py5kaXNhYmxlZClcIlxuICAgICAgICAgICAgW2NsYXNzLnNjLW1lbnUtcGFuZWwtYm90dG9tXT1cInN1Yk1lbnU/Lmljb24gIT09IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkFjdGlvbkVtaXQoc3ViTWVudT8uYWN0aW9uQ29kZSA/PyAnJylcIlxuICAgICAgICAgICAgXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrT3Zlck1lbnUoJGV2ZW50LCBzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYS1sZ1wiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xuICAgICAgICAgICAgICAgIHN1Yk1lbnUuaWNvbiArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgPyAndGV4dC1tdXRlZCdcbiAgICAgICAgICAgICAgICAgIDogc3ViTWVudT8uaWNvbkNsYXNzID8/ICcnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtYXgtbGFiZWxcIj57eyBzdWJNZW51Py5sYWJlbCA/PyAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnJhbmNoPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJpbm5lclBhbmVsLm1lbnVcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChzdWJNZW51Py5kaXNhYmxlZClcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAqbmdJZj1cInN1Yk1lbnU/Lmljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtbGdcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICdzYy1tZW51LXBhbmVsLWljb24gJyArXG4gICAgICAgICAgICAgICAgICBzdWJNZW51Lmljb24gK1xuICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQoc3ViTWVudT8uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgID8gJ3RleHQtbXV0ZWQnXG4gICAgICAgICAgICAgICAgICAgIDogc3ViTWVudT8uaWNvbkNsYXNzID8/ICcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtYXgtbGFiZWxcIj57eyBzdWJNZW51Py5sYWJlbCA/PyAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8c2MtbWVudS1wYW5lbFxuICAgICAgICAgICAgICAjaW5uZXJQYW5lbFxuICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXG4gICAgICAgICAgICAgIChvbkJ1dHRvbkFjdGlvbik9XCJvbkJ1dHRvbkFjdGlvbkVtaXQoc3ViTWVudT8uYWN0aW9uQ29kZSA/PyAnJylcIlxuICAgICAgICAgICAgICBbc3ViTWVudXNdPVwic3ViTWVudS5zdWJtZW51ID8/IFtdXCJcbiAgICAgICAgICAgID48L3NjLW1lbnUtcGFuZWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1tZW51PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc2MtbWVudS1wYW5lbC1ib3R0b20ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuc2MtbWVudS1wYW5lbC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDEuNnJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgY3Vyc29yOiBuby1kcm9wICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tpZF0nOiAnaWRTY01lbnVQYW5lbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNjTWVudVBhbmVsQ29tcG9uZW50IGV4dGVuZHMgU2NDZWxsUmVuZGVyQmFzZSB7XG4gIGlkU2NNZW51UGFuZWwgPSBgc2MtbWVudS1wYW5lbC0keysrc2NNZW51UGFuZWxOZXh0SWR9YDtcblxuICBAVmlld0NoaWxkKCdtZW51JywgeyBzdGF0aWM6IHRydWUgfSkgbWVudSE6IE1hdE1lbnU7XG5cbiAgQElucHV0KCkgc3ViTWVudXM6IFN1Yk1lbnVbXSA9IFtdO1xuICBASW5wdXQoKSBvdmVycmlkZSBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2U6IFNjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uRW1pdChhY3Rpb246IHN0cmluZywgaXNSaWdodENsaWNrOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyYW1zPy5ub2RlLnJvd0luZGV4ID8/IC0xO1xuICAgIHRoaXMuX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UuYnV0dG9uQWN0aW9uKHtcbiAgICAgIGluZGV4LFxuICAgICAgYWN0aW9uLFxuICAgICAgaXNSaWdodENsaWNrXG4gICAgfSk7XG4gIH1cbiAgb25SaWdodENsaWNrT3Zlck1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uQnV0dG9uQWN0aW9uRW1pdChhY3Rpb24sIHRydWUpO1xuICB9XG5cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogMC4xZW0gMWVtO1xuICAgICAgfVxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24ge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgcGFkZGluZzogMCAwLjVlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAuMWVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICAgIC5zYy1jZWxsLXJlbmRlci1idXR0b24tYWN0aW9uIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEuN2VtO1xuICAgICAgICBoZWlnaHQ6IDEuN2VtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS43ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICB9XG4gICAgICBidXR0b246ZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IG5vLWRyb3A7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbaWRdJzogJ2lkU2NDZWxsUmVuZGVyQnV0dG9uJyxcbiAgICBjbGFzczogJ2QtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbicsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2VsbFJlbmRlcmVyQnV0dG9uQ29tcG9uZW50XG4gIGV4dGVuZHMgU2NDZWxsUmVuZGVyQmFzZVxuICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB7XG4gIGlkU2NDZWxsUmVuZGVyQnV0dG9uID0gYHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi0keysrc2NDZWxsUmVuZGVyQnV0dG9uTmV4dElkfWA7XG5cbiAgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcblxuICBjb25maWdCdXR0b25zOiBDb25maWdCdXR0b25BZ0dyaWRbXSA9IFtdO1xuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLmNvbmZpZ0J1dHRvbnMgPVxuICAgICAgcGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50Ll9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZDtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uKHR5cGVCdXR0b246IEVudW1CdXR0b25UeXBlIHwgc3RyaW5nLCBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0eXBlQnV0dG9uKVxuICAgICAgdGhpcy5wYXJhbXM/LmNvbnRleHQuY29tcG9uZW50UGFyZW50Lm9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChcbiAgICAgICAgdGhpcy5wYXJhbXMubm9kZS5yb3dJbmRleCxcbiAgICAgICAgdHlwZUJ1dHRvbixcbiAgICAgICAgaXNSaWdodENsaWNrXG4gICAgICApO1xuICB9XG5cbiAgcmVmcmVzaChfOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGhpZGVTdWJNZW51KHN1Yk1lbnU6IFN1Yk1lbnVbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChzdWJNZW51Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gc3ViTWVudS5ldmVyeSgoeyBoaWRlIH0pID0+IHtcbiAgICAgIGlmIChoaWRlID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh0eXBlb2YgaGlkZSA9PSAnZnVuY3Rpb24nKSByZXR1cm4gaGlkZSgpO1xuICAgICAgcmV0dXJuIGhpZGU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRUb29sdGlwT3B0aW9uKGNvbmZpZ0J1dHRvbnM6IENvbmZpZ0J1dHRvbkFnR3JpZCk6IFRvb2x0aXBPcHRpb24ge1xuICAgIGlmICh0eXBlb2YgY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIHJldHVybiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uKHRoaXMucGFyYW1zKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnQnV0dG9uc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uPy5zdWJtZW51Py5sZW5ndGggPz8gMCA+IDA7IGVsc2UgYnV0dG9uUHJpbmNpcGFsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU3ViTWVudShvcHRpb24/LnN1Ym1lbnUgPz8gW10pXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdFJpcHBsZVxuICAgICAgICBjbGFzcz1cImJ0biBzYy1jZWxsLXJlbmRlci1idXR0b24tYWN0aW9uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXG4gICAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpXCJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBhbmVsLm1lbnVcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxuICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxuICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XG4gICAgICAgIDxlbVxuICAgICAgICAgIGNsYXNzPVwicC0wXCJcbiAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICAob3B0aW9uPy5pY29uT3B0aW9uPy5pY29uID8/ICcnKSArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgKGlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKSA/ICd0ZXh0LW11dGVkJyA6IG9wdGlvbj8uaWNvbk9wdGlvbj8uY2xhc3NMaXN0ID8/ICcnKVxuICAgICAgICAgIFwiPjwvZW0+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPHNjLW1lbnUtcGFuZWwgI3BhbmVsIFtwYXJhbXNdPVwicGFyYW1zXCIgW3N1Yk1lbnVzXT1cIm9wdGlvbi5zdWJtZW51ID8/IFtdXCI+PC9zYy1tZW51LXBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2J1dHRvblByaW5jaXBhbD5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiFpc0Z1bmN0aW9uSGlkZShvcHRpb24/LmhpZGUgPz8gZmFsc2UpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxuICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXG4gICAgICBjbGFzcz1cImJ0biBzYy1jZWxsLXJlbmRlci1idXR0b24tYWN0aW9uXCJcbiAgICAgIG1hdFJpcHBsZVxuICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uKG9wdGlvbj8uYWN0aW9uQ29kZSA/PyAnJylcIlxuICAgICAgKGF1eGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uKG9wdGlvbj8uYWN0aW9uQ29kZSA/PyAnJywgdHJ1ZSlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxuICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikuY2xhc3NMaXN0ID8/ICcnXCJcbiAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XG4gICAgICA8ZW1cbiAgICAgICAgY2xhc3M9XCJwdC0wXCJcbiAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgIChvcHRpb24/Lmljb25PcHRpb24/Lmljb24gPz8gJycpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZCkgPyAndGV4dC1tdXRlZCcgOiBvcHRpb24/Lmljb25PcHRpb24/LmNsYXNzTGlzdCA/PyAnJylcbiAgICAgICAgXCI+PC9lbT5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBSXZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBZ0U7UUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVZVLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVOztBQWNYLE1BQ2UsZ0JBQWdCO0lBRzdCLGtCQUFrQixD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Q0FBTTtRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFrQjtRQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQy9CLElBQUksT0FBTyxJQUFJLElBQUksVUFBVTtnQkFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBaUM7UUFDaEQsSUFBSSxPQUFPLGFBQWEsRUFBRSxhQUFhLEtBQUssVUFBVTtZQUNwRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBOztZQUVoRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDeEMsQ0FBQzsrR0EzQ1UsNkJBQTZCO21HQUE3Qiw2QkFBNkIsME1Dak4xQyxndEVBbURBLHF3Q0RnR2Esb0JBQW9COzs0RkE4RHBCLDZCQUE2QjtrQkFqQ3pDLFNBQVM7MkJBMkJGO3dCQUNKLE1BQU0sRUFBRSxzQkFBc0I7d0JBQzlCLEtBQUssRUFBRSxxREFBcUQ7cUJBQzdELGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWdCdXR0b25BZ0dyaWQsIERpc2FibGVkRnVjLCBFbnVtQnV0dG9uVHlwZSwgSGlkZUZ1YywgU3ViTWVudSwgVG9vbHRpcE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL0lTY0FnR3JpZCc7XG5cbmxldCBzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWQgPSAwO1xubGV0IHNjTWVudVBhbmVsTmV4dElkID0gMDtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2Uge1xuICBwcml2YXRlIF9oYW5kbGVyQnV0dG9uQWN0aW9uJCA9IG5ldyBTdWJqZWN0PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIGlzUmlnaHRDbGljazogYm9vbGVhbjtcbiAgfT4oKTtcbiAgaGFuZGxlckJ1dHRvbkFjdGlvbiQgPSB0aGlzLl9oYW5kbGVyQnV0dG9uQWN0aW9uJC5hc09ic2VydmFibGUoKTtcblxuICBidXR0b25BY3Rpb24ob3B0aW9uOiB7IGluZGV4OiBudW1iZXI7IGFjdGlvbjogc3RyaW5nOyBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIHRoaXMuX2hhbmRsZXJCdXR0b25BY3Rpb24kLm5leHQob3B0aW9uKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmFic3RyYWN0IGNsYXNzIFNjQ2VsbFJlbmRlckJhc2Uge1xuICBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xuXG4gIGlzRnVuY3Rpb25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IERpc2FibGVkRnVjIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaXNGdW5jdGlvbkhpZGUodmFsdWU6IGJvb2xlYW4gfCBIaWRlRnVjKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NjLW1lbnUtcGFuZWwnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtbWVudSAjbWVudT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1Yk1lbnUgb2Ygc3ViTWVudXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Z1bmN0aW9uSGlkZShzdWJNZW51LmhpZGUgPz8gZmFsc2UpXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCIhc3ViTWVudS5zdWJtZW51OyBlbHNlIGJyYW5jaFwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXG4gICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3ViTWVudT8ubGFiZWwgPz8gJydcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2tPdmVyTWVudSgkZXZlbnQsIHN1Yk1lbnU/LmFjdGlvbkNvZGUgPz8gJycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAqbmdJZj1cInN1Yk1lbnU/Lmljb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImZhLWxnXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICdzYy1tZW51LXBhbmVsLWljb24gJyArXG4gICAgICAgICAgICAgICAgc3ViTWVudS5pY29uICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQoc3ViTWVudT8uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LW11dGVkJ1xuICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNicmFuY2g+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImlubmVyUGFuZWwubWVudVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zYy1tZW51LXBhbmVsLWJvdHRvbV09XCJzdWJNZW51Py5pY29uICE9PSB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3ViTWVudT8ubGFiZWwgPz8gJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3ViTWVudT8uaWNvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1sZ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NjLW1lbnUtcGFuZWwtaWNvbiAnICtcbiAgICAgICAgICAgICAgICAgIHN1Yk1lbnUuaWNvbiArXG4gICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgKGlzRnVuY3Rpb25EaXNhYmxlZChzdWJNZW51Py5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1tdXRlZCdcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsXG4gICAgICAgICAgICAgICNpbm5lclBhbmVsXG4gICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcbiAgICAgICAgICAgICAgKG9uQnV0dG9uQWN0aW9uKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXG4gICAgICAgICAgICAgIFtzdWJNZW51c109XCJzdWJNZW51LnN1Ym1lbnUgPz8gW11cIlxuICAgICAgICAgICAgPjwvc2MtbWVudS1wYW5lbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zYy1tZW51LXBhbmVsLWJvdHRvbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5zYy1tZW51LXBhbmVsLWljb24ge1xuICAgICAgICB3aWR0aDogMS42cmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuM2VtO1xuICAgICAgfVxuXG4gICAgICAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0ge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBjdXJzb3I6IG5vLWRyb3AgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgYnV0dG9uOmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBuby1kcm9wO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2lkXSc6ICdpZFNjTWVudVBhbmVsJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2NNZW51UGFuZWxDb21wb25lbnQgZXh0ZW5kcyBTY0NlbGxSZW5kZXJCYXNlIHtcbiAgaWRTY01lbnVQYW5lbCA9IGBzYy1tZW51LXBhbmVsLSR7KytzY01lbnVQYW5lbE5leHRJZH1gO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51ITogTWF0TWVudTtcblxuICBASW5wdXQoKSBzdWJNZW51czogU3ViTWVudVtdID0gW107XG4gIEBJbnB1dCgpIG92ZXJyaWRlIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZTogU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbjogc3RyaW5nLCBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJhbXM/Lm5vZGUucm93SW5kZXggPz8gLTE7XG4gICAgdGhpcy5fc2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZS5idXR0b25BY3Rpb24oe1xuICAgICAgaW5kZXgsXG4gICAgICBhY3Rpb24sXG4gICAgICBpc1JpZ2h0Q2xpY2tcbiAgICB9KTtcbiAgfVxuICBvblJpZ2h0Q2xpY2tPdmVyTWVudShldmVudDogTW91c2VFdmVudCwgYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMub25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zYy1jZWxsLXJlbmRlci1idXR0b24ge1xuICAgICAgICBwYWRkaW5nOiAwLjFlbSAxZW07XG4gICAgICB9XG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvbiB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNWVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMC4xZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24gaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMS43ZW07XG4gICAgICAgIGhlaWdodDogMS43ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIH1cbiAgICAgIGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tpZF0nOiAnaWRTY0NlbGxSZW5kZXJCdXR0b24nLFxuICAgIGNsYXNzOiAnZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgc2MtY2VsbC1yZW5kZXItYnV0dG9uJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnRcbiAgZXh0ZW5kcyBTY0NlbGxSZW5kZXJCYXNlXG4gIGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIHtcbiAgaWRTY0NlbGxSZW5kZXJCdXR0b24gPSBgc2MtY2VsbC1yZW5kZXItYnV0dG9uLSR7KytzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWR9YDtcblxuICBvdmVycmlkZSBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xuXG4gIGNvbmZpZ0J1dHRvbnM6IENvbmZpZ0J1dHRvbkFnR3JpZFtdID0gW107XG5cbiAgYWdJbml0KHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuY29uZmlnQnV0dG9ucyA9XG4gICAgICBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkO1xuICB9XG5cbiAgb25CdXR0b25BY3Rpb24odHlwZUJ1dHRvbjogRW51bUJ1dHRvblR5cGUgfCBzdHJpbmcsIGlzUmlnaHRDbGljazogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHR5cGVCdXR0b24pXG4gICAgICB0aGlzLnBhcmFtcz8uY29udGV4dC5jb21wb25lbnRQYXJlbnQub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KFxuICAgICAgICB0aGlzLnBhcmFtcy5ub2RlLnJvd0luZGV4LFxuICAgICAgICB0eXBlQnV0dG9uLFxuICAgICAgICBpc1JpZ2h0Q2xpY2tcbiAgICAgICk7XG4gIH1cblxuICByZWZyZXNoKF86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGlkZVN1Yk1lbnUoc3ViTWVudTogU3ViTWVudVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHN1Yk1lbnUubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBzdWJNZW51LmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xuICAgICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBoaWRlID09ICdmdW5jdGlvbicpIHJldHVybiBoaWRlKCk7XG4gICAgICByZXR1cm4gaGlkZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFRvb2x0aXBPcHRpb24oY29uZmlnQnV0dG9uczogQ29uZmlnQnV0dG9uQWdHcmlkKTogVG9vbHRpcE9wdGlvbiB7XG4gICAgaWYgKHR5cGVvZiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uID09PSAnZnVuY3Rpb24nKVxuICAgICAgcmV0dXJuIGNvbmZpZ0J1dHRvbnM/LnRvb2x0aXBPcHRpb24odGhpcy5wYXJhbXMpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNvbmZpZ0J1dHRvbnM/LnRvb2x0aXBPcHRpb247XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb25maWdCdXR0b25zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb24/LnN1Ym1lbnU/Lmxlbmd0aCA/PyAwID4gMDsgZWxzZSBidXR0b25QcmluY2lwYWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVTdWJNZW51KG9wdGlvbj8uc3VibWVudSA/PyBbXSlcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxuICAgICAgICBbbmdDbGFzc109XCJvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0ID8gJGFueShvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0KSA6ICcnXCJcbiAgICAgICAgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUob3B0aW9uPy5oaWRlID8/IGZhbHNlKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwicGFuZWwubWVudVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5sYWJlbFwiXG4gICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmNsYXNzTGlzdCA/PyAnJ1wiXG4gICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIj5cbiAgICAgICAgPGVtXG4gICAgICAgICAgY2xhc3M9XCJwLTBcIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIChvcHRpb24/Lmljb25PcHRpb24/Lmljb24gPz8gJycpICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpID8gJ3RleHQtbXV0ZWQnIDogb3B0aW9uPy5pY29uT3B0aW9uPy5jbGFzc0xpc3QgPz8gJycpXG4gICAgICAgICAgXCI+PC9lbT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8c2MtbWVudS1wYW5lbCAjcGFuZWwgW3BhcmFtc109XCJwYXJhbXNcIiBbc3ViTWVudXNdPVwib3B0aW9uLnN1Ym1lbnUgPz8gW11cIj48L3NjLW1lbnUtcGFuZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYnV0dG9uUHJpbmNpcGFsPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXG4gICAgICBbbmdDbGFzc109XCJvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0ID8gJGFueShvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0KSA6ICcnXCJcbiAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxuICAgICAgbWF0UmlwcGxlXG4gICAgICAoY2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnKVwiXG4gICAgICAoYXV4Y2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnLCB0cnVlKVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5sYWJlbFwiXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxuICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIj5cbiAgICAgIDxlbVxuICAgICAgICBjbGFzcz1cInB0LTBcIlxuICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgKGlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKSA/ICd0ZXh0LW11dGVkJyA6IG9wdGlvbj8uaWNvbk9wdGlvbj8uY2xhc3NMaXN0ID8/ICcnKVxuICAgICAgICBcIj48L2VtPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs
CHANGED
|
@@ -447,11 +447,11 @@ export class ScAgGridCustomizableComponent {
|
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridCustomizableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
450
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScAgGridCustomizableComponent, selector: "sc-ag-grid-customizable", inputs: { isRowSelectable: "isRowSelectable", headerTitle: "headerTitle", headerSubtitle: "headerSubtitle", getRowStyle: "getRowStyle", fillSearch: "fillSearch", paginationPageSize: "paginationPageSize", searchWidth: "searchWidth", pageSizeOptions: "pageSizeOptions", pagination: "pagination", rowSelection: "rowSelection", columnDefs: "columnDefs", rowData: "rowData", configButtonsAction: "configButtonsAction", defaultCellRendererActions: "defaultCellRendererActions", visibleSearch: "visibleSearch", domLayout: "domLayout", height: "height", btnAdd: "btnAdd", rowDragManaged: "rowDragManaged", animateRows: "animateRows", useGridCopy: "useGridCopy", multiSortKey: "multiSortKey", showMenuDefault: "showMenuDefault", enableCellTextSelection: "enableCellTextSelection", suppressRowTransform: "suppressRowTransform", enableRangeSelection: "enableRangeSelection", noRowsOverlayComponent: "noRowsOverlayComponent", noRowsOverlayComponentParams: "noRowsOverlayComponentParams", tooltipHideDelay: "tooltipHideDelay", tooltipShowDelay: "tooltipShowDelay", tooltipShowMode: "tooltipShowMode", validatePasteCell: "validatePasteCell", validatePasteRows: "validatePasteRows", frameworkComponents: "frameworkComponents", context: "context", overlayNoRowsTemplate: "overlayNoRowsTemplate" }, outputs: { onChangeFilter: "onChangeFilter", onAddRow: "onAddRow", onGridAddRow: "onGridAddRow", onEditRow: "onEditRow", onDeleteRow: "onDeleteRow", onCellKeyDown: "onCellKeyDown", onCellStopEditing: "onCellStopEditing", onButtonActionAgGrid: "onButtonActionAgGrid", onButtonActionHeader: "onButtonActionHeader", onGridReady: "onGridReady", onGridSelectChange: "onGridSelectChange", onGridChange: "onGridChange", onRowDragEnd: "onRowDragEnd", onRowEditingStarted: "onRowEditingStarted", rowClicked: "rowClicked", rowDoubleClicked: "rowDoubleClicked", onRowSelected: "onRowSelected", cellValueChanged: "cellValueChanged", onCellContextMenu: "onCellContextMenu", onPasteMenu: "onPasteMenu", onCopyMenu: "onCopyMenu", afterPasteCell: "afterPasteCell", beforePasteCell: "beforePasteCell", afterPasteRows: "afterPasteRows", beforePasteRows: "beforePasteRows" }, host: { properties: { "id": "idScAgGridCustomizableComponent" }, classAttribute: "sc-ag-grid-customizable" }, queries: [{ propertyName: "viewChildrenButtonHeaders", predicate: ScAgGridButtonHeader, descendants: true }, { propertyName: "viewChildrenBeforeActions", predicate: ScAgGridBeforeActionDirective, descendants: true }], viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }, { propertyName: "_scAgGridPagination", first: true, predicate: ["scAgGridPagination"], descendants: true }, { propertyName: "buttonAdd", first: true, predicate: ["buttonAdd"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"w-100\">\n <!--===========================================-->\n <!-- AG-GRID HEADER -->\n <!--===========================================-->\n <div\n class=\"row justify-content-between align-items-center my-2\"\n *ngIf=\"visibleSearch || btnAdd?.visible || viewChildrenButtonHeaders?.length || headerTitle\">\n <!-- Header Title and Subtitle Section -->\n <div class=\"col-auto d-flex align-items-end\" *ngIf=\"headerTitle\">\n <span class=\"sc-ag-grid-header-title\">{{ headerTitle }}</span>\n <ng-container *ngIf=\"headerSubtitle\">\n <span class=\"sc-ag-grid-header-subtitle ms-2\">{{ headerSubtitle }}</span>\n </ng-container>\n </div>\n <!-- End Header Title and Subtitle Section -->\n\n <!-- Filtro (posici\u00F3n izquierda - cuando NO hay t\u00EDtulo o subt\u00EDtulo) -->\n <div [class]=\"fillSearch ? 'col-12 my-2' : searchClass\" *ngIf=\"visibleSearch && !showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n\n <div\n [class]=\"visibleSearch && !showSearchInActions ? 'col-sm-12 col-md-6 col-lg-6 col-xl-7 col-12' : 'col'\"\n class=\"sc-ag-grid-header-actions d-flex justify-content-end align-items-center\"\n *ngIf=\"\n btnAdd?.visible ||\n viewChildrenBeforeActions?.length ||\n viewChildrenButtonHeaders?.length ||\n configButtonsAction?.header ||\n configHeader !== null ||\n showSearchInActions\n \">\n <!-- Filtro (posici\u00F3n derecha - cuando HAY t\u00EDtulo o subt\u00EDtulo) -->\n <div class=\"sc-ag-grid-header-search-inline\" *ngIf=\"visibleSearch && showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n <!-- End Search Input inline -->\n\n <!-- Other Before Actions -->\n <ng-container *ngIf=\"viewChildrenBeforeActions?.length\">\n <ng-container\n *ngFor=\"let viewChildrenBeforeAction of viewChildrenBeforeActions\"\n [ngTemplateOutlet]=\"viewChildrenBeforeAction.template\">\n </ng-container>\n </ng-container>\n <!--End other before actions -->\n\n <!-- Header actions buttons -->\n <ng-container *ngIf=\"configButtonsAction && configHeader\">\n <ng-container *ngIf=\"configHeader.disabled === false; else templateAction\">\n <ng-container [ngTemplateOutlet]=\"tempActions\"></ng-container>\n </ng-container>\n\n <ng-template #templateAction>\n <ng-container *ngIf=\"selectedRows.length === 0; else tempActions\">\n <button class=\"btn-icon btn-width btn btn-primary btn-sm\" disabled>\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n </ng-container>\n </ng-template>\n\n <ng-template #tempActions>\n <button *ngIf=\"hideHeaderMenuAction(); else templateHeaderAction\" class=\"btn-icon btn-width btn btn-primary btn-sm\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <ng-template #templateHeaderAction>\n <button type=\"button\" class=\"btn-icon btn-width btn btn-primary btn-sm\" [matMenuTriggerFor]=\"panel.menu\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <sc-menu-panel #panel class=\"d-none\" [subMenus]=\"configHeader.submenu ?? []\"></sc-menu-panel>\n </ng-template>\n </ng-template>\n </ng-container>\n <!-- End header actions buttons -->\n\n <!-- Other buttons -->\n <ng-container *ngIf=\"viewChildrenButtonHeaders?.length\">\n <ng-container\n *ngFor=\"let viewChildrenButtonHeader of viewChildrenButtonHeaders\"\n [ngTemplateOutlet]=\"viewChildrenButtonHeader.template\">\n </ng-container>\n </ng-container>\n <!--End other buttons -->\n\n <!-- Add button -->\n <ng-container *ngIf=\"btnAdd?.visible\">\n <button\n type=\"button\"\n class=\"btn-width btn btn-warning btn-sm\"\n (click)=\"onAddRowEmit()\"\n #buttonAdd\n [disabled]=\"btnAdd.disabled ?? false\">\n Agregar\n </button>\n </ng-container>\n <!--End add button -->\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID HEADER END -->\n <!--===========================================-->\n\n <div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"ngStyleContainer\">\n <ag-grid-angular\n #agGrid\n class=\"ag-theme-balham\"\n [ngStyle]=\"ngStyleAgGrid\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [defaultColDef]=\"defaultColDef\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [rowDragManaged]=\"rowDragManaged\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"animateRows\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [suppressRowTransform]=\"suppressRowTransform\"\n [suppressMoveWhenRowDragging]=\"animateRows\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [noRowsOverlayComponentParams]=\"noRowsOverlayComponentParams\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [suppressDragLeaveHidesColumns]=\"suppressDragLeaveHidesColumns\"\n [suppressScrollOnNewData]=\"suppressScrollOnNewData\"\n [suppressPropertyNamesCheck]=\"true\"\n [paginationPageSize]=\"pagination ? paginationPageSize : undefined\"\n [pagination]=\"pagination\"\n [suppressPaginationPanel]=\"suppressPaginationPanel\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"onRowSelected.emit($event)\"\n (paginationChanged)=\"paginationChanged()\"\n (gridReady)=\"gridReady($event)\"\n (rowDragEnd)=\"rowDragEndEmit($event)\"\n (cellContextMenu)=\"cellContextMenu($event)\"\n [enableCellTextSelection]=\"enableCellTextSelection\"\n (rowDataUpdated)=\"rowDataChanged($event)\"\n (rowEditingStarted)=\"onRowEditingStarted.emit($event)\"\n (cellValueChanged)=\"cellValueChanged.emit($event)\"\n (selectionChanged)=\"selectionChanged()\"\n (cellEditingStopped)=\"cellStopEditing($event)\"\n (cellKeyDown)=\"cellKeyDown($any($event))\"\n [multiSortKey]=\"multiSortKey\"\n [tooltipHideDelay]=\"tooltipHideDelay\"\n [tooltipShowDelay]=\"tooltipShowDelay\"\n [tooltipShowMode]=\"tooltipShowMode\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n </div>\n\n <!--===========================================-->\n <!-- AG-GRID PAGINATION -->\n <!--===========================================-->\n <div class=\"row\" *ngIf=\"pagination\">\n <div class=\"col-12\">\n <sc-ag-grid-pagination\n #scAgGridPagination\n [gridApi]=\"gridApi\"\n [paginationPageSize]=\"paginationPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"></sc-ag-grid-pagination>\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID PAGINATION END -->\n <!--===========================================-->\n</div>\n\n<div\n *ngIf=\"showMenuDefault\"\n oncontextmenu=\"return false;\"\n style=\"position: fixed; width: 0px; height: 0px\"\n [ngStyle]=\"{ top: bottomMenu + 'px', left: leftMenu + 'px' }\">\n <mat-menu oncontextmenu=\"return false;\" #scMenu=\"matMenu\">\n <button oncontextmenu=\"return false;\" (click)=\"copyMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_copy</mat-icon> <span>Copiar</span>\n </button>\n <button [disabled]=\"disabledPasteMenu\" oncontextmenu=\"return false;\" (click)=\"pasteMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_paste</mat-icon><span>Pegar</span>\n </button>\n </mat-menu>\n <button oncontextmenu=\"return false;\" style=\"visibility: hidden\" mat-button [matMenuTriggerFor]=\"scMenu\" #menuTrigger=\"matMenuTrigger\">\n Menu\n </button>\n</div>\n", styles: [".cell-wrap-text{white-space:normal!important}.sc-ag-grid-header-title{font-size:var(--sc-ag-grid-header-title-font-size, 1.2rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 600);color:var(--sc-ag-grid-header-title-color, #48465b)}.sc-ag-grid-header-subtitle{font-size:var(--sc-ag-grid-header-badge-label-font-size, .875rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 400);color:var(--sc-ag-grid-header-badge-label-color, #48465b)}.sc-ag-grid-header-search-inline{flex:1 1 auto;min-width:150px;max-width:50%;margin-right:.5rem}.ag-header__center .ag-header-cell-text{display:block;width:100%;text-align:center!important}.ag-header__right .ag-header-cell-text{display:block;width:100%;text-align:right!important}.sc-ag-grid-header-actions{display:flex;gap:.6rem}.sc-ag-grid-header-actions .btn-width{width:6.5rem}.sc-ag-grid-header-actions .btn-icon em{margin-left:10px}.material-icons{font-size:24px!important}:host ::ng-deep .cell-merged{display:flex;background-color:#fff;background-clip:padding-box;vertical-align:middle;border-collapse:collapse;border-left:white;border-right:white;border-top:white}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.ScAgGridPaginationComponent, selector: "sc-ag-grid-pagination", inputs: ["paginationPageSize", "gridApi", "pageSizeOptions"] }, { kind: "component", type: i6.InputSearchComponent, selector: "input-search", outputs: ["onChange"] }, { kind: "component", type: i7.ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
450
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScAgGridCustomizableComponent, selector: "sc-ag-grid-customizable", inputs: { isRowSelectable: "isRowSelectable", headerTitle: "headerTitle", headerSubtitle: "headerSubtitle", getRowStyle: "getRowStyle", fillSearch: "fillSearch", paginationPageSize: "paginationPageSize", searchWidth: "searchWidth", pageSizeOptions: "pageSizeOptions", pagination: "pagination", rowSelection: "rowSelection", columnDefs: "columnDefs", rowData: "rowData", configButtonsAction: "configButtonsAction", defaultCellRendererActions: "defaultCellRendererActions", visibleSearch: "visibleSearch", domLayout: "domLayout", height: "height", btnAdd: "btnAdd", rowDragManaged: "rowDragManaged", animateRows: "animateRows", useGridCopy: "useGridCopy", multiSortKey: "multiSortKey", showMenuDefault: "showMenuDefault", enableCellTextSelection: "enableCellTextSelection", suppressRowTransform: "suppressRowTransform", enableRangeSelection: "enableRangeSelection", noRowsOverlayComponent: "noRowsOverlayComponent", noRowsOverlayComponentParams: "noRowsOverlayComponentParams", tooltipHideDelay: "tooltipHideDelay", tooltipShowDelay: "tooltipShowDelay", tooltipShowMode: "tooltipShowMode", validatePasteCell: "validatePasteCell", validatePasteRows: "validatePasteRows", frameworkComponents: "frameworkComponents", context: "context", overlayNoRowsTemplate: "overlayNoRowsTemplate" }, outputs: { onChangeFilter: "onChangeFilter", onAddRow: "onAddRow", onGridAddRow: "onGridAddRow", onEditRow: "onEditRow", onDeleteRow: "onDeleteRow", onCellKeyDown: "onCellKeyDown", onCellStopEditing: "onCellStopEditing", onButtonActionAgGrid: "onButtonActionAgGrid", onButtonActionHeader: "onButtonActionHeader", onGridReady: "onGridReady", onGridSelectChange: "onGridSelectChange", onGridChange: "onGridChange", onRowDragEnd: "onRowDragEnd", onRowEditingStarted: "onRowEditingStarted", rowClicked: "rowClicked", rowDoubleClicked: "rowDoubleClicked", onRowSelected: "onRowSelected", cellValueChanged: "cellValueChanged", onCellContextMenu: "onCellContextMenu", onPasteMenu: "onPasteMenu", onCopyMenu: "onCopyMenu", afterPasteCell: "afterPasteCell", beforePasteCell: "beforePasteCell", afterPasteRows: "afterPasteRows", beforePasteRows: "beforePasteRows" }, host: { properties: { "id": "idScAgGridCustomizableComponent" }, classAttribute: "sc-ag-grid-customizable" }, providers: [ScCellRenderButtonService], queries: [{ propertyName: "viewChildrenButtonHeaders", predicate: ScAgGridButtonHeader, descendants: true }, { propertyName: "viewChildrenBeforeActions", predicate: ScAgGridBeforeActionDirective, descendants: true }], viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }, { propertyName: "_scAgGridPagination", first: true, predicate: ["scAgGridPagination"], descendants: true }, { propertyName: "buttonAdd", first: true, predicate: ["buttonAdd"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"w-100\">\n <!--===========================================-->\n <!-- AG-GRID HEADER -->\n <!--===========================================-->\n <div\n class=\"row justify-content-between align-items-center my-2\"\n *ngIf=\"visibleSearch || btnAdd?.visible || viewChildrenButtonHeaders?.length || headerTitle\">\n <!-- Header Title and Subtitle Section -->\n <div class=\"col-auto d-flex align-items-end\" *ngIf=\"headerTitle\">\n <span class=\"sc-ag-grid-header-title\">{{ headerTitle }}</span>\n <ng-container *ngIf=\"headerSubtitle\">\n <span class=\"sc-ag-grid-header-subtitle ms-2\">{{ headerSubtitle }}</span>\n </ng-container>\n </div>\n <!-- End Header Title and Subtitle Section -->\n\n <!-- Filtro (posici\u00F3n izquierda - cuando NO hay t\u00EDtulo o subt\u00EDtulo) -->\n <div [class]=\"fillSearch ? 'col-12 my-2' : searchClass\" *ngIf=\"visibleSearch && !showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n\n <div\n [class]=\"visibleSearch && !showSearchInActions ? 'col-sm-12 col-md-6 col-lg-6 col-xl-7 col-12' : 'col'\"\n class=\"sc-ag-grid-header-actions d-flex justify-content-end align-items-center\"\n *ngIf=\"\n btnAdd?.visible ||\n viewChildrenBeforeActions?.length ||\n viewChildrenButtonHeaders?.length ||\n configButtonsAction?.header ||\n configHeader !== null ||\n showSearchInActions\n \">\n <!-- Filtro (posici\u00F3n derecha - cuando HAY t\u00EDtulo o subt\u00EDtulo) -->\n <div class=\"sc-ag-grid-header-search-inline\" *ngIf=\"visibleSearch && showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n <!-- End Search Input inline -->\n\n <!-- Other Before Actions -->\n <ng-container *ngIf=\"viewChildrenBeforeActions?.length\">\n <ng-container\n *ngFor=\"let viewChildrenBeforeAction of viewChildrenBeforeActions\"\n [ngTemplateOutlet]=\"viewChildrenBeforeAction.template\">\n </ng-container>\n </ng-container>\n <!--End other before actions -->\n\n <!-- Header actions buttons -->\n <ng-container *ngIf=\"configButtonsAction && configHeader\">\n <ng-container *ngIf=\"configHeader.disabled === false; else templateAction\">\n <ng-container [ngTemplateOutlet]=\"tempActions\"></ng-container>\n </ng-container>\n\n <ng-template #templateAction>\n <ng-container *ngIf=\"selectedRows.length === 0; else tempActions\">\n <button class=\"btn-icon btn-width btn btn-primary btn-sm\" disabled>\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n </ng-container>\n </ng-template>\n\n <ng-template #tempActions>\n <button *ngIf=\"hideHeaderMenuAction(); else templateHeaderAction\" class=\"btn-icon btn-width btn btn-primary btn-sm\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <ng-template #templateHeaderAction>\n <button type=\"button\" class=\"btn-icon btn-width btn btn-primary btn-sm\" [matMenuTriggerFor]=\"panel.menu\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <sc-menu-panel #panel class=\"d-none\" [subMenus]=\"configHeader.submenu ?? []\"></sc-menu-panel>\n </ng-template>\n </ng-template>\n </ng-container>\n <!-- End header actions buttons -->\n\n <!-- Other buttons -->\n <ng-container *ngIf=\"viewChildrenButtonHeaders?.length\">\n <ng-container\n *ngFor=\"let viewChildrenButtonHeader of viewChildrenButtonHeaders\"\n [ngTemplateOutlet]=\"viewChildrenButtonHeader.template\">\n </ng-container>\n </ng-container>\n <!--End other buttons -->\n\n <!-- Add button -->\n <ng-container *ngIf=\"btnAdd?.visible\">\n <button\n type=\"button\"\n class=\"btn-width btn btn-warning btn-sm\"\n (click)=\"onAddRowEmit()\"\n #buttonAdd\n [disabled]=\"btnAdd.disabled ?? false\">\n Agregar\n </button>\n </ng-container>\n <!--End add button -->\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID HEADER END -->\n <!--===========================================-->\n\n <div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"ngStyleContainer\">\n <ag-grid-angular\n #agGrid\n class=\"ag-theme-balham\"\n [ngStyle]=\"ngStyleAgGrid\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [defaultColDef]=\"defaultColDef\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [rowDragManaged]=\"rowDragManaged\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"animateRows\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [suppressRowTransform]=\"suppressRowTransform\"\n [suppressMoveWhenRowDragging]=\"animateRows\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [noRowsOverlayComponentParams]=\"noRowsOverlayComponentParams\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [suppressDragLeaveHidesColumns]=\"suppressDragLeaveHidesColumns\"\n [suppressScrollOnNewData]=\"suppressScrollOnNewData\"\n [suppressPropertyNamesCheck]=\"true\"\n [paginationPageSize]=\"pagination ? paginationPageSize : undefined\"\n [pagination]=\"pagination\"\n [suppressPaginationPanel]=\"suppressPaginationPanel\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"onRowSelected.emit($event)\"\n (paginationChanged)=\"paginationChanged()\"\n (gridReady)=\"gridReady($event)\"\n (rowDragEnd)=\"rowDragEndEmit($event)\"\n (cellContextMenu)=\"cellContextMenu($event)\"\n [enableCellTextSelection]=\"enableCellTextSelection\"\n (rowDataUpdated)=\"rowDataChanged($event)\"\n (rowEditingStarted)=\"onRowEditingStarted.emit($event)\"\n (cellValueChanged)=\"cellValueChanged.emit($event)\"\n (selectionChanged)=\"selectionChanged()\"\n (cellEditingStopped)=\"cellStopEditing($event)\"\n (cellKeyDown)=\"cellKeyDown($any($event))\"\n [multiSortKey]=\"multiSortKey\"\n [tooltipHideDelay]=\"tooltipHideDelay\"\n [tooltipShowDelay]=\"tooltipShowDelay\"\n [tooltipShowMode]=\"tooltipShowMode\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n </div>\n\n <!--===========================================-->\n <!-- AG-GRID PAGINATION -->\n <!--===========================================-->\n <div class=\"row\" *ngIf=\"pagination\">\n <div class=\"col-12\">\n <sc-ag-grid-pagination\n #scAgGridPagination\n [gridApi]=\"gridApi\"\n [paginationPageSize]=\"paginationPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"></sc-ag-grid-pagination>\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID PAGINATION END -->\n <!--===========================================-->\n</div>\n\n<div\n *ngIf=\"showMenuDefault\"\n oncontextmenu=\"return false;\"\n style=\"position: fixed; width: 0px; height: 0px\"\n [ngStyle]=\"{ top: bottomMenu + 'px', left: leftMenu + 'px' }\">\n <mat-menu oncontextmenu=\"return false;\" #scMenu=\"matMenu\">\n <button oncontextmenu=\"return false;\" (click)=\"copyMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_copy</mat-icon> <span>Copiar</span>\n </button>\n <button [disabled]=\"disabledPasteMenu\" oncontextmenu=\"return false;\" (click)=\"pasteMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_paste</mat-icon><span>Pegar</span>\n </button>\n </mat-menu>\n <button oncontextmenu=\"return false;\" style=\"visibility: hidden\" mat-button [matMenuTriggerFor]=\"scMenu\" #menuTrigger=\"matMenuTrigger\">\n Menu\n </button>\n</div>\n", styles: [".cell-wrap-text{white-space:normal!important}.sc-ag-grid-header-title{font-size:var(--sc-ag-grid-header-title-font-size, 1.2rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 600);color:var(--sc-ag-grid-header-title-color, #48465b)}.sc-ag-grid-header-subtitle{font-size:var(--sc-ag-grid-header-badge-label-font-size, .875rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 400);color:var(--sc-ag-grid-header-badge-label-color, #48465b)}.sc-ag-grid-header-search-inline{flex:1 1 auto;min-width:150px;max-width:50%;margin-right:.5rem}.ag-header__center .ag-header-cell-text{display:block;width:100%;text-align:center!important}.ag-header__right .ag-header-cell-text{display:block;width:100%;text-align:right!important}.sc-ag-grid-header-actions{display:flex;gap:.6rem}.sc-ag-grid-header-actions .btn-width{width:6.5rem}.sc-ag-grid-header-actions .btn-icon em{margin-left:10px}.material-icons{font-size:24px!important}:host ::ng-deep .cell-merged{display:flex;background-color:#fff;background-clip:padding-box;vertical-align:middle;border-collapse:collapse;border-left:white;border-right:white;border-top:white}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.ScAgGridPaginationComponent, selector: "sc-ag-grid-pagination", inputs: ["paginationPageSize", "gridApi", "pageSizeOptions"] }, { kind: "component", type: i6.InputSearchComponent, selector: "input-search", outputs: ["onChange"] }, { kind: "component", type: i7.ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
451
451
|
}
|
|
452
452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScAgGridCustomizableComponent, decorators: [{
|
|
453
453
|
type: Component,
|
|
454
|
-
args: [{ selector: "sc-ag-grid-customizable", changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
454
|
+
args: [{ selector: "sc-ag-grid-customizable", changeDetection: ChangeDetectionStrategy.OnPush, providers: [ScCellRenderButtonService], host: {
|
|
455
455
|
"[id]": "idScAgGridCustomizableComponent",
|
|
456
456
|
class: "sc-ag-grid-customizable",
|
|
457
457
|
}, template: "<div class=\"w-100\">\n <!--===========================================-->\n <!-- AG-GRID HEADER -->\n <!--===========================================-->\n <div\n class=\"row justify-content-between align-items-center my-2\"\n *ngIf=\"visibleSearch || btnAdd?.visible || viewChildrenButtonHeaders?.length || headerTitle\">\n <!-- Header Title and Subtitle Section -->\n <div class=\"col-auto d-flex align-items-end\" *ngIf=\"headerTitle\">\n <span class=\"sc-ag-grid-header-title\">{{ headerTitle }}</span>\n <ng-container *ngIf=\"headerSubtitle\">\n <span class=\"sc-ag-grid-header-subtitle ms-2\">{{ headerSubtitle }}</span>\n </ng-container>\n </div>\n <!-- End Header Title and Subtitle Section -->\n\n <!-- Filtro (posici\u00F3n izquierda - cuando NO hay t\u00EDtulo o subt\u00EDtulo) -->\n <div [class]=\"fillSearch ? 'col-12 my-2' : searchClass\" *ngIf=\"visibleSearch && !showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n\n <div\n [class]=\"visibleSearch && !showSearchInActions ? 'col-sm-12 col-md-6 col-lg-6 col-xl-7 col-12' : 'col'\"\n class=\"sc-ag-grid-header-actions d-flex justify-content-end align-items-center\"\n *ngIf=\"\n btnAdd?.visible ||\n viewChildrenBeforeActions?.length ||\n viewChildrenButtonHeaders?.length ||\n configButtonsAction?.header ||\n configHeader !== null ||\n showSearchInActions\n \">\n <!-- Filtro (posici\u00F3n derecha - cuando HAY t\u00EDtulo o subt\u00EDtulo) -->\n <div class=\"sc-ag-grid-header-search-inline\" *ngIf=\"visibleSearch && showSearchInActions\">\n <input-search (onChange)=\"changeFilter($event)\"></input-search>\n </div>\n <!-- End Search Input inline -->\n\n <!-- Other Before Actions -->\n <ng-container *ngIf=\"viewChildrenBeforeActions?.length\">\n <ng-container\n *ngFor=\"let viewChildrenBeforeAction of viewChildrenBeforeActions\"\n [ngTemplateOutlet]=\"viewChildrenBeforeAction.template\">\n </ng-container>\n </ng-container>\n <!--End other before actions -->\n\n <!-- Header actions buttons -->\n <ng-container *ngIf=\"configButtonsAction && configHeader\">\n <ng-container *ngIf=\"configHeader.disabled === false; else templateAction\">\n <ng-container [ngTemplateOutlet]=\"tempActions\"></ng-container>\n </ng-container>\n\n <ng-template #templateAction>\n <ng-container *ngIf=\"selectedRows.length === 0; else tempActions\">\n <button class=\"btn-icon btn-width btn btn-primary btn-sm\" disabled>\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n </ng-container>\n </ng-template>\n\n <ng-template #tempActions>\n <button *ngIf=\"hideHeaderMenuAction(); else templateHeaderAction\" class=\"btn-icon btn-width btn btn-primary btn-sm\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <ng-template #templateHeaderAction>\n <button type=\"button\" class=\"btn-icon btn-width btn btn-primary btn-sm\" [matMenuTriggerFor]=\"panel.menu\">\n Acciones\n <em class=\"fa fa-chevron-down\"></em>\n </button>\n\n <sc-menu-panel #panel class=\"d-none\" [subMenus]=\"configHeader.submenu ?? []\"></sc-menu-panel>\n </ng-template>\n </ng-template>\n </ng-container>\n <!-- End header actions buttons -->\n\n <!-- Other buttons -->\n <ng-container *ngIf=\"viewChildrenButtonHeaders?.length\">\n <ng-container\n *ngFor=\"let viewChildrenButtonHeader of viewChildrenButtonHeaders\"\n [ngTemplateOutlet]=\"viewChildrenButtonHeader.template\">\n </ng-container>\n </ng-container>\n <!--End other buttons -->\n\n <!-- Add button -->\n <ng-container *ngIf=\"btnAdd?.visible\">\n <button\n type=\"button\"\n class=\"btn-width btn btn-warning btn-sm\"\n (click)=\"onAddRowEmit()\"\n #buttonAdd\n [disabled]=\"btnAdd.disabled ?? false\">\n Agregar\n </button>\n </ng-container>\n <!--End add button -->\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID HEADER END -->\n <!--===========================================-->\n\n <div class=\"row\">\n <div class=\"col-12\" [ngStyle]=\"ngStyleContainer\">\n <ag-grid-angular\n #agGrid\n class=\"ag-theme-balham\"\n [ngStyle]=\"ngStyleAgGrid\"\n [columnDefs]=\"columnDefsAndAddCellActions\"\n [defaultColDef]=\"defaultColDef\"\n [components]=\"_frameworkComponents\"\n [context]=\"_context\"\n [rowSelection]=\"rowSelection\"\n [isRowSelectable]=\"isRowSelectable\"\n [rowDragManaged]=\"rowDragManaged\"\n [domLayout]=\"domLayout\"\n [animateRows]=\"animateRows\"\n [getRowStyle]=\"getRowStyle\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [suppressRowTransform]=\"suppressRowTransform\"\n [suppressMoveWhenRowDragging]=\"animateRows\"\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\n [overlayLoadingTemplate]=\"overlayLoadingTemplate\"\n [noRowsOverlayComponentParams]=\"noRowsOverlayComponentParams\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [suppressDragLeaveHidesColumns]=\"suppressDragLeaveHidesColumns\"\n [suppressScrollOnNewData]=\"suppressScrollOnNewData\"\n [suppressPropertyNamesCheck]=\"true\"\n [paginationPageSize]=\"pagination ? paginationPageSize : undefined\"\n [pagination]=\"pagination\"\n [suppressPaginationPanel]=\"suppressPaginationPanel\"\n (rowClicked)=\"rowClicked.emit($event)\"\n (rowDoubleClicked)=\"rowDoubleClicked.emit($event)\"\n (rowSelected)=\"onRowSelected.emit($event)\"\n (paginationChanged)=\"paginationChanged()\"\n (gridReady)=\"gridReady($event)\"\n (rowDragEnd)=\"rowDragEndEmit($event)\"\n (cellContextMenu)=\"cellContextMenu($event)\"\n [enableCellTextSelection]=\"enableCellTextSelection\"\n (rowDataUpdated)=\"rowDataChanged($event)\"\n (rowEditingStarted)=\"onRowEditingStarted.emit($event)\"\n (cellValueChanged)=\"cellValueChanged.emit($event)\"\n (selectionChanged)=\"selectionChanged()\"\n (cellEditingStopped)=\"cellStopEditing($event)\"\n (cellKeyDown)=\"cellKeyDown($any($event))\"\n [multiSortKey]=\"multiSortKey\"\n [tooltipHideDelay]=\"tooltipHideDelay\"\n [tooltipShowDelay]=\"tooltipShowDelay\"\n [tooltipShowMode]=\"tooltipShowMode\"\n oncontextmenu=\"return false;\">\n </ag-grid-angular>\n </div>\n </div>\n\n <!--===========================================-->\n <!-- AG-GRID PAGINATION -->\n <!--===========================================-->\n <div class=\"row\" *ngIf=\"pagination\">\n <div class=\"col-12\">\n <sc-ag-grid-pagination\n #scAgGridPagination\n [gridApi]=\"gridApi\"\n [paginationPageSize]=\"paginationPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"></sc-ag-grid-pagination>\n </div>\n </div>\n <!--===========================================-->\n <!-- AG-GRID PAGINATION END -->\n <!--===========================================-->\n</div>\n\n<div\n *ngIf=\"showMenuDefault\"\n oncontextmenu=\"return false;\"\n style=\"position: fixed; width: 0px; height: 0px\"\n [ngStyle]=\"{ top: bottomMenu + 'px', left: leftMenu + 'px' }\">\n <mat-menu oncontextmenu=\"return false;\" #scMenu=\"matMenu\">\n <button oncontextmenu=\"return false;\" (click)=\"copyMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_copy</mat-icon> <span>Copiar</span>\n </button>\n <button [disabled]=\"disabledPasteMenu\" oncontextmenu=\"return false;\" (click)=\"pasteMenu(cellContextMenuActual!)\" mat-menu-item>\n <mat-icon>content_paste</mat-icon><span>Pegar</span>\n </button>\n </mat-menu>\n <button oncontextmenu=\"return false;\" style=\"visibility: hidden\" mat-button [matMenuTriggerFor]=\"scMenu\" #menuTrigger=\"matMenuTrigger\">\n Menu\n </button>\n</div>\n", styles: [".cell-wrap-text{white-space:normal!important}.sc-ag-grid-header-title{font-size:var(--sc-ag-grid-header-title-font-size, 1.2rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 600);color:var(--sc-ag-grid-header-title-color, #48465b)}.sc-ag-grid-header-subtitle{font-size:var(--sc-ag-grid-header-badge-label-font-size, .875rem);font-weight:var(--sc-ag-grid-header-title-font-weight, 400);color:var(--sc-ag-grid-header-badge-label-color, #48465b)}.sc-ag-grid-header-search-inline{flex:1 1 auto;min-width:150px;max-width:50%;margin-right:.5rem}.ag-header__center .ag-header-cell-text{display:block;width:100%;text-align:center!important}.ag-header__right .ag-header-cell-text{display:block;width:100%;text-align:right!important}.sc-ag-grid-header-actions{display:flex;gap:.6rem}.sc-ag-grid-header-actions .btn-width{width:6.5rem}.sc-ag-grid-header-actions .btn-icon em{margin-left:10px}.material-icons{font-size:24px!important}:host ::ng-deep .cell-merged{display:flex;background-color:#fff;background-clip:padding-box;vertical-align:middle;border-collapse:collapse;border-left:white;border-right:white;border-top:white}\n"] }]
|
|
@@ -598,4 +598,4 @@ export function isObjEmpty(object) {
|
|
|
598
598
|
return true;
|
|
599
599
|
return Object.keys(object).length === 0;
|
|
600
600
|
}
|
|
601
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQW9CdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUtMLGNBQWMsR0FJZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7O0FBRzdGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQVdmLE1B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LE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQWtCUCxxQkFBcUI7c0JBRHBCLEtBQUs7O0FBd1RSLE1BQU0sVUFBVSxVQUFVLENBQUksTUFBUztJQUNyQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV6RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7XG4gIENlbGxDb250ZXh0TWVudUV2ZW50LFxuICBDZWxsRWRpdGluZ1N0b3BwZWRFdmVudCxcbiAgQ2VsbEtleURvd25FdmVudCxcbiAgQ2VsbFZhbHVlQ2hhbmdlZEV2ZW50LFxuICBDb2xEZWYsXG4gIEdyaWRBcGksXG4gIEdyaWRSZWFkeUV2ZW50LFxuICBJUm93Tm9kZSxcbiAgSXNSb3dTZWxlY3RhYmxlLFxuICBSb3dDbGlja2VkRXZlbnQsXG4gIFJvd0RhdGFVcGRhdGVkRXZlbnQsXG4gIFJvd0RvdWJsZUNsaWNrZWRFdmVudCxcbiAgUm93RHJhZ0V2ZW50LFxuICBSb3dFZGl0aW5nU3RhcnRlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSU5nU2VsZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxzL0lOZ1NlbGVjdFwiO1xuaW1wb3J0IHtcbiAgQnV0dG9uSGVhZGVyLFxuICBDb25maWdCdXR0b25BY3Rpb24sXG4gIENvbmZpZ0J1dHRvbkFnR3JpZCxcbiAgQ29uZmlnQnV0dG9uSGVhZGVyLFxuICBFbnVtQnV0dG9uVHlwZSxcbiAgR2V0Um93U3R5bGUsXG4gIEhpZGVGdWMsXG4gIFJvd1NlbGVjdGlvbixcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL0lTY0FnR3JpZFwiO1xuaW1wb3J0IHsgTWVzc2FnZVV0aWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBVURJVF9BQ1RJT05fU0VSVklDRSB9IGZyb20gXCIuLi8uLi91dGlscy90b2tlbi9hdWRpdC50b2tlblwiO1xuaW1wb3J0IHsgU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSB9IGZyb20gXCIuLi9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgc2NDb21wb25lbnRzIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZ1wiO1xuaW1wb3J0IHsgU2NBZ0dyaWRCdXR0b25IZWFkZXIgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9zY0FnR3JpZC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IFNjQWdHcmlkQmVmb3JlQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RpcmVjdGl2ZXMvc2NBZ0dyaWRCZWZvcmVBY3Rpb24uZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBTY0FnR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vc2MtYWctZ3JpZC1wYWdpbmF0aW9uL3NjLWFnLWdyaWQtcGFnaW5hdGlvbi5jb21wb25lbnRcIjtcblxubGV0IG5leHRJZCA9IDA7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic2MtYWctZ3JpZC1jdXN0b21pemFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC5zY3NzXCIsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgXCJbaWRdXCI6IFwiaWRTY0FnR3JpZEN1c3RvbWl6YWJsZUNvbXBvbmVudFwiLFxuICAgIGNsYXNzOiBcInNjLWFnLWdyaWQtY3VzdG9taXphYmxlXCIsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQWdHcmlkQ3VzdG9taXphYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oU2NBZ0dyaWRCdXR0b25IZWFkZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycyE6IFF1ZXJ5TGlzdDxTY0FnR3JpZEJ1dHRvbkhlYWRlcj47XG4gIEBDb250ZW50Q2hpbGRyZW4oU2NBZ0dyaWRCZWZvcmVBY3Rpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdmlld0NoaWxkcmVuQmVmb3JlQWN0aW9ucyE6IFF1ZXJ5TGlzdDxTY0FnR3JpZEJlZm9yZUFjdGlvbkRpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZChcIm1lbnVUcmlnZ2VyXCIpIG1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG5cbiAgQFZpZXdDaGlsZChcInNjQWdHcmlkUGFnaW5hdGlvblwiKVxuICBwcml2YXRlIF9zY0FnR3JpZFBhZ2luYXRpb24/OiBTY0FnR3JpZFBhZ2luYXRpb25Db21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChcImJ1dHRvbkFkZFwiKSBidXR0b25BZGQ/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgZ2V0IGJ1dHRvbkFkZEVsZW1lbnQoKTogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25BZGQ/Lm5hdGl2ZUVsZW1lbnQgPz8gbnVsbDtcbiAgfVxuXG4gIGlkU2NBZ0dyaWRDdXN0b21pemFibGVDb21wb25lbnQgPSBgc2MtYWctZ3JpZC1jdXN0b21pemFibGUtJHsrK25leHRJZH1gO1xuXG4gIEBJbnB1dCgpIGlzUm93U2VsZWN0YWJsZTogSXNSb3dTZWxlY3RhYmxlID0gKCkgPT4gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFTDrXR1bG8gcXVlIHNlIG11ZXN0cmEgZW4gZWwgaGVhZGVyIGRlIGxhIGdyaWxsYVxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGl0bGU6IHN0cmluZyA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmFjacOzbiBkZWwgYmFkZ2UgKGV0aXF1ZXRhIGNvbiBjb250YWRvcikgZGVsIGhlYWRlclxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyU3VidGl0bGU6IHN0cmluZyA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmEgc2kgZWwgYnVzY2Fkb3IgZGViZSBtb3N0cmFyc2UganVudG8gYSBsb3MgYm90b25lcyBkZSBhY2Npw7NuXG4gICAqL1xuICBnZXQgc2hvd1NlYXJjaEluQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmhlYWRlclRpdGxlO1xuICB9XG5cbiAgc2VhcmNoQ2xhc3MgPSBcImNvbC0xMiBjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTYgY29sLXhsLTUgbXktMlwiO1xuICBASW5wdXQoKSBnZXRSb3dTdHlsZTogR2V0Um93U3R5bGUgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpbGxTZWFyY2ggPSBmYWxzZTtcbiAgLy8jcmVnaW9uIElucHV0c1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENhbnRpZGFkIGRlIGl0ZW1zIHF1ZSBzZSBtb3N0cmFyw6EgcG9yIHDDoWdpbmFcbiAgICogQGRlZmF1bHQgMTVcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25QYWdlU2l6ZSA9IDE1O1xuICBASW5wdXQoKSBzZWFyY2hXaWR0aCA9IFwiXCI7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gIE9wY2lvbmVzIGRlIHRhbWHDsW8gZGUgcMOhZ2luYVxuICAgKiBAZGVmYXVsdCAnWzUsIDEwLCAxNSwgMjAsIDI1XSdcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTUsIDIwLCAyNV07XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2kgZWwgdmFsb3IgZXMgYHRydWVgIG11ZXN0cmEgbGEgcGFnaW5hY2nDs25cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgcGFnaW5hdGlvbiA9IHRydWU7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGlwbyBkZSBzZWxlY2lvbiBlbiBsYSBgZ3JpbGxhYHNcbiAgICogQGRlZmF1bHQgJ3NpbXBsZSdcbiAgICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogUm93U2VsZWN0aW9uID0gXCJzaW5nbGVcIjtcbiAgLy8gQElucHV0KCkgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IHRydWU7XG4gIGdldCBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdGlvbiA9PT0gXCJzaW5nbGVcIiA/IGZhbHNlIDogdHJ1ZTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IGRlIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgZGUgZGF0b3MgcXVlIHNlIG1vc3RyYXJhIGVuIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpIHJvd0RhdGE6IE9ic2VydmFibGU8YW55W10+ID0gb2YoW10pO1xuXG4gIEBJbnB1dCgpIGNvbmZpZ0J1dHRvbnNBY3Rpb24hOiBDb25maWdCdXR0b25BY3Rpb247XG4gIGdldCBjb25maWdIZWFkZXIoKTogQ29uZmlnQnV0dG9uSGVhZGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyID8/IG51bGw7XG4gIH1cblxuICBASW5wdXQoKSBkZWZhdWx0Q2VsbFJlbmRlcmVyQWN0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIF9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZDogQ29uZmlnQnV0dG9uQWdHcmlkW10gPSBbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNpIGVsIHZhbG9yIGVzIGB0cnVlYCBtdWVzdHJhIGVsIGBidXNjYWRvcmBcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZVNlYXJjaCA9IHRydWU7XG5cbiAgQElucHV0KCkgZG9tTGF5b3V0OiBcIm5vcm1hbFwiIHwgXCJhdXRvSGVpZ2h0XCIgPSBcIm5vcm1hbFwiO1xuICBASW5wdXQoKSBoZWlnaHQgPSBcIjIwZW1cIjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENwbmZpZ3VyYWNpw7NuIHBhcmEgZWwgYm90b24gYEFncmVnYXJgXG4gICAqIEBkZWZhdWx0ICd7IHZpc2libGU6IHRydWUsIGRpc2FibGVkOiBmYWxzZSB9J1xuICAgKi9cbiAgQElucHV0KCkgYnRuQWRkOiBCdXR0b25IZWFkZXIgPSB7IHZpc2libGU6IHRydWUgfTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIGFjdGl2YXIgbyBkZXNjYXRpdmFyIGVsIGRyYWcgJiBkcm9wXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSByb3dEcmFnTWFuYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhY3RpdmFyIG8gZGVzY2F0aXZhciBsYXMgYW5pbWFjaW9uZXNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGVSb3dzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdXNlR3JpZENvcHkgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlTb3J0S2V5ITogYW55O1xuICBASW5wdXQoKSBzaG93TWVudURlZmF1bHQgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVSYW5nZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBub1Jvd3NPdmVybGF5Q29tcG9uZW50ID0gXCJcIjtcbiAgQElucHV0KCkgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtcyA9IHt9O1xuICBASW5wdXQoKSB0b29sdGlwSGlkZURlbGF5OiBudW1iZXIgPSAxMDAwO1xuICBASW5wdXQoKSB0b29sdGlwU2hvd0RlbGF5OiBudW1iZXIgPSAxMDA7XG4gIEBJbnB1dCgpIHRvb2x0aXBTaG93TW9kZTogXCJzdGFuZGFyZFwiIHwgXCJ3aGVuVHJ1bmNhdGVkXCIgPSBcInN0YW5kYXJkXCI7XG4gIEBJbnB1dCgpIHZhbGlkYXRlUGFzdGVDZWxsPzogKGV2dFNvdXJjZTogQ2VsbEtleURvd25FdmVudCwgZXZ0VGFyZ2V0OiBDZWxsS2V5RG93bkV2ZW50KSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gKFxuICAgIGV2dFNvdXJjZTogQ2VsbEtleURvd25FdmVudCxcbiAgICBldnRUYXJnZXQ6IENlbGxLZXlEb3duRXZlbnRcbiAgKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIEBJbnB1dCgpIHZhbGlkYXRlUGFzdGVSb3dzPzogKGV2dFNvdXJjZTogSVJvd05vZGVbXSwgZXZ0VGFyZ2V0OiBJUm93Tm9kZVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gKFxuICAgIGV2dFNvdXJjZTogSVJvd05vZGVbXSxcbiAgICBldnRUYXJnZXQ6IElSb3dOb2RlW11cbiAgKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhZ3JlZ2FyIGNvbXBvbmVudGVzIGludGVybm9zIGRlbnRybyBkZSBsYSBncmlsbGFcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBmcmFtZXdvcmtDb21wb25lbnRzKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9mcmFtZXdvcmtDb21wb25lbnRzID0geyAuLi50aGlzLl9mcmFtZXdvcmtDb21wb25lbnRzLCAuLi52YWx1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIHBvZGVyIGFncmVnYXIgbcOhcyBvYmpldG9zIGFsIGNvbnRleHRvXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fY29udGV4dCA9IHsgLi4udGhpcy5fY29udGV4dCwgLi4udmFsdWUgfTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBPdXRwdXRcbiAgQE91dHB1dCgpIG9uQ2hhbmdlRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZEFwaT4oKTtcbiAgQE91dHB1dCgpIG9uR3JpZEFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbEtleURvd25FdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uRWRpdFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SVJvd05vZGU+KCk7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8W0dyaWRBcGksIGFueVtdXT4oKTtcbiAgQE91dHB1dCgpIG9uQ2VsbEtleURvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DZWxsU3RvcEVkaXRpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25BZ0dyaWQgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgSVJvd05vZGUsIGJvb2xlYW5dPigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25IZWFkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgYW55W11dPigpO1xuXG4gIC8vIEFnR3JpZCBFdmVudHMgLSBPdXB1dFxuICBAT3V0cHV0KCkgb25HcmlkUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpXT4oKTtcbiAgQE91dHB1dCgpIG9uR3JpZFNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpLCBSb3dEYXRhVXBkYXRlZEV2ZW50XT4oKTtcbiAgQE91dHB1dCgpIG9uUm93RHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgb25Sb3dFZGl0aW5nU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RWRpdGluZ1N0YXJ0ZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NsaWNrZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJvd0RvdWJsZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0RvdWJsZUNsaWNrZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1NlbGVjdGVkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsVmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNlbGxDb250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblBhc3RlTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNvcHlNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ29udGV4dE1lbnVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVDZWxsID0gbmV3IEV2ZW50RW1pdHRlcjxbQ2VsbEtleURvd25FdmVudCwgQ2VsbEtleURvd25FdmVudF0+KCk7XG4gIEBPdXRwdXQoKSBiZWZvcmVQYXN0ZUNlbGwgPSBuZXcgRXZlbnRFbWl0dGVyPFtDZWxsS2V5RG93bkV2ZW50LCBDZWxsS2V5RG93bkV2ZW50XT4oKTtcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxbSVJvd05vZGVbXSwgSVJvd05vZGVbXV0+KCk7XG4gIEBPdXRwdXQoKSBiZWZvcmVQYXN0ZVJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPFtJUm93Tm9kZVtdLCBJUm93Tm9kZVtdXT4oKTtcblxuICBjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnM6IENvbERlZltdID0gW107XG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICByZXNpemFibGU6IHRydWUsXG4gICAgc29ydGFibGU6IHRydWUsXG4gIH07XG4gIF9mcmFtZXdvcmtDb21wb25lbnRzID0geyAuLi5zY0NvbXBvbmVudHMgfTtcbiAgX2NvbnRleHQgPSB7IGNvbXBvbmVudFBhcmVudDogdGhpcyBhcyBhbnkgfTtcblxuICBib3R0b21NZW51OiBzdHJpbmcgPSBcIjBcIjtcbiAgbGVmdE1lbnU6IHN0cmluZyA9IFwiMFwiO1xuICBoaWRkZW5NZW51OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb3BpZWRDZWxsPzogQ2VsbEtleURvd25FdmVudDtcbiAgY29waWVkUm93PzogSVJvd05vZGVbXTtcblxuICBASW5wdXQoKVxuICBvdmVybGF5Tm9Sb3dzVGVtcGxhdGUgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHNoYWRvdy1ub25lXCI+XG5cdFx0XHRObyBzZSBlbmNvbnRyYXJvbiByZWdpc3Ryb3MuLi5cblx0XHQ8L3NwYW4+YDtcblxuICBvdmVybGF5TG9hZGluZ1RlbXBsYXRlID0gYDxzcGFuIGNsYXNzPVwiYWctb3ZlcmxheS1sb2FkaW5nLXRvcCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci0wIGJnLXdoaXRlIHNoYWRvdyBwLTQgdGV4dC1pbmZvXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+XG5cdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9tZWRpYS1kZW1vL2xvYWRpbmcuZ2lmXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjI1XCIgY2xhc3M9XCJtci0yXCI+XG5cdFx0XHQ8c3Ryb25nPkNhcmdhbmRvIHJlZ2lzdHJvczwvc3Ryb25nPlxuXHRcdDwvc3Bhbj5cblx0XHRgO1xuICBzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1ucyA9IHRydWU7XG4gIHN1cHByZXNzU2Nyb2xsT25OZXdEYXRhID0gZmFsc2U7XG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsID0gdHJ1ZTtcblxuICAvLyBBZ0dyaWQgU3R5bGVcbiAgZ2V0IG5nU3R5bGVDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBuZ1N0eWxlQWdHcmlkKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIH07XG4gIH1cblxuICBfc3Vic2NyaXB0aW9uJCA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvZ3Jlc3NWaXNpYmxlZCA9IGZhbHNlO1xuXG4gIGdyaWRBcGkhOiBHcmlkQXBpO1xuICBfc3Vic2NyaXB0aW9uUm93RGF0YSQ/OiBTdWJzY3JpcHRpb247XG5cbiAgc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIGNlbGxDb250ZXh0TWVudUFjdHVhbD86IENlbGxDb250ZXh0TWVudUV2ZW50O1xuXG4gIHByaXZhdGUgX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UgPSBpbmplY3QoU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSk7XG4gIHByaXZhdGUgX21lc3NhZ2VVdGlsU2VydmljZSA9IGluamVjdChNZXNzYWdlVXRpbFNlcnZpY2UpO1xuICBwcml2YXRlIF9hdWRpdFNlcnZpY2UgPSBpbmplY3QoQVVESVRfQUNUSU9OX1NFUlZJQ0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC5hZGQoXG4gICAgICB0aGlzLl9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlLmhhbmRsZXJCdXR0b25BY3Rpb24kLnN1YnNjcmliZSgoeyBpbmRleCwgYWN0aW9uLCBpc1JpZ2h0Q2xpY2sgfSkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uID09IG51bGwpIHJldHVybjtcbiAgICAgICAgaWYgKGFjdGlvbi50cmltKCkgPT09IFwiXCIpIHJldHVybjtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KGluZGV4LCBhY3Rpb24sIGlzUmlnaHRDbGljayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkhlYWRlckVtaXQoYWN0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaW5pdEFjdGlvbkJ1dHRvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ncmlkQXBpKSByZXR1cm47XG4gICAgaWYgKGNoYW5nZXNbXCJjb25maWdCdXR0b25zQWN0aW9uXCJdKSB0aGlzLmluaXRBY3Rpb25CdXR0b24oKTtcbiAgICBpZiAoY2hhbmdlc1tcInJvd0RhdGFcIl0pIHRoaXMuaW5pdFJvd0RhdGEoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID0gMDtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uSGVhZGVyRW1pdCh0eXBlQnV0dG9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9hdWRpdFNlcnZpY2U/LnNldEFjY2lvbih0eXBlQnV0dG9uKTtcbiAgICBjb25zdCByb3dzU2VsZWN0ZWQgPSB0aGlzLmdyaWRBcGk/LmdldFNlbGVjdGVkUm93cygpO1xuICAgIHRoaXMub25CdXR0b25BY3Rpb25IZWFkZXIuZW1pdChbdHlwZUJ1dHRvbiwgcm93c1NlbGVjdGVkXSk7XG4gIH1cblxuICBpbml0QWN0aW9uQnV0dG9uKCk6IHZvaWQge1xuICAgIGlmIChpc09iakVtcHR5KHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbikpIHJldHVybjtcblxuICAgIGNvbnN0IHsgYWdHcmlkIH0gPSB0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24hO1xuXG4gICAgaWYgKGFnR3JpZCAmJiBhZ0dyaWQuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZCA9IFsuLi5hZ0dyaWQuYWN0aW9uc107XG4gICAgfVxuXG4gICAgdGhpcy5zaXplRml0Q29sdW1uQWN0aW9uKCk7XG4gIH1cblxuICBzaXplRml0Q29sdW1uQWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkLmZpbHRlcigoeyBoaWRlIH0pID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5faGlkZUZ1bmMoaGlkZSk7XG4gICAgfSkubGVuZ3RoO1xuXG4gICAgY29uc3Qgd2lkdGggPSBsZW5ndGggPT0gMiA/IDkwIDogODA7XG4gICAgY29uc3QgbWluV2lkdGggPSBsZW5ndGggPiAyID8gbGVuZ3RoICogMzMgKyAxMCA6IHdpZHRoO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uczogQ29sRGVmID0ge1xuICAgICAgaGVhZGVyTmFtZTogXCJBY2Npb25lc1wiLFxuICAgICAgaGVhZGVyQ2xhc3M6IFwiYWctaGVhZGVyX19jZW50ZXJcIixcbiAgICAgIGZpZWxkOiBcIlwiLFxuICAgICAgd2lkdGg6IG1pbldpZHRoLFxuICAgICAgbWluV2lkdGgsXG4gICAgICBtYXhXaWR0aDogbWluV2lkdGgsXG4gICAgICBjZWxsQ2xhc3M6IFtcImQtZmxleFwiLCBcImp1c3RpZnktY29udGVudC1jZW50ZXJcIiwgXCJhbGlnbi1pdGVtcy1jZW50ZXJcIiwgXCJjZWxsLW1lcmdlZFwiXSxcbiAgICAgIGNlbGxTdHlsZTogeyBvdmVyZmxvdzogXCJ2aXNpYmxlXCIgfSxcbiAgICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuZGVmYXVsdENlbGxSZW5kZXJlckFjdGlvbnMgPyB0aGlzLmRlZmF1bHRDZWxsUmVuZGVyZXJBY3Rpb25zIDogXCJzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFwiLFxuICAgICAgcGlubmVkOiBcInJpZ2h0XCIsXG4gICAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgICBsb2NrUG9zaXRpb246IHRydWUsXG4gICAgICByb3dTcGFuOiAocCkgPT4gcD8uZGF0YT8ucm93U3BhbiA/PyAxLFxuICAgIH07XG4gICAgdGhpcy5jb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnMgPSB0aGlzLl9oaWRlQWdHcmlkTWVudUFjdGlvbigpID8gWy4uLnRoaXMuY29sdW1uRGVmc10gOiBbLi4udGhpcy5jb2x1bW5EZWZzLCBuZXdDb2x1bW5zXTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVBZ0dyaWRNZW51QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24gPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkPy5hY3Rpb25zLmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XG4gICAgICB9KSA/PyB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVGdW5jKGhpZGU6IEhpZGVGdWMgfCBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgaGlkZSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBoaWRlKCk7XG5cbiAgICByZXR1cm4gaGlkZTtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChyb3dJbmRleDogbnVtYmVyLCB0eXBlQnV0dG9uOiBzdHJpbmcsIGlzUmlnaHRDbGljazogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2F1ZGl0U2VydmljZT8uc2V0QWNjaW9uKHR5cGVCdXR0b24pO1xuICAgIGNvbnN0IElSb3dOb2RlID0gdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KHJvd0luZGV4KTtcblxuICAgIGlmIChJUm93Tm9kZSkge1xuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfRURJVCkge1xuICAgICAgICB0aGlzLm9uRWRpdFJvdy5lbWl0KElSb3dOb2RlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfREVMRVRFKSB7XG4gICAgICAgIHRoaXMub25EZWxldGVSb3cuZW1pdChbdGhpcy5ncmlkQXBpLCBbSVJvd05vZGUuZGF0YV1dKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uQWdHcmlkLmVtaXQoW3R5cGVCdXR0b24sIElSb3dOb2RlLCBpc1JpZ2h0Q2xpY2tdKTtcbiAgICB9XG4gIH1cblxuICBpbml0Um93RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkKSB0aGlzLnNpemVGaXRDb2x1bW5BY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcInJvd0RhdGFcIiwgW10pO1xuICAgICAgdGhpcy5ncmlkQXBpPy5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICB9XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQgPSB0aGlzLnJvd0RhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcInJvd0RhdGFcIiwgZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBjaGFuZ2VGaWx0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZ3JpZEFwaT8uc2V0UXVpY2tGaWx0ZXIodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2VGaWx0ZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkFkZFJvd0VtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fYXVkaXRTZXJ2aWNlPy5zZXRBY2Npb24oXCJBQ0MtUkVHSVNUUkFSXCIpO1xuICAgIHRoaXMub25BZGRSb3cuZW1pdCh0aGlzLmdyaWRBcGkpO1xuICB9XG5cbiAgaGlkZUhlYWRlck1lbnVBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyPy5zdWJtZW51Py5ldmVyeSgoeyBoaWRlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVGdW5jKGhpZGUpO1xuICAgICAgfSkgPz8gZmFsc2VcbiAgICApO1xuICB9XG5cbiAgcGFnaW5hdGlvbkNoYW5nZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NjQWdHcmlkUGFnaW5hdGlvbikgdGhpcy5fc2NBZ0dyaWRQYWdpbmF0aW9uLm9uUGFnaW5hdGlvbkNoYW5nZWQoKTtcbiAgfVxuXG4gIGdyaWRSZWFkeShldmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRBcGkgPSBldmVudC5hcGk7XG5cbiAgICB0aGlzLmluaXRSb3dEYXRhKCk7XG4gICAgdGhpcy5vbkdyaWRSZWFkeS5lbWl0KFt0aGlzLmdyaWRBcGldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZXZlbnQ6IG9wY2lvbmFsIC0gQ29udGllbmUgZWwgbm9kbyB5IGxhIGRhdGEgZGUgbGEgZmlsYSBhY3R1YWwuXG4gICAqIEBkZXNjcmlwdGlvbiBTZSBkaXNwYXJhIGNhZGEgdmV6IHF1ZSBsYSBmaWxhIGVzIGNvbG9jYWRhIGVuIHN1IG51ZXZhIHBvc2ljacOzbiAoRHJhZyAmIERyb3ApLlxuICAgKi9cbiAgcm93RHJhZ0VuZEVtaXQoZXZlbnQ6IFJvd0RyYWdFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25Sb3dEcmFnRW5kLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgY2VsbENvbnRleHRNZW51KGV2ZW50OiBDZWxsQ29udGV4dE1lbnVFdmVudCkge1xuICAgIHRoaXMuY2VsbENvbnRleHRNZW51QWN0dWFsID0gZXZlbnQ7XG4gICAgdGhpcy5vbkNlbGxDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmxlZnRNZW51ID0gKGV2ZW50LmV2ZW50ISBhcyBQb2ludGVyRXZlbnQpLngudG9TdHJpbmcoKTtcbiAgICB0aGlzLmJvdHRvbU1lbnUgPSAoKGV2ZW50LmV2ZW50ISBhcyBQb2ludGVyRXZlbnQpLnkgLSAyMCkudG9TdHJpbmcoKTtcbiAgICBpZiAoZXZlbnQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3dNZW51RGVmYXVsdCkgdGhpcy5tZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcbiAgfVxuXG4gIHJvd0RhdGFDaGFuZ2VkKGV2ZW50OiBSb3dEYXRhVXBkYXRlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmdyaWRBcGkpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dDb3VudCgpKSByZXR1cm47XG5cbiAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KFt0aGlzLmdyaWRBcGksIGV2ZW50XSk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICB0aGlzLm9uR3JpZFNlbGVjdENoYW5nZS5lbWl0KHRoaXMuZ3JpZEFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICB9XG5cbiAgY2VsbFN0b3BFZGl0aW5nKGV2dDogQ2VsbEVkaXRpbmdTdG9wcGVkRXZlbnQpIHtcbiAgICB0aGlzLm9uQ2VsbFN0b3BFZGl0aW5nLmVtaXQoZXZ0KTtcbiAgfVxuXG4gIGFzeW5jIGNlbGxLZXlEb3duKGV2dDogQ2VsbEtleURvd25FdmVudCkge1xuICAgIHRoaXMub25DZWxsS2V5RG93bi5lbWl0KGV2dCk7XG4gICAgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSA9PT0gXCJBcnJvd0Rvd25cIiAmJiBldnQubm9kZS5sYXN0Q2hpbGQpIHtcbiAgICAgIHRoaXMub25HcmlkQWRkUm93LmVtaXQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcImNcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XG4gICAgICB0aGlzLmNvcHkoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcInZcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XG4gICAgICBhd2FpdCB0aGlzLnBhc3RlKGV2dCk7XG4gICAgfVxuICB9XG5cbiAgY29weShldnQ6IENlbGxLZXlEb3duRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWV2dC5ub2RlLmlzU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5jb3BpZWRDZWxsID0gZXZ0O1xuICAgICAgaWYgKGV2dC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoKGV2dC52YWx1ZSBhcyBJTmdTZWxlY3QpPy5sYWJlbCA/PyBcIlwiKTtcbiAgICAgIGVsc2UgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZXZ0LnZhbHVlID8/IFwiXCIpO1xuICAgICAgdGhpcy5fbWVzc2FnZVV0aWxTZXJ2aWNlLmdldEFsZXJ0U3VjY2VzcyhcIkNlbGRhIENvcGlhZGFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29waWVkUm93ID0gdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgIHRoaXMuX21lc3NhZ2VVdGlsU2VydmljZS5nZXRBbGVydFN1Y2Nlc3MoXCJGaWxhIENvcGlhZGFcIik7XG4gICAgfVxuICAgIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG5cbiAgYXN5bmMgcGFzdGUoZXZ0OiBDZWxsS2V5RG93bkV2ZW50KSB7XG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkgJiYgdGhpcy5jb3BpZWRDZWxsKSB7XG4gICAgICBpZiAoZXZ0LmNvbHVtbi5nZXRDb2xJZCgpID09PSB0aGlzLmNvcGllZENlbGwuY29sdW1uLmdldENvbElkKCkgJiYgKGV2dC5kYXRhIGFzIEZvcm1Hcm91cCkuZ2V0KGV2dC5jb2x1bW4uZ2V0Q29sSWQoKSkhLmVuYWJsZWQpIHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlQ2VsbCkgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZUNlbGwodGhpcy5jb3BpZWRDZWxsLCBldnQpO1xuICAgICAgICBlbHNlIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICAgICAgICB0aGlzLmJlZm9yZVBhc3RlQ2VsbC5lbWl0KFtldnQsIHRoaXMuY29waWVkQ2VsbF0pO1xuICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgIChldnQuZGF0YSBhcyBGb3JtR3JvdXApLmdldChldnQuY29sdW1uLmdldENvbElkKCkpIS5zZXRWYWx1ZSh0aGlzLmNvcGllZENlbGwudmFsdWUpO1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xuICAgICAgICAgICAgY29sdW1uczogW2V2dC5jb2x1bW5dLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWZ0ZXJQYXN0ZUNlbGwuZW1pdChbZXZ0LCB0aGlzLmNvcGllZENlbGxdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZ0Lm5vZGUuaXNTZWxlY3RlZCgpICYmIHRoaXMuY29waWVkUm93KSB7XG4gICAgICBjb25zdCBJUm93Tm9kZSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlUm93cykgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZVJvd3ModGhpcy5jb3BpZWRSb3csIElSb3dOb2RlKTtcbiAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICB0aGlzLmJlZm9yZVBhc3RlUm93cy5lbWl0KFt0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLCB0aGlzLmNvcGllZFJvd10pO1xuICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgbGV0IGluZGV4Um93Q29weSA9IDA7XG4gICAgICAgIElSb3dOb2RlLmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgICAoci5kYXRhIGFzIEZvcm1Hcm91cCkucGF0Y2hWYWx1ZSgodGhpcy5jb3BpZWRSb3chW2luZGV4Um93Q29weV0uZGF0YSBhcyBGb3JtR3JvdXApLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xuICAgICAgICAgICAgcm93Tm9kZXM6IFtyXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmRleFJvd0NvcHkrKztcbiAgICAgICAgICBpZiAoaW5kZXhSb3dDb3B5ID09IHRoaXMuY29waWVkUm93IS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluZGV4Um93Q29weSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZnRlclBhc3RlUm93cy5lbWl0KFt0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLCB0aGlzLmNvcGllZFJvd10pO1xuICAgICAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb3B5TWVudShldmVudDogQ2VsbENvbnRleHRNZW51RXZlbnQpIHtcbiAgICB0aGlzLm9uQ29weU1lbnUuZW1pdChldmVudCk7XG4gICAgdGhpcy5jb3B5KGV2ZW50KTtcbiAgfVxuXG4gIHBhc3RlTWVudShldmVudDogQ2VsbENvbnRleHRNZW51RXZlbnQpIHtcbiAgICB0aGlzLm9uUGFzdGVNZW51LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMucGFzdGUoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkUGFzdGVNZW51KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdyaWRBcGk/LmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA9PSAwICYmICF0aGlzLmNvcGllZENlbGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwICYmICF0aGlzLmNvcGllZFJvdykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghdGhpcy5jb3BpZWRDZWxsICYmICF0aGlzLmNvcGllZFJvdykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqRW1wdHk8VD4ob2JqZWN0OiBUKTogYm9vbGVhbiB7XG4gIGlmIChvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCA9PT0gMDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgSEVBREVSIC0tPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG15LTJcIlxuICAgICpuZ0lmPVwidmlzaWJsZVNlYXJjaCB8fCBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGhlYWRlclRpdGxlXCI+XG4gICAgPCEtLSBIZWFkZXIgVGl0bGUgYW5kIFN1YnRpdGxlIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleCBhbGlnbi1pdGVtcy1lbmRcIiAqbmdJZj1cImhlYWRlclRpdGxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyU3VidGl0bGVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYy1hZy1ncmlkLWhlYWRlci1zdWJ0aXRsZSBtcy0yXCI+e3sgaGVhZGVyU3VidGl0bGUgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEVuZCBIZWFkZXIgVGl0bGUgYW5kIFN1YnRpdGxlIFNlY3Rpb24gLS0+XG5cbiAgICA8IS0tIEZpbHRybyAocG9zaWNpw7NuIGl6cXVpZXJkYSAtIGN1YW5kbyBOTyBoYXkgdMOtdHVsbyBvIHN1YnTDrXR1bG8pIC0tPlxuICAgIDxkaXYgW2NsYXNzXT1cImZpbGxTZWFyY2ggPyAnY29sLTEyIG15LTInIDogc2VhcmNoQ2xhc3NcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgIXNob3dTZWFyY2hJbkFjdGlvbnNcIj5cbiAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwidmlzaWJsZVNlYXJjaCAmJiAhc2hvd1NlYXJjaEluQWN0aW9ucyA/ICdjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTYgY29sLXhsLTcgY29sLTEyJyA6ICdjb2wnXCJcbiAgICAgIGNsYXNzPVwic2MtYWctZ3JpZC1oZWFkZXItYWN0aW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgYnRuQWRkPy52aXNpYmxlIHx8XG4gICAgICAgIHZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbnM/Lmxlbmd0aCB8fFxuICAgICAgICB2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGggfHxcbiAgICAgICAgY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyIHx8XG4gICAgICAgIGNvbmZpZ0hlYWRlciAhPT0gbnVsbCB8fFxuICAgICAgICBzaG93U2VhcmNoSW5BY3Rpb25zXG4gICAgICBcIj5cbiAgICAgIDwhLS0gRmlsdHJvIChwb3NpY2nDs24gZGVyZWNoYSAtIGN1YW5kbyBIQVkgdMOtdHVsbyBvIHN1YnTDrXR1bG8pIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXNlYXJjaC1pbmxpbmVcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgc2hvd1NlYXJjaEluQWN0aW9uc1wiPlxuICAgICAgICA8aW5wdXQtc2VhcmNoIChvbkNoYW5nZSk9XCJjaGFuZ2VGaWx0ZXIoJGV2ZW50KVwiPjwvaW5wdXQtc2VhcmNoPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEVuZCBTZWFyY2ggSW5wdXQgaW5saW5lIC0tPlxuXG4gICAgICA8IS0tIE90aGVyIEJlZm9yZSBBY3Rpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbiBvZiB2aWV3Q2hpbGRyZW5CZWZvcmVBY3Rpb25zXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ2aWV3Q2hpbGRyZW5CZWZvcmVBY3Rpb24udGVtcGxhdGVcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwhLS1FbmQgb3RoZXIgYmVmb3JlIGFjdGlvbnMgLS0+XG5cbiAgICAgIDwhLS0gSGVhZGVyIGFjdGlvbnMgYnV0dG9ucyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdCdXR0b25zQWN0aW9uICYmIGNvbmZpZ0hlYWRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnSGVhZGVyLmRpc2FibGVkID09PSBmYWxzZTsgZWxzZSB0ZW1wbGF0ZUFjdGlvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcEFjdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUFjdGlvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMDsgZWxzZSB0ZW1wQWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1pY29uIGJ0bi13aWR0aCBidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgIEFjY2lvbmVzXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBBY3Rpb25zPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoaWRlSGVhZGVyTWVudUFjdGlvbigpOyBlbHNlIHRlbXBsYXRlSGVhZGVyQWN0aW9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxuICAgICAgICAgICAgQWNjaW9uZXNcbiAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlSGVhZGVyQWN0aW9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCI+XG4gICAgICAgICAgICAgIEFjY2lvbmVzXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPHNjLW1lbnUtcGFuZWwgI3BhbmVsIGNsYXNzPVwiZC1ub25lXCIgW3N1Yk1lbnVzXT1cImNvbmZpZ0hlYWRlci5zdWJtZW51ID8/IFtdXCI+PC9zYy1tZW51LXBhbmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwhLS0gRW5kIGhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XG5cbiAgICAgIDwhLS0gT3RoZXIgYnV0dG9ucyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXIgb2Ygdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyLnRlbXBsYXRlXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tRW5kIG90aGVyIGJ1dHRvbnMgLS0+XG5cbiAgICAgIDwhLS0gQWRkIGJ1dHRvbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG5BZGQ/LnZpc2libGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuLXdpZHRoIGJ0biBidG4td2FybmluZyBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJvbkFkZFJvd0VtaXQoKVwiXG4gICAgICAgICAgI2J1dHRvbkFkZFxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidG5BZGQuZGlzYWJsZWQgPz8gZmFsc2VcIj5cbiAgICAgICAgICBBZ3JlZ2FyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tRW5kIGFkZCBidXR0b24gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgSEVBREVSIEVORCAtLT5cbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtuZ1N0eWxlXT1cIm5nU3R5bGVDb250YWluZXJcIj5cbiAgICAgIDxhZy1ncmlkLWFuZ3VsYXJcbiAgICAgICAgI2FnR3JpZFxuICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIm5nU3R5bGVBZ0dyaWRcIlxuICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnNcIlxuICAgICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcbiAgICAgICAgW2NvbXBvbmVudHNdPVwiX2ZyYW1ld29ya0NvbXBvbmVudHNcIlxuICAgICAgICBbY29udGV4dF09XCJfY29udGV4dFwiXG4gICAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcbiAgICAgICAgW2lzUm93U2VsZWN0YWJsZV09XCJpc1Jvd1NlbGVjdGFibGVcIlxuICAgICAgICBbcm93RHJhZ01hbmFnZWRdPVwicm93RHJhZ01hbmFnZWRcIlxuICAgICAgICBbZG9tTGF5b3V0XT1cImRvbUxheW91dFwiXG4gICAgICAgIFthbmltYXRlUm93c109XCJhbmltYXRlUm93c1wiXG4gICAgICAgIFtnZXRSb3dTdHlsZV09XCJnZXRSb3dTdHlsZVwiXG4gICAgICAgIFtlbmFibGVSYW5nZVNlbGVjdGlvbl09XCJlbmFibGVSYW5nZVNlbGVjdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc1Jvd1RyYW5zZm9ybV09XCJzdXBwcmVzc1Jvd1RyYW5zZm9ybVwiXG4gICAgICAgIFtzdXBwcmVzc01vdmVXaGVuUm93RHJhZ2dpbmddPVwiYW5pbWF0ZVJvd3NcIlxuICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm92ZXJsYXlOb1Jvd3NUZW1wbGF0ZVwiXG4gICAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cIm92ZXJsYXlMb2FkaW5nVGVtcGxhdGVcIlxuICAgICAgICBbbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtc109XCJub1Jvd3NPdmVybGF5Q29tcG9uZW50UGFyYW1zXCJcbiAgICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwic3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc1wiXG4gICAgICAgIFtzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YV09XCJzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YVwiXG4gICAgICAgIFtzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVja109XCJ0cnVlXCJcbiAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uID8gcGFnaW5hdGlvblBhZ2VTaXplIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc1BhZ2luYXRpb25QYW5lbF09XCJzdXBwcmVzc1BhZ2luYXRpb25QYW5lbFwiXG4gICAgICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwicm93RG91YmxlQ2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAocm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAocGFnaW5hdGlvbkNoYW5nZWQpPVwicGFnaW5hdGlvbkNoYW5nZWQoKVwiXG4gICAgICAgIChncmlkUmVhZHkpPVwiZ3JpZFJlYWR5KCRldmVudClcIlxuICAgICAgICAocm93RHJhZ0VuZCk9XCJyb3dEcmFnRW5kRW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxDb250ZXh0TWVudSk9XCJjZWxsQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgICAgIFtlbmFibGVDZWxsVGV4dFNlbGVjdGlvbl09XCJlbmFibGVDZWxsVGV4dFNlbGVjdGlvblwiXG4gICAgICAgIChyb3dEYXRhVXBkYXRlZCk9XCJyb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKHJvd0VkaXRpbmdTdGFydGVkKT1cIm9uUm93RWRpdGluZ1N0YXJ0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwiY2VsbFZhbHVlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxuICAgICAgICAoY2VsbEVkaXRpbmdTdG9wcGVkKT1cImNlbGxTdG9wRWRpdGluZygkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxLZXlEb3duKT1cImNlbGxLZXlEb3duKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICBbbXVsdGlTb3J0S2V5XT1cIm11bHRpU29ydEtleVwiXG4gICAgICAgIFt0b29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIlxuICAgICAgICBbdG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCJcbiAgICAgICAgW3Rvb2x0aXBTaG93TW9kZV09XCJ0b29sdGlwU2hvd01vZGVcIlxuICAgICAgICBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiPlxuICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XG4gIDwhLS0gQUctR1JJRCBQQUdJTkFUSU9OIC0tPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwYWdpbmF0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHNjLWFnLWdyaWQtcGFnaW5hdGlvblxuICAgICAgICAjc2NBZ0dyaWRQYWdpbmF0aW9uXG4gICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlcIlxuICAgICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCI+PC9zYy1hZy1ncmlkLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgUEFHSU5BVElPTiBFTkQgLS0+XG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XG48L2Rpdj5cblxuPGRpdlxuICAqbmdJZj1cInNob3dNZW51RGVmYXVsdFwiXG4gIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCJcbiAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAwcHg7IGhlaWdodDogMHB4XCJcbiAgW25nU3R5bGVdPVwieyB0b3A6IGJvdHRvbU1lbnUgKyAncHgnLCBsZWZ0OiBsZWZ0TWVudSArICdweCcgfVwiPlxuICA8bWF0LW1lbnUgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiAjc2NNZW51PVwibWF0TWVudVwiPlxuICAgIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiAoY2xpY2spPVwiY29weU1lbnUoY2VsbENvbnRleHRNZW51QWN0dWFsISlcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+IDxzcGFuPkNvcGlhcjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFBhc3RlTWVudVwiIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCIgKGNsaWNrKT1cInBhc3RlTWVudShjZWxsQ29udGV4dE1lbnVBY3R1YWwhKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICA8bWF0LWljb24+Y29udGVudF9wYXN0ZTwvbWF0LWljb24+PHNwYW4+UGVnYXI8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG4gIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNjTWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCI+XG4gICAgTWVudVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
601
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQW9CdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUtMLGNBQWMsR0FJZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7O0FBRzdGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQVlmLE1B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dEIsS0FBSztnQkFTRixPQUFPO3NCQURWLEtBQUs7Z0JBTUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBR0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBa0JQLHFCQUFxQjtzQkFEcEIsS0FBSzs7QUF3VFIsTUFBTSxVQUFVLFVBQVUsQ0FBSSxNQUFTO0lBQ3JDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXpELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuaW1wb3J0IHtcbiAgQ2VsbENvbnRleHRNZW51RXZlbnQsXG4gIENlbGxFZGl0aW5nU3RvcHBlZEV2ZW50LFxuICBDZWxsS2V5RG93bkV2ZW50LFxuICBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQsXG4gIENvbERlZixcbiAgR3JpZEFwaSxcbiAgR3JpZFJlYWR5RXZlbnQsXG4gIElSb3dOb2RlLFxuICBJc1Jvd1NlbGVjdGFibGUsXG4gIFJvd0NsaWNrZWRFdmVudCxcbiAgUm93RGF0YVVwZGF0ZWRFdmVudCxcbiAgUm93RG91YmxlQ2xpY2tlZEV2ZW50LFxuICBSb3dEcmFnRXZlbnQsXG4gIFJvd0VkaXRpbmdTdGFydGVkRXZlbnQsXG4gIFJvd1NlbGVjdGVkRXZlbnQsXG59IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJTmdTZWxlY3QgfSBmcm9tIFwiLi4vLi4vdXRpbHMvSU5nU2VsZWN0XCI7XG5pbXBvcnQge1xuICBCdXR0b25IZWFkZXIsXG4gIENvbmZpZ0J1dHRvbkFjdGlvbixcbiAgQ29uZmlnQnV0dG9uQWdHcmlkLFxuICBDb25maWdCdXR0b25IZWFkZXIsXG4gIEVudW1CdXR0b25UeXBlLFxuICBHZXRSb3dTdHlsZSxcbiAgSGlkZUZ1YyxcbiAgUm93U2VsZWN0aW9uLFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvSVNjQWdHcmlkXCI7XG5pbXBvcnQgeyBNZXNzYWdlVXRpbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWVzc2FnZS11dGlsLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFVRElUX0FDVElPTl9TRVJWSUNFIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Rva2VuL2F1ZGl0LnRva2VuXCI7XG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBzY0NvbXBvbmVudHMgfSBmcm9tIFwiLi4vY2VsbC1yZW5kZXIvc2MtY2VsbC1yZW5kZXItY29uZmlnXCI7XG5pbXBvcnQgeyBTY0FnR3JpZEJ1dHRvbkhlYWRlciB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL3NjQWdHcmlkLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgU2NBZ0dyaWRCZWZvcmVBY3Rpb25EaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9zY0FnR3JpZEJlZm9yZUFjdGlvbi5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IFNjQWdHcmlkUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9zYy1hZy1ncmlkLXBhZ2luYXRpb24vc2MtYWctZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudFwiO1xuXG5sZXQgbmV4dElkID0gMDtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzYy1hZy1ncmlkLWN1c3RvbWl6YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vc2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50LnNjc3NcIixcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2VdLFxuICBob3N0OiB7XG4gICAgXCJbaWRdXCI6IFwiaWRTY0FnR3JpZEN1c3RvbWl6YWJsZUNvbXBvbmVudFwiLFxuICAgIGNsYXNzOiBcInNjLWFnLWdyaWQtY3VzdG9taXphYmxlXCIsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQWdHcmlkQ3VzdG9taXphYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oU2NBZ0dyaWRCdXR0b25IZWFkZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycyE6IFF1ZXJ5TGlzdDxTY0FnR3JpZEJ1dHRvbkhlYWRlcj47XG4gIEBDb250ZW50Q2hpbGRyZW4oU2NBZ0dyaWRCZWZvcmVBY3Rpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdmlld0NoaWxkcmVuQmVmb3JlQWN0aW9ucyE6IFF1ZXJ5TGlzdDxTY0FnR3JpZEJlZm9yZUFjdGlvbkRpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZChcIm1lbnVUcmlnZ2VyXCIpIG1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG5cbiAgQFZpZXdDaGlsZChcInNjQWdHcmlkUGFnaW5hdGlvblwiKVxuICBwcml2YXRlIF9zY0FnR3JpZFBhZ2luYXRpb24/OiBTY0FnR3JpZFBhZ2luYXRpb25Db21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChcImJ1dHRvbkFkZFwiKSBidXR0b25BZGQ/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgZ2V0IGJ1dHRvbkFkZEVsZW1lbnQoKTogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25BZGQ/Lm5hdGl2ZUVsZW1lbnQgPz8gbnVsbDtcbiAgfVxuXG4gIGlkU2NBZ0dyaWRDdXN0b21pemFibGVDb21wb25lbnQgPSBgc2MtYWctZ3JpZC1jdXN0b21pemFibGUtJHsrK25leHRJZH1gO1xuXG4gIEBJbnB1dCgpIGlzUm93U2VsZWN0YWJsZTogSXNSb3dTZWxlY3RhYmxlID0gKCkgPT4gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFTDrXR1bG8gcXVlIHNlIG11ZXN0cmEgZW4gZWwgaGVhZGVyIGRlIGxhIGdyaWxsYVxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGl0bGU6IHN0cmluZyA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmFjacOzbiBkZWwgYmFkZ2UgKGV0aXF1ZXRhIGNvbiBjb250YWRvcikgZGVsIGhlYWRlclxuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyU3VidGl0bGU6IHN0cmluZyA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmEgc2kgZWwgYnVzY2Fkb3IgZGViZSBtb3N0cmFyc2UganVudG8gYSBsb3MgYm90b25lcyBkZSBhY2Npw7NuXG4gICAqL1xuICBnZXQgc2hvd1NlYXJjaEluQWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmhlYWRlclRpdGxlO1xuICB9XG5cbiAgc2VhcmNoQ2xhc3MgPSBcImNvbC0xMiBjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTYgY29sLXhsLTUgbXktMlwiO1xuICBASW5wdXQoKSBnZXRSb3dTdHlsZTogR2V0Um93U3R5bGUgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpbGxTZWFyY2ggPSBmYWxzZTtcbiAgLy8jcmVnaW9uIElucHV0c1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENhbnRpZGFkIGRlIGl0ZW1zIHF1ZSBzZSBtb3N0cmFyw6EgcG9yIHDDoWdpbmFcbiAgICogQGRlZmF1bHQgMTVcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25QYWdlU2l6ZSA9IDE1O1xuICBASW5wdXQoKSBzZWFyY2hXaWR0aCA9IFwiXCI7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gIE9wY2lvbmVzIGRlIHRhbWHDsW8gZGUgcMOhZ2luYVxuICAgKiBAZGVmYXVsdCAnWzUsIDEwLCAxNSwgMjAsIDI1XSdcbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgMTUsIDIwLCAyNV07XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2kgZWwgdmFsb3IgZXMgYHRydWVgIG11ZXN0cmEgbGEgcGFnaW5hY2nDs25cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgcGFnaW5hdGlvbiA9IHRydWU7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGlwbyBkZSBzZWxlY2lvbiBlbiBsYSBgZ3JpbGxhYHNcbiAgICogQGRlZmF1bHQgJ3NpbXBsZSdcbiAgICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogUm93U2VsZWN0aW9uID0gXCJzaW5nbGVcIjtcbiAgLy8gQElucHV0KCkgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IHRydWU7XG4gIGdldCBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdGlvbiA9PT0gXCJzaW5nbGVcIiA/IGZhbHNlIDogdHJ1ZTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IGRlIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBgZ3JpbGxhYFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgZGUgZGF0b3MgcXVlIHNlIG1vc3RyYXJhIGVuIGxhIGBncmlsbGFgXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpIHJvd0RhdGE6IE9ic2VydmFibGU8YW55W10+ID0gb2YoW10pO1xuXG4gIEBJbnB1dCgpIGNvbmZpZ0J1dHRvbnNBY3Rpb24hOiBDb25maWdCdXR0b25BY3Rpb247XG4gIGdldCBjb25maWdIZWFkZXIoKTogQ29uZmlnQnV0dG9uSGVhZGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyID8/IG51bGw7XG4gIH1cblxuICBASW5wdXQoKSBkZWZhdWx0Q2VsbFJlbmRlcmVyQWN0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIF9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZDogQ29uZmlnQnV0dG9uQWdHcmlkW10gPSBbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNpIGVsIHZhbG9yIGVzIGB0cnVlYCBtdWVzdHJhIGVsIGBidXNjYWRvcmBcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZVNlYXJjaCA9IHRydWU7XG5cbiAgQElucHV0KCkgZG9tTGF5b3V0OiBcIm5vcm1hbFwiIHwgXCJhdXRvSGVpZ2h0XCIgPSBcIm5vcm1hbFwiO1xuICBASW5wdXQoKSBoZWlnaHQgPSBcIjIwZW1cIjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENwbmZpZ3VyYWNpw7NuIHBhcmEgZWwgYm90b24gYEFncmVnYXJgXG4gICAqIEBkZWZhdWx0ICd7IHZpc2libGU6IHRydWUsIGRpc2FibGVkOiBmYWxzZSB9J1xuICAgKi9cbiAgQElucHV0KCkgYnRuQWRkOiBCdXR0b25IZWFkZXIgPSB7IHZpc2libGU6IHRydWUgfTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIGFjdGl2YXIgbyBkZXNjYXRpdmFyIGVsIGRyYWcgJiBkcm9wXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSByb3dEcmFnTWFuYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhY3RpdmFyIG8gZGVzY2F0aXZhciBsYXMgYW5pbWFjaW9uZXNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGVSb3dzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdXNlR3JpZENvcHkgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlTb3J0S2V5ITogYW55O1xuICBASW5wdXQoKSBzaG93TWVudURlZmF1bHQgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVSYW5nZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBub1Jvd3NPdmVybGF5Q29tcG9uZW50ID0gXCJcIjtcbiAgQElucHV0KCkgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtcyA9IHt9O1xuICBASW5wdXQoKSB0b29sdGlwSGlkZURlbGF5OiBudW1iZXIgPSAxMDAwO1xuICBASW5wdXQoKSB0b29sdGlwU2hvd0RlbGF5OiBudW1iZXIgPSAxMDA7XG4gIEBJbnB1dCgpIHRvb2x0aXBTaG93TW9kZTogXCJzdGFuZGFyZFwiIHwgXCJ3aGVuVHJ1bmNhdGVkXCIgPSBcInN0YW5kYXJkXCI7XG4gIEBJbnB1dCgpIHZhbGlkYXRlUGFzdGVDZWxsPzogKGV2dFNvdXJjZTogQ2VsbEtleURvd25FdmVudCwgZXZ0VGFyZ2V0OiBDZWxsS2V5RG93bkV2ZW50KSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gKFxuICAgIGV2dFNvdXJjZTogQ2VsbEtleURvd25FdmVudCxcbiAgICBldnRUYXJnZXQ6IENlbGxLZXlEb3duRXZlbnRcbiAgKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIEBJbnB1dCgpIHZhbGlkYXRlUGFzdGVSb3dzPzogKGV2dFNvdXJjZTogSVJvd05vZGVbXSwgZXZ0VGFyZ2V0OiBJUm93Tm9kZVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gKFxuICAgIGV2dFNvdXJjZTogSVJvd05vZGVbXSxcbiAgICBldnRUYXJnZXQ6IElSb3dOb2RlW11cbiAgKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhZ3JlZ2FyIGNvbXBvbmVudGVzIGludGVybm9zIGRlbnRybyBkZSBsYSBncmlsbGFcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBmcmFtZXdvcmtDb21wb25lbnRzKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9mcmFtZXdvcmtDb21wb25lbnRzID0geyAuLi50aGlzLl9mcmFtZXdvcmtDb21wb25lbnRzLCAuLi52YWx1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIHBvZGVyIGFncmVnYXIgbcOhcyBvYmpldG9zIGFsIGNvbnRleHRvXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fY29udGV4dCA9IHsgLi4udGhpcy5fY29udGV4dCwgLi4udmFsdWUgfTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBPdXRwdXRcbiAgQE91dHB1dCgpIG9uQ2hhbmdlRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZEFwaT4oKTtcbiAgQE91dHB1dCgpIG9uR3JpZEFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbEtleURvd25FdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uRWRpdFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SVJvd05vZGU+KCk7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8W0dyaWRBcGksIGFueVtdXT4oKTtcbiAgQE91dHB1dCgpIG9uQ2VsbEtleURvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DZWxsU3RvcEVkaXRpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25BZ0dyaWQgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgSVJvd05vZGUsIGJvb2xlYW5dPigpO1xuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25IZWFkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgYW55W11dPigpO1xuXG4gIC8vIEFnR3JpZCBFdmVudHMgLSBPdXB1dFxuICBAT3V0cHV0KCkgb25HcmlkUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpXT4oKTtcbiAgQE91dHB1dCgpIG9uR3JpZFNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpLCBSb3dEYXRhVXBkYXRlZEV2ZW50XT4oKTtcbiAgQE91dHB1dCgpIG9uUm93RHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgb25Sb3dFZGl0aW5nU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RWRpdGluZ1N0YXJ0ZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NsaWNrZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJvd0RvdWJsZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0RvdWJsZUNsaWNrZWRFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1NlbGVjdGVkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsVmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNlbGxDb250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblBhc3RlTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkNvcHlNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ29udGV4dE1lbnVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVDZWxsID0gbmV3IEV2ZW50RW1pdHRlcjxbQ2VsbEtleURvd25FdmVudCwgQ2VsbEtleURvd25FdmVudF0+KCk7XG4gIEBPdXRwdXQoKSBiZWZvcmVQYXN0ZUNlbGwgPSBuZXcgRXZlbnRFbWl0dGVyPFtDZWxsS2V5RG93bkV2ZW50LCBDZWxsS2V5RG93bkV2ZW50XT4oKTtcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxbSVJvd05vZGVbXSwgSVJvd05vZGVbXV0+KCk7XG4gIEBPdXRwdXQoKSBiZWZvcmVQYXN0ZVJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPFtJUm93Tm9kZVtdLCBJUm93Tm9kZVtdXT4oKTtcblxuICBjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnM6IENvbERlZltdID0gW107XG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICByZXNpemFibGU6IHRydWUsXG4gICAgc29ydGFibGU6IHRydWUsXG4gIH07XG4gIF9mcmFtZXdvcmtDb21wb25lbnRzID0geyAuLi5zY0NvbXBvbmVudHMgfTtcbiAgX2NvbnRleHQgPSB7IGNvbXBvbmVudFBhcmVudDogdGhpcyBhcyBhbnkgfTtcblxuICBib3R0b21NZW51OiBzdHJpbmcgPSBcIjBcIjtcbiAgbGVmdE1lbnU6IHN0cmluZyA9IFwiMFwiO1xuICBoaWRkZW5NZW51OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb3BpZWRDZWxsPzogQ2VsbEtleURvd25FdmVudDtcbiAgY29waWVkUm93PzogSVJvd05vZGVbXTtcblxuICBASW5wdXQoKVxuICBvdmVybGF5Tm9Sb3dzVGVtcGxhdGUgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHNoYWRvdy1ub25lXCI+XG5cdFx0XHRObyBzZSBlbmNvbnRyYXJvbiByZWdpc3Ryb3MuLi5cblx0XHQ8L3NwYW4+YDtcblxuICBvdmVybGF5TG9hZGluZ1RlbXBsYXRlID0gYDxzcGFuIGNsYXNzPVwiYWctb3ZlcmxheS1sb2FkaW5nLXRvcCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci0wIGJnLXdoaXRlIHNoYWRvdyBwLTQgdGV4dC1pbmZvXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+XG5cdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9tZWRpYS1kZW1vL2xvYWRpbmcuZ2lmXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjI1XCIgY2xhc3M9XCJtci0yXCI+XG5cdFx0XHQ8c3Ryb25nPkNhcmdhbmRvIHJlZ2lzdHJvczwvc3Ryb25nPlxuXHRcdDwvc3Bhbj5cblx0XHRgO1xuICBzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1ucyA9IHRydWU7XG4gIHN1cHByZXNzU2Nyb2xsT25OZXdEYXRhID0gZmFsc2U7XG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsID0gdHJ1ZTtcblxuICAvLyBBZ0dyaWQgU3R5bGVcbiAgZ2V0IG5nU3R5bGVDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBuZ1N0eWxlQWdHcmlkKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIH07XG4gIH1cblxuICBfc3Vic2NyaXB0aW9uJCA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvZ3Jlc3NWaXNpYmxlZCA9IGZhbHNlO1xuXG4gIGdyaWRBcGkhOiBHcmlkQXBpO1xuICBfc3Vic2NyaXB0aW9uUm93RGF0YSQ/OiBTdWJzY3JpcHRpb247XG5cbiAgc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIGNlbGxDb250ZXh0TWVudUFjdHVhbD86IENlbGxDb250ZXh0TWVudUV2ZW50O1xuXG4gIHByaXZhdGUgX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UgPSBpbmplY3QoU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSk7XG4gIHByaXZhdGUgX21lc3NhZ2VVdGlsU2VydmljZSA9IGluamVjdChNZXNzYWdlVXRpbFNlcnZpY2UpO1xuICBwcml2YXRlIF9hdWRpdFNlcnZpY2UgPSBpbmplY3QoQVVESVRfQUNUSU9OX1NFUlZJQ0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC5hZGQoXG4gICAgICB0aGlzLl9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlLmhhbmRsZXJCdXR0b25BY3Rpb24kLnN1YnNjcmliZSgoeyBpbmRleCwgYWN0aW9uLCBpc1JpZ2h0Q2xpY2sgfSkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uID09IG51bGwpIHJldHVybjtcbiAgICAgICAgaWYgKGFjdGlvbi50cmltKCkgPT09IFwiXCIpIHJldHVybjtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KGluZGV4LCBhY3Rpb24sIGlzUmlnaHRDbGljayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkhlYWRlckVtaXQoYWN0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaW5pdEFjdGlvbkJ1dHRvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ncmlkQXBpKSByZXR1cm47XG4gICAgaWYgKGNoYW5nZXNbXCJjb25maWdCdXR0b25zQWN0aW9uXCJdKSB0aGlzLmluaXRBY3Rpb25CdXR0b24oKTtcbiAgICBpZiAoY2hhbmdlc1tcInJvd0RhdGFcIl0pIHRoaXMuaW5pdFJvd0RhdGEoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID0gMDtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uSGVhZGVyRW1pdCh0eXBlQnV0dG9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9hdWRpdFNlcnZpY2U/LnNldEFjY2lvbih0eXBlQnV0dG9uKTtcbiAgICBjb25zdCByb3dzU2VsZWN0ZWQgPSB0aGlzLmdyaWRBcGk/LmdldFNlbGVjdGVkUm93cygpO1xuICAgIHRoaXMub25CdXR0b25BY3Rpb25IZWFkZXIuZW1pdChbdHlwZUJ1dHRvbiwgcm93c1NlbGVjdGVkXSk7XG4gIH1cblxuICBpbml0QWN0aW9uQnV0dG9uKCk6IHZvaWQge1xuICAgIGlmIChpc09iakVtcHR5KHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbikpIHJldHVybjtcblxuICAgIGNvbnN0IHsgYWdHcmlkIH0gPSB0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24hO1xuXG4gICAgaWYgKGFnR3JpZCAmJiBhZ0dyaWQuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZCA9IFsuLi5hZ0dyaWQuYWN0aW9uc107XG4gICAgfVxuXG4gICAgdGhpcy5zaXplRml0Q29sdW1uQWN0aW9uKCk7XG4gIH1cblxuICBzaXplRml0Q29sdW1uQWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkLmZpbHRlcigoeyBoaWRlIH0pID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5faGlkZUZ1bmMoaGlkZSk7XG4gICAgfSkubGVuZ3RoO1xuXG4gICAgY29uc3Qgd2lkdGggPSBsZW5ndGggPT0gMiA/IDkwIDogODA7XG4gICAgY29uc3QgbWluV2lkdGggPSBsZW5ndGggPiAyID8gbGVuZ3RoICogMzMgKyAxMCA6IHdpZHRoO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uczogQ29sRGVmID0ge1xuICAgICAgaGVhZGVyTmFtZTogXCJBY2Npb25lc1wiLFxuICAgICAgaGVhZGVyQ2xhc3M6IFwiYWctaGVhZGVyX19jZW50ZXJcIixcbiAgICAgIGZpZWxkOiBcIlwiLFxuICAgICAgd2lkdGg6IG1pbldpZHRoLFxuICAgICAgbWluV2lkdGgsXG4gICAgICBtYXhXaWR0aDogbWluV2lkdGgsXG4gICAgICBjZWxsQ2xhc3M6IFtcImQtZmxleFwiLCBcImp1c3RpZnktY29udGVudC1jZW50ZXJcIiwgXCJhbGlnbi1pdGVtcy1jZW50ZXJcIiwgXCJjZWxsLW1lcmdlZFwiXSxcbiAgICAgIGNlbGxTdHlsZTogeyBvdmVyZmxvdzogXCJ2aXNpYmxlXCIgfSxcbiAgICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuZGVmYXVsdENlbGxSZW5kZXJlckFjdGlvbnMgPyB0aGlzLmRlZmF1bHRDZWxsUmVuZGVyZXJBY3Rpb25zIDogXCJzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFwiLFxuICAgICAgcGlubmVkOiBcInJpZ2h0XCIsXG4gICAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgICBsb2NrUG9zaXRpb246IHRydWUsXG4gICAgICByb3dTcGFuOiAocCkgPT4gcD8uZGF0YT8ucm93U3BhbiA/PyAxLFxuICAgIH07XG4gICAgdGhpcy5jb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnMgPSB0aGlzLl9oaWRlQWdHcmlkTWVudUFjdGlvbigpID8gWy4uLnRoaXMuY29sdW1uRGVmc10gOiBbLi4udGhpcy5jb2x1bW5EZWZzLCBuZXdDb2x1bW5zXTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVBZ0dyaWRNZW51QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24gPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkPy5hY3Rpb25zLmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XG4gICAgICB9KSA/PyB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVGdW5jKGhpZGU6IEhpZGVGdWMgfCBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgaGlkZSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBoaWRlKCk7XG5cbiAgICByZXR1cm4gaGlkZTtcbiAgfVxuXG4gIG9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChyb3dJbmRleDogbnVtYmVyLCB0eXBlQnV0dG9uOiBzdHJpbmcsIGlzUmlnaHRDbGljazogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2F1ZGl0U2VydmljZT8uc2V0QWNjaW9uKHR5cGVCdXR0b24pO1xuICAgIGNvbnN0IElSb3dOb2RlID0gdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KHJvd0luZGV4KTtcblxuICAgIGlmIChJUm93Tm9kZSkge1xuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfRURJVCkge1xuICAgICAgICB0aGlzLm9uRWRpdFJvdy5lbWl0KElSb3dOb2RlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfREVMRVRFKSB7XG4gICAgICAgIHRoaXMub25EZWxldGVSb3cuZW1pdChbdGhpcy5ncmlkQXBpLCBbSVJvd05vZGUuZGF0YV1dKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uQWdHcmlkLmVtaXQoW3R5cGVCdXR0b24sIElSb3dOb2RlLCBpc1JpZ2h0Q2xpY2tdKTtcbiAgICB9XG4gIH1cblxuICBpbml0Um93RGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkKSB0aGlzLnNpemVGaXRDb2x1bW5BY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcInJvd0RhdGFcIiwgW10pO1xuICAgICAgdGhpcy5ncmlkQXBpPy5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICB9XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQgPSB0aGlzLnJvd0RhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcInJvd0RhdGFcIiwgZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBjaGFuZ2VGaWx0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZ3JpZEFwaT8uc2V0UXVpY2tGaWx0ZXIodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2VGaWx0ZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkFkZFJvd0VtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fYXVkaXRTZXJ2aWNlPy5zZXRBY2Npb24oXCJBQ0MtUkVHSVNUUkFSXCIpO1xuICAgIHRoaXMub25BZGRSb3cuZW1pdCh0aGlzLmdyaWRBcGkpO1xuICB9XG5cbiAgaGlkZUhlYWRlck1lbnVBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyPy5zdWJtZW51Py5ldmVyeSgoeyBoaWRlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVGdW5jKGhpZGUpO1xuICAgICAgfSkgPz8gZmFsc2VcbiAgICApO1xuICB9XG5cbiAgcGFnaW5hdGlvbkNoYW5nZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NjQWdHcmlkUGFnaW5hdGlvbikgdGhpcy5fc2NBZ0dyaWRQYWdpbmF0aW9uLm9uUGFnaW5hdGlvbkNoYW5nZWQoKTtcbiAgfVxuXG4gIGdyaWRSZWFkeShldmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRBcGkgPSBldmVudC5hcGk7XG5cbiAgICB0aGlzLmluaXRSb3dEYXRhKCk7XG4gICAgdGhpcy5vbkdyaWRSZWFkeS5lbWl0KFt0aGlzLmdyaWRBcGldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZXZlbnQ6IG9wY2lvbmFsIC0gQ29udGllbmUgZWwgbm9kbyB5IGxhIGRhdGEgZGUgbGEgZmlsYSBhY3R1YWwuXG4gICAqIEBkZXNjcmlwdGlvbiBTZSBkaXNwYXJhIGNhZGEgdmV6IHF1ZSBsYSBmaWxhIGVzIGNvbG9jYWRhIGVuIHN1IG51ZXZhIHBvc2ljacOzbiAoRHJhZyAmIERyb3ApLlxuICAgKi9cbiAgcm93RHJhZ0VuZEVtaXQoZXZlbnQ6IFJvd0RyYWdFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25Sb3dEcmFnRW5kLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgY2VsbENvbnRleHRNZW51KGV2ZW50OiBDZWxsQ29udGV4dE1lbnVFdmVudCkge1xuICAgIHRoaXMuY2VsbENvbnRleHRNZW51QWN0dWFsID0gZXZlbnQ7XG4gICAgdGhpcy5vbkNlbGxDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmxlZnRNZW51ID0gKGV2ZW50LmV2ZW50ISBhcyBQb2ludGVyRXZlbnQpLngudG9TdHJpbmcoKTtcbiAgICB0aGlzLmJvdHRvbU1lbnUgPSAoKGV2ZW50LmV2ZW50ISBhcyBQb2ludGVyRXZlbnQpLnkgLSAyMCkudG9TdHJpbmcoKTtcbiAgICBpZiAoZXZlbnQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3dNZW51RGVmYXVsdCkgdGhpcy5tZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcbiAgfVxuXG4gIHJvd0RhdGFDaGFuZ2VkKGV2ZW50OiBSb3dEYXRhVXBkYXRlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmdyaWRBcGkpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dDb3VudCgpKSByZXR1cm47XG5cbiAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KFt0aGlzLmdyaWRBcGksIGV2ZW50XSk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICB0aGlzLm9uR3JpZFNlbGVjdENoYW5nZS5lbWl0KHRoaXMuZ3JpZEFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICB9XG5cbiAgY2VsbFN0b3BFZGl0aW5nKGV2dDogQ2VsbEVkaXRpbmdTdG9wcGVkRXZlbnQpIHtcbiAgICB0aGlzLm9uQ2VsbFN0b3BFZGl0aW5nLmVtaXQoZXZ0KTtcbiAgfVxuXG4gIGFzeW5jIGNlbGxLZXlEb3duKGV2dDogQ2VsbEtleURvd25FdmVudCkge1xuICAgIHRoaXMub25DZWxsS2V5RG93bi5lbWl0KGV2dCk7XG4gICAgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSA9PT0gXCJBcnJvd0Rvd25cIiAmJiBldnQubm9kZS5sYXN0Q2hpbGQpIHtcbiAgICAgIHRoaXMub25HcmlkQWRkUm93LmVtaXQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcImNcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XG4gICAgICB0aGlzLmNvcHkoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcInZcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XG4gICAgICBhd2FpdCB0aGlzLnBhc3RlKGV2dCk7XG4gICAgfVxuICB9XG5cbiAgY29weShldnQ6IENlbGxLZXlEb3duRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWV2dC5ub2RlLmlzU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5jb3BpZWRDZWxsID0gZXZ0O1xuICAgICAgaWYgKGV2dC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoKGV2dC52YWx1ZSBhcyBJTmdTZWxlY3QpPy5sYWJlbCA/PyBcIlwiKTtcbiAgICAgIGVsc2UgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZXZ0LnZhbHVlID8/IFwiXCIpO1xuICAgICAgdGhpcy5fbWVzc2FnZVV0aWxTZXJ2aWNlLmdldEFsZXJ0U3VjY2VzcyhcIkNlbGRhIENvcGlhZGFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29waWVkUm93ID0gdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgIHRoaXMuX21lc3NhZ2VVdGlsU2VydmljZS5nZXRBbGVydFN1Y2Nlc3MoXCJGaWxhIENvcGlhZGFcIik7XG4gICAgfVxuICAgIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG5cbiAgYXN5bmMgcGFzdGUoZXZ0OiBDZWxsS2V5RG93bkV2ZW50KSB7XG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkgJiYgdGhpcy5jb3BpZWRDZWxsKSB7XG4gICAgICBpZiAoZXZ0LmNvbHVtbi5nZXRDb2xJZCgpID09PSB0aGlzLmNvcGllZENlbGwuY29sdW1uLmdldENvbElkKCkgJiYgKGV2dC5kYXRhIGFzIEZvcm1Hcm91cCkuZ2V0KGV2dC5jb2x1bW4uZ2V0Q29sSWQoKSkhLmVuYWJsZWQpIHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlQ2VsbCkgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZUNlbGwodGhpcy5jb3BpZWRDZWxsLCBldnQpO1xuICAgICAgICBlbHNlIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICAgICAgICB0aGlzLmJlZm9yZVBhc3RlQ2VsbC5lbWl0KFtldnQsIHRoaXMuY29waWVkQ2VsbF0pO1xuICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgIChldnQuZGF0YSBhcyBGb3JtR3JvdXApLmdldChldnQuY29sdW1uLmdldENvbElkKCkpIS5zZXRWYWx1ZSh0aGlzLmNvcGllZENlbGwudmFsdWUpO1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xuICAgICAgICAgICAgY29sdW1uczogW2V2dC5jb2x1bW5dLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWZ0ZXJQYXN0ZUNlbGwuZW1pdChbZXZ0LCB0aGlzLmNvcGllZENlbGxdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZ0Lm5vZGUuaXNTZWxlY3RlZCgpICYmIHRoaXMuY29waWVkUm93KSB7XG4gICAgICBjb25zdCBJUm93Tm9kZSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlUm93cykgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZVJvd3ModGhpcy5jb3BpZWRSb3csIElSb3dOb2RlKTtcbiAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgICB0aGlzLmJlZm9yZVBhc3RlUm93cy5lbWl0KFt0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLCB0aGlzLmNvcGllZFJvd10pO1xuICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgbGV0IGluZGV4Um93Q29weSA9IDA7XG4gICAgICAgIElSb3dOb2RlLmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgICAoci5kYXRhIGFzIEZvcm1Hcm91cCkucGF0Y2hWYWx1ZSgodGhpcy5jb3BpZWRSb3chW2luZGV4Um93Q29weV0uZGF0YSBhcyBGb3JtR3JvdXApLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xuICAgICAgICAgICAgcm93Tm9kZXM6IFtyXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmRleFJvd0NvcHkrKztcbiAgICAgICAgICBpZiAoaW5kZXhSb3dDb3B5ID09IHRoaXMuY29waWVkUm93IS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluZGV4Um93Q29weSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZnRlclBhc3RlUm93cy5lbWl0KFt0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLCB0aGlzLmNvcGllZFJvd10pO1xuICAgICAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb3B5TWVudShldmVudDogQ2VsbENvbnRleHRNZW51RXZlbnQpIHtcbiAgICB0aGlzLm9uQ29weU1lbnUuZW1pdChldmVudCk7XG4gICAgdGhpcy5jb3B5KGV2ZW50KTtcbiAgfVxuXG4gIHBhc3RlTWVudShldmVudDogQ2VsbENvbnRleHRNZW51RXZlbnQpIHtcbiAgICB0aGlzLm9uUGFzdGVNZW51LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMucGFzdGUoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkUGFzdGVNZW51KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdyaWRBcGk/LmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA9PSAwICYmICF0aGlzLmNvcGllZENlbGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwICYmICF0aGlzLmNvcGllZFJvdykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghdGhpcy5jb3BpZWRDZWxsICYmICF0aGlzLmNvcGllZFJvdykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqRW1wdHk8VD4ob2JqZWN0OiBUKTogYm9vbGVhbiB7XG4gIGlmIChvYmplY3QgPT09IG51bGwgfHwgb2JqZWN0ID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCA9PT0gMDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgSEVBREVSIC0tPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG15LTJcIlxuICAgICpuZ0lmPVwidmlzaWJsZVNlYXJjaCB8fCBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGhlYWRlclRpdGxlXCI+XG4gICAgPCEtLSBIZWFkZXIgVGl0bGUgYW5kIFN1YnRpdGxlIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleCBhbGlnbi1pdGVtcy1lbmRcIiAqbmdJZj1cImhlYWRlclRpdGxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyU3VidGl0bGVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYy1hZy1ncmlkLWhlYWRlci1zdWJ0aXRsZSBtcy0yXCI+e3sgaGVhZGVyU3VidGl0bGUgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEVuZCBIZWFkZXIgVGl0bGUgYW5kIFN1YnRpdGxlIFNlY3Rpb24gLS0+XG5cbiAgICA8IS0tIEZpbHRybyAocG9zaWNpw7NuIGl6cXVpZXJkYSAtIGN1YW5kbyBOTyBoYXkgdMOtdHVsbyBvIHN1YnTDrXR1bG8pIC0tPlxuICAgIDxkaXYgW2NsYXNzXT1cImZpbGxTZWFyY2ggPyAnY29sLTEyIG15LTInIDogc2VhcmNoQ2xhc3NcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgIXNob3dTZWFyY2hJbkFjdGlvbnNcIj5cbiAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwidmlzaWJsZVNlYXJjaCAmJiAhc2hvd1NlYXJjaEluQWN0aW9ucyA/ICdjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTYgY29sLXhsLTcgY29sLTEyJyA6ICdjb2wnXCJcbiAgICAgIGNsYXNzPVwic2MtYWctZ3JpZC1oZWFkZXItYWN0aW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgYnRuQWRkPy52aXNpYmxlIHx8XG4gICAgICAgIHZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbnM/Lmxlbmd0aCB8fFxuICAgICAgICB2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGggfHxcbiAgICAgICAgY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyIHx8XG4gICAgICAgIGNvbmZpZ0hlYWRlciAhPT0gbnVsbCB8fFxuICAgICAgICBzaG93U2VhcmNoSW5BY3Rpb25zXG4gICAgICBcIj5cbiAgICAgIDwhLS0gRmlsdHJvIChwb3NpY2nDs24gZGVyZWNoYSAtIGN1YW5kbyBIQVkgdMOtdHVsbyBvIHN1YnTDrXR1bG8pIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXNlYXJjaC1pbmxpbmVcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgc2hvd1NlYXJjaEluQWN0aW9uc1wiPlxuICAgICAgICA8aW5wdXQtc2VhcmNoIChvbkNoYW5nZSk9XCJjaGFuZ2VGaWx0ZXIoJGV2ZW50KVwiPjwvaW5wdXQtc2VhcmNoPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEVuZCBTZWFyY2ggSW5wdXQgaW5saW5lIC0tPlxuXG4gICAgICA8IS0tIE90aGVyIEJlZm9yZSBBY3Rpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXdDaGlsZHJlbkJlZm9yZUFjdGlvbiBvZiB2aWV3Q2hpbGRyZW5CZWZvcmVBY3Rpb25zXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ2aWV3Q2hpbGRyZW5CZWZvcmVBY3Rpb24udGVtcGxhdGVcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwhLS1FbmQgb3RoZXIgYmVmb3JlIGFjdGlvbnMgLS0+XG5cbiAgICAgIDwhLS0gSGVhZGVyIGFjdGlvbnMgYnV0dG9ucyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdCdXR0b25zQWN0aW9uICYmIGNvbmZpZ0hlYWRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnSGVhZGVyLmRpc2FibGVkID09PSBmYWxzZTsgZWxzZSB0ZW1wbGF0ZUFjdGlvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcEFjdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUFjdGlvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMDsgZWxzZSB0ZW1wQWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1pY29uIGJ0bi13aWR0aCBidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgIEFjY2lvbmVzXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBBY3Rpb25zPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoaWRlSGVhZGVyTWVudUFjdGlvbigpOyBlbHNlIHRlbXBsYXRlSGVhZGVyQWN0aW9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxuICAgICAgICAgICAgQWNjaW9uZXNcbiAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlSGVhZGVyQWN0aW9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCI+XG4gICAgICAgICAgICAgIEFjY2lvbmVzXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPHNjLW1lbnUtcGFuZWwgI3BhbmVsIGNsYXNzPVwiZC1ub25lXCIgW3N1Yk1lbnVzXT1cImNvbmZpZ0hlYWRlci5zdWJtZW51ID8/IFtdXCI+PC9zYy1tZW51LXBhbmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwhLS0gRW5kIGhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XG5cbiAgICAgIDwhLS0gT3RoZXIgYnV0dG9ucyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXIgb2Ygdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyLnRlbXBsYXRlXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tRW5kIG90aGVyIGJ1dHRvbnMgLS0+XG5cbiAgICAgIDwhLS0gQWRkIGJ1dHRvbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG5BZGQ/LnZpc2libGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuLXdpZHRoIGJ0biBidG4td2FybmluZyBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJvbkFkZFJvd0VtaXQoKVwiXG4gICAgICAgICAgI2J1dHRvbkFkZFxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidG5BZGQuZGlzYWJsZWQgPz8gZmFsc2VcIj5cbiAgICAgICAgICBBZ3JlZ2FyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8IS0tRW5kIGFkZCBidXR0b24gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgSEVBREVSIEVORCAtLT5cbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtuZ1N0eWxlXT1cIm5nU3R5bGVDb250YWluZXJcIj5cbiAgICAgIDxhZy1ncmlkLWFuZ3VsYXJcbiAgICAgICAgI2FnR3JpZFxuICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIm5nU3R5bGVBZ0dyaWRcIlxuICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnNcIlxuICAgICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcbiAgICAgICAgW2NvbXBvbmVudHNdPVwiX2ZyYW1ld29ya0NvbXBvbmVudHNcIlxuICAgICAgICBbY29udGV4dF09XCJfY29udGV4dFwiXG4gICAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcbiAgICAgICAgW2lzUm93U2VsZWN0YWJsZV09XCJpc1Jvd1NlbGVjdGFibGVcIlxuICAgICAgICBbcm93RHJhZ01hbmFnZWRdPVwicm93RHJhZ01hbmFnZWRcIlxuICAgICAgICBbZG9tTGF5b3V0XT1cImRvbUxheW91dFwiXG4gICAgICAgIFthbmltYXRlUm93c109XCJhbmltYXRlUm93c1wiXG4gICAgICAgIFtnZXRSb3dTdHlsZV09XCJnZXRSb3dTdHlsZVwiXG4gICAgICAgIFtlbmFibGVSYW5nZVNlbGVjdGlvbl09XCJlbmFibGVSYW5nZVNlbGVjdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc1Jvd1RyYW5zZm9ybV09XCJzdXBwcmVzc1Jvd1RyYW5zZm9ybVwiXG4gICAgICAgIFtzdXBwcmVzc01vdmVXaGVuUm93RHJhZ2dpbmddPVwiYW5pbWF0ZVJvd3NcIlxuICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm92ZXJsYXlOb1Jvd3NUZW1wbGF0ZVwiXG4gICAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cIm92ZXJsYXlMb2FkaW5nVGVtcGxhdGVcIlxuICAgICAgICBbbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtc109XCJub1Jvd3NPdmVybGF5Q29tcG9uZW50UGFyYW1zXCJcbiAgICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwic3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc1wiXG4gICAgICAgIFtzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YV09XCJzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YVwiXG4gICAgICAgIFtzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVja109XCJ0cnVlXCJcbiAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uID8gcGFnaW5hdGlvblBhZ2VTaXplIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgIFtzdXBwcmVzc1BhZ2luYXRpb25QYW5lbF09XCJzdXBwcmVzc1BhZ2luYXRpb25QYW5lbFwiXG4gICAgICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHJvd0RvdWJsZUNsaWNrZWQpPVwicm93RG91YmxlQ2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAocm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAocGFnaW5hdGlvbkNoYW5nZWQpPVwicGFnaW5hdGlvbkNoYW5nZWQoKVwiXG4gICAgICAgIChncmlkUmVhZHkpPVwiZ3JpZFJlYWR5KCRldmVudClcIlxuICAgICAgICAocm93RHJhZ0VuZCk9XCJyb3dEcmFnRW5kRW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxDb250ZXh0TWVudSk9XCJjZWxsQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgICAgIFtlbmFibGVDZWxsVGV4dFNlbGVjdGlvbl09XCJlbmFibGVDZWxsVGV4dFNlbGVjdGlvblwiXG4gICAgICAgIChyb3dEYXRhVXBkYXRlZCk9XCJyb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKHJvd0VkaXRpbmdTdGFydGVkKT1cIm9uUm93RWRpdGluZ1N0YXJ0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwiY2VsbFZhbHVlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxuICAgICAgICAoY2VsbEVkaXRpbmdTdG9wcGVkKT1cImNlbGxTdG9wRWRpdGluZygkZXZlbnQpXCJcbiAgICAgICAgKGNlbGxLZXlEb3duKT1cImNlbGxLZXlEb3duKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICBbbXVsdGlTb3J0S2V5XT1cIm11bHRpU29ydEtleVwiXG4gICAgICAgIFt0b29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIlxuICAgICAgICBbdG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCJcbiAgICAgICAgW3Rvb2x0aXBTaG93TW9kZV09XCJ0b29sdGlwU2hvd01vZGVcIlxuICAgICAgICBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiPlxuICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XG4gIDwhLS0gQUctR1JJRCBQQUdJTkFUSU9OIC0tPlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwYWdpbmF0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHNjLWFnLWdyaWQtcGFnaW5hdGlvblxuICAgICAgICAjc2NBZ0dyaWRQYWdpbmF0aW9uXG4gICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlcIlxuICAgICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCI+PC9zYy1hZy1ncmlkLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxuICA8IS0tIEFHLUdSSUQgUEFHSU5BVElPTiBFTkQgLS0+XG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XG48L2Rpdj5cblxuPGRpdlxuICAqbmdJZj1cInNob3dNZW51RGVmYXVsdFwiXG4gIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCJcbiAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAwcHg7IGhlaWdodDogMHB4XCJcbiAgW25nU3R5bGVdPVwieyB0b3A6IGJvdHRvbU1lbnUgKyAncHgnLCBsZWZ0OiBsZWZ0TWVudSArICdweCcgfVwiPlxuICA8bWF0LW1lbnUgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiAjc2NNZW51PVwibWF0TWVudVwiPlxuICAgIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiAoY2xpY2spPVwiY29weU1lbnUoY2VsbENvbnRleHRNZW51QWN0dWFsISlcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+IDxzcGFuPkNvcGlhcjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFBhc3RlTWVudVwiIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCIgKGNsaWNrKT1cInBhc3RlTWVudShjZWxsQ29udGV4dE1lbnVBY3R1YWwhKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICA8bWF0LWljb24+Y29udGVudF9wYXN0ZTwvbWF0LWljb24+PHNwYW4+UGVnYXI8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG4gIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNjTWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCI+XG4gICAgTWVudVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|