@skyux/ag-grid 11.13.1 → 11.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Injectable, Optional, inject } from '@angular/core';
|
|
2
2
|
import { SkyLogService } from '@skyux/core';
|
|
3
3
|
import { SkyDateService } from '@skyux/datetime';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
6
5
|
import { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';
|
|
7
6
|
import { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';
|
|
8
7
|
import { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';
|
|
@@ -153,9 +152,7 @@ export class SkyAgGridService {
|
|
|
153
152
|
rowSelectionOptions[providedGridOptions.rowSelection];
|
|
154
153
|
}
|
|
155
154
|
if (defaultGridOptions.rowSelection &&
|
|
156
|
-
providedGridOptions.rowSelection?.mode
|
|
157
|
-
providedGridOptions.rowSelection?.mode ===
|
|
158
|
-
defaultGridOptions.rowSelection.mode) {
|
|
155
|
+
providedGridOptions.rowSelection?.mode) {
|
|
159
156
|
providedGridOptions.rowSelection = {
|
|
160
157
|
...defaultGridOptions.rowSelection,
|
|
161
158
|
...providedGridOptions.rowSelection,
|
|
@@ -545,4 +542,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
545
542
|
}] }, { type: i3.SkyLibResourcesService, decorators: [{
|
|
546
543
|
type: Optional
|
|
547
544
|
}] }] });
|
|
548
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlCakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDdEksT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDMUgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDaEksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDcEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDOUcsT0FBTyxFQUFFLCtDQUErQyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDckosT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDNUgsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0ZB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QixHQUN0QixJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDakQscUdBQXFHO2dCQUNyRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsMkJBQTJCLENBQ25FLGtCQUFrQixFQUNsQixTQUFTLENBQ1YsQ0FBQztnQkFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsMkJBQTJCLENBQ3BFLGtCQUFrQixFQUNsQixpQkFBaUIsQ0FDbEIsQ0FBQztnQkFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDO2dCQUVuQyxNQUFNLDBCQUEwQixHQUM5QixJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQ2hELGtCQUFrQixFQUNsQixRQUFRLEVBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ3RCLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUMsMEJBQTBCLENBQUM7WUFDdEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFtQztRQUNoRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQXRpQlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFhSSxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5RGF0ZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSwgU2t5VGhlbWVTZXR0aW5ncyB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIENlbGxDbGFzc1BhcmFtcyxcbiAgQ29sRGVmLFxuICBFZGl0YWJsZUNhbGxiYWNrUGFyYW1zLFxuICBHcmlkT3B0aW9ucyxcbiAgSGVhZGVyQ2xhc3NQYXJhbXMsXG4gIElDZWxsUmVuZGVyZXJQYXJhbXMsXG4gIFJvd0NsYXNzUGFyYW1zLFxuICBTdXBwcmVzc0hlYWRlcktleWJvYXJkRXZlbnRQYXJhbXMsXG4gIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtcyxcbiAgVmFsdWVGb3JtYXR0ZXJQYXJhbXMsXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IFJvd1NlbGVjdGlvbk9wdGlvbnMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eS9kaXN0L3R5cGVzL2NvcmUvZW50aXRpZXMvZ3JpZE9wdGlvbnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vYWctZ3JpZC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgYXBwbHlTa3lMb29rdXBQcm9wZXJ0aWVzRGVmYXVsdHMgfSBmcm9tICcuL2FwcGx5LWxvb2t1cC1wcm9wZXJ0aWVzLWRlZmF1bHRzJztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1jdXJyZW5jeS9jZWxsLWVkaXRvci1jdXJyZW5jeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckRhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1kYXRlcGlja2VyL2NlbGwtZWRpdG9yLWRhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1sb29rdXAvY2VsbC1lZGl0b3ItbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItbnVtYmVyL2NlbGwtZWRpdG9yLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvclRleHRDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci10ZXh0L2NlbGwtZWRpdG9yLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5L2NlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItbG9va3VwL2NlbGwtcmVuZGVyZXItbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJSb3dTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLXRlbXBsYXRlL2NlbGwtcmVuZGVyZXItdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlclZhbGlkYXRvclRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkSGVhZGVyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci9oZWFkZXItZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbk1hcFR5cGUsIGljb25NYXAgfSBmcm9tICcuL2ljb25zL2ljb24tbWFwJztcbmltcG9ydCB7IFNreUFnR3JpZExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Q2VsbENsYXNzIH0gZnJvbSAnLi90eXBlcy9jZWxsLWNsYXNzJztcbmltcG9ydCB7IFNreUNlbGxUeXBlIH0gZnJvbSAnLi90eXBlcy9jZWxsLXR5cGUnO1xuaW1wb3J0IHsgU2t5SGVhZGVyQ2xhc3MgfSBmcm9tICcuL3R5cGVzL2hlYWRlci1jbGFzcyc7XG5pbXBvcnQgeyBMYXN0Rm9jdXNlZENlbGwgfSBmcm9tICcuL3R5cGVzL2xhc3QtZm9jdXNlZC5jZWxsJztcbmltcG9ydCB7IFNreUdldEdyaWRPcHRpb25zQXJncyB9IGZyb20gJy4vdHlwZXMvc2t5LWdyaWQtb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIGF1dG9jb21wbGV0ZUNvbXBhcmF0b3IoXG4gIHZhbHVlMTogeyBuYW1lOiBzdHJpbmcgfSxcbiAgdmFsdWUyOiB7IG5hbWU6IHN0cmluZyB9LFxuKTogbnVtYmVyIHtcbiAgaWYgKHZhbHVlMSAmJiB2YWx1ZTIpIHtcbiAgICBpZiAodmFsdWUxLm5hbWUgPiB2YWx1ZTIubmFtZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlMS5uYW1lIDwgdmFsdWUyLm5hbWUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTEgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGF1dG9jb21wbGV0ZUZvcm1hdHRlcihwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhcmFtcy52YWx1ZSAmJiBwYXJhbXMudmFsdWUubmFtZTtcbn1cblxuZnVuY3Rpb24gZGF0ZUNvbXBhcmF0b3IoZGF0ZTE6IERhdGUgfCBzdHJpbmcsIGRhdGUyOiBEYXRlIHwgc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IGRhdGUxdmFsdWUgPSBkYXRlMTtcbiAgbGV0IGRhdGUydmFsdWUgPSBkYXRlMjtcblxuICBpZiAodHlwZW9mIGRhdGUxdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZTF2YWx1ZSA9IG5ldyBEYXRlKGRhdGUxKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0ZTJ2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRlMnZhbHVlID0gbmV3IERhdGUoZGF0ZTIpO1xuICB9XG5cbiAgaWYgKGRhdGUxdmFsdWUgJiYgZGF0ZTJ2YWx1ZSkge1xuICAgIGlmIChkYXRlMXZhbHVlID4gZGF0ZTJ2YWx1ZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUxdmFsdWUgPCBkYXRlMnZhbHVlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gZGF0ZTF2YWx1ZSA/IDEgOiAtMTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKGNvbXBvbmVudDogc3RyaW5nLCBmYWxsYmFjaz86IGFueSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IGFueSA9PiB7XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmNvbERlZiAmJlxuICAgICAgdHlwZW9mIHBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgID8udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFwYXJhbXMuY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvcihcbiAgICAgICAgICBwYXJhbXMudmFsdWUsXG4gICAgICAgICAgcGFyYW1zLmRhdGEsXG4gICAgICAgICAgcGFyYW1zPy5ub2RlPy5yb3dJbmRleCxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgLi4ucGFyYW1zLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9O1xufVxuXG5sZXQgcm93Tm9kZUlkID0gLTE7XG5cbi8qKlxuICogYFNreUFnR3JpZFNlcnZpY2VgIHByb3ZpZGVzIG1ldGhvZHMgdG8gZ2V0IEFHIEdyaWQgYGdyaWRPcHRpb25zYCB0byBlbnN1cmUgZ3JpZHMgbWF0Y2ggU0tZIFVYIGZ1bmN0aW9uYWxpdHkuIFRoZSBgZ3JpZE9wdGlvbnNgIGNhbiBiZSBvdmVycmlkZGVuLCBhbmQgaW5jbHVkZSByZWdpc3RlcmVkIFNLWSBVWCBjb2x1bW4gdHlwZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgI2tleU1hcCA9IG5ldyBXZWFrTWFwPGFueSwgc3RyaW5nPigpO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNjdXJyZW50VGhlbWU6IFNreVRoZW1lU2V0dGluZ3MgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICNhZ0dyaWRBZGFwdGVyU2VydmljZTogU2t5QWdHcmlkQWRhcHRlclNlcnZpY2U7XG4gICNyZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfCB1bmRlZmluZWQ7XG4gICNkYXRlU2VydmljZSA9IGluamVjdChTa3lEYXRlU2VydmljZSk7XG4gICNsb2dTZXJ2aWNlID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFnR3JpZEFkYXB0ZXJTZXJ2aWNlOiBTa3lBZ0dyaWRBZGFwdGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSByZXNvdXJjZXM/OiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZSA9IGFnR3JpZEFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcblxuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGVtZVN2Yykge1xuICAgICAgdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChzZXR0aW5nc0NoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuI2N1cnJlbnRUaGVtZSA9IHNldHRpbmdzQ2hhbmdlLmN1cnJlbnRTZXR0aW5ncztcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIFtBRyBHcmlkIGBncmlkT3B0aW9uc2BdKGh0dHBzOi8vd3d3LmFnLWdyaWQuY29tL2phdmFzY3JpcHQtZ3JpZC1wcm9wZXJ0aWVzLykgd2l0aCBkZWZhdWx0IFNLWSBVWCBvcHRpb25zLCBzdHlsaW5nLCBhbmQgY2VsbCByZW5kZXJlcnMgcmVnaXN0ZXJlZCBmb3IgcmVhZC1vbmx5IGdyaWRzLlxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGdldEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLiNnZXREZWZhdWx0R3JpZE9wdGlvbnMoYXJncyk7XG4gICAgY29uc3QgbWVyZ2VkR3JpZE9wdGlvbnMgPSB0aGlzLiNtZXJnZUdyaWRPcHRpb25zKFxuICAgICAgZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgYXJncy5ncmlkT3B0aW9ucyxcbiAgICApO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgW0FHIEdyaWQgYGdyaWRPcHRpb25zYF0oaHR0cHM6Ly93d3cuYWctZ3JpZC5jb20vamF2YXNjcmlwdC1ncmlkLXByb3BlcnRpZXMvKSB3aXRoIGRlZmF1bHQgU0tZIFVYIG9wdGlvbnMsIHN0eWxpbmcsIGFuZCBjZWxsIGVkaXRvcnMgcmVnaXN0ZXJlZCBmb3IgZWRpdGFibGUgZ3JpZHMuXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgZ2V0RWRpdGFibGVHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy4jZ2V0RGVmYXVsdEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJncyk7XG4gICAgY29uc3QgbWVyZ2VkR3JpZE9wdGlvbnMgPSB0aGlzLiNtZXJnZUdyaWRPcHRpb25zKFxuICAgICAgZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgYXJncy5ncmlkT3B0aW9ucyxcbiAgICApO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBgZ2V0SGVhZGVySGVpZ2h0YCBtZXRob2QgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gSGVhZGVyIGhlaWdodCBpcyBtYW5hZ2VkIGluIENTUy5cbiAgICovXG4gIHB1YmxpYyBnZXRIZWFkZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudFRoZW1lPy50aGVtZT8ubmFtZSA9PT0gJ21vZGVybicgPyA2MCA6IDM3O1xuICB9XG5cbiAgI21lcmdlR3JpZE9wdGlvbnMoXG4gICAgZGVmYXVsdEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyxcbiAgICBwcm92aWRlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyxcbiAgKTogR3JpZE9wdGlvbnMge1xuICAgIGlmICgnZW5hYmxlUmFuZ2VTZWxlY3Rpb24nIGluIHByb3ZpZGVkR3JpZE9wdGlvbnMpIHtcbiAgICAgIGlmIChwcm92aWRlZEdyaWRPcHRpb25zLmVuYWJsZVJhbmdlU2VsZWN0aW9uKSB7XG4gICAgICAgIHByb3ZpZGVkR3JpZE9wdGlvbnMuY2VsbFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgICBkZWxldGUgcHJvdmlkZWRHcmlkT3B0aW9ucy5lbmFibGVSYW5nZVNlbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvdmlkZWRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPT09ICdzaW5nbGUnIHx8XG4gICAgICBwcm92aWRlZEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9PT0gJ211bHRpcGxlJ1xuICAgICkge1xuICAgICAgY29uc3Qgcm93U2VsZWN0aW9uT3B0aW9uczogUmVjb3JkPHN0cmluZywgUm93U2VsZWN0aW9uT3B0aW9ucz4gPSB7XG4gICAgICAgIHNpbmdsZTogeyBtb2RlOiAnc2luZ2xlUm93JyB9LFxuICAgICAgICBtdWx0aXBsZTogeyBtb2RlOiAnbXVsdGlSb3cnIH0sXG4gICAgICB9O1xuICAgICAgcHJvdmlkZWRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPVxuICAgICAgICByb3dTZWxlY3Rpb25PcHRpb25zW3Byb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uXTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGVmYXVsdEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiAmJlxuICAgICAgcHJvdmlkZWRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24/Lm1vZGUgJiZcbiAgICAgIHByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uPy5tb2RlID09PVxuICAgICAgICAoZGVmYXVsdEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiBhcyBSb3dTZWxlY3Rpb25PcHRpb25zKS5tb2RlXG4gICAgKSB7XG4gICAgICBwcm92aWRlZEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHtcbiAgICAgICAgLi4uKGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gYXMgUm93U2VsZWN0aW9uT3B0aW9ucyksXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uLFxuICAgICAgfSBhcyBSb3dTZWxlY3Rpb25PcHRpb25zO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuY29tcG9uZW50cyxcbiAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBjb21wb25lbnRzIGxhc3QgdG8gcHJldmVudCBjb25zdW1lcnMgZnJvbSBvdmVyd3JpdGluZyBvdXIgY29tcG9uZW50IHR5cGVzLlxuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuY29tcG9uZW50cyxcbiAgICAgIH0sXG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmNvbHVtblR5cGVzLFxuICAgICAgICAvLyBhcHBseSBkZWZhdWx0IHNlY29uZCB0byBwcmV2ZW50IGNvbnN1bWVycyBmcm9tIG92ZXJ3cml0aW5nIG91ciBkZWZhdWx0IGNvbHVtbiB0eXBlc1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuY29sdW1uVHlwZXMsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLFxuICAgICAgICAvLyBhbGxvdyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgYWxsIGRlZmF1bHRDb2xEZWYgcHJvcGVydGllcyBleGNlcHQgY2VsbENsYXNzUnVsZXMsIHdoaWNoIHdlIHJlc2VydmUgZm9yIHN0eWxpbmdcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmPy5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgaGVhZGVyQ2xhc3M6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmPy5oZWFkZXJDbGFzcyxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sR3JvdXBEZWY6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xHcm91cERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sR3JvdXBEZWYsXG4gICAgICAgIGhlYWRlckNsYXNzOiBkZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbEdyb3VwRGVmPy5oZWFkZXJDbGFzcyxcbiAgICAgIH0sXG4gICAgICBpY29uczoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBFbmFibGUgdGV4dCBzZWxlY3Rpb24gdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWQgb3IgY29uZmxpY3Rpbmcgd2l0aCBhbm90aGVyIHNldHRpbmcuXG4gICAgaWYgKFxuICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gfHxcbiAgICAgICghKCdlbmFibGVDZWxsVGV4dFNlbGVjdGlvbicgaW4gbWVyZ2VkR3JpZE9wdGlvbnMpICYmXG4gICAgICAgICFtZXJnZWRHcmlkT3B0aW9ucy5jZWxsU2VsZWN0aW9uICYmXG4gICAgICAgICFtZXJnZWRHcmlkT3B0aW9ucy5jb2x1bW5EZWZzPy5zb21lKChjb2w6IENvbERlZikgPT4gY29sLmVkaXRhYmxlKSlcbiAgICApIHtcbiAgICAgIG1lcmdlZEdyaWRPcHRpb25zLmNvbnRleHQgfHw9IHt9O1xuICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gPz89IHRydWU7XG4gICAgICBtZXJnZWRHcmlkT3B0aW9ucy5jb250ZXh0LmVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uID1cbiAgICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgI2dldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgLy8gY2VsbENsYXNzUnVsZXMgY2FuIGJlIGZ1bmN0aW9ucyBvciBzdHJpbmcgZXhwcmVzc2lvbnNcbiAgICBjb25zdCBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24gPSAoKTogYm9vbGVhbiA9PiB0cnVlO1xuXG4gICAgZnVuY3Rpb24gZ2V0RWRpdGFibGVGbihcbiAgICAgIGlzVW5lZGl0YWJsZT86IGJvb2xlYW4sXG4gICAgKTogKHBhcmFtczogQ2VsbENsYXNzUGFyYW1zKSA9PiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRWRpdGFibGUgPSBwYXJhbXMuY29sRGVmLmVkaXRhYmxlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgaXNFZGl0YWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHBhcmFtcy5hcGkuZ2V0Q29sdW1uKHBhcmFtcy5jb2xEZWYpO1xuICAgICAgICAgIGlzRWRpdGFibGUgPSBpc0VkaXRhYmxlKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB9IGFzIEVkaXRhYmxlQ2FsbGJhY2tQYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVW5lZGl0YWJsZSA/ICFpc0VkaXRhYmxlIDogISFpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSksXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFZhbGlkYXRvckZuKCk6IChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtOiBDZWxsQ2xhc3NQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtLmNvbERlZiAmJlxuICAgICAgICAgIHR5cGVvZiBwYXJhbS5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgICAgICA/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gIXBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmRhdGEsXG4gICAgICAgICAgICBwYXJhbS5ub2RlPy5yb3dJbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMgPSB7XG4gICAgICBbU2t5Q2VsbENsYXNzLkludmFsaWRdOiBnZXRWYWxpZGF0b3JGbigpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRIZWFkZXJDbGFzcyhcbiAgICAgIC4uLmNsYXNzTmFtZXM6IHN0cmluZ1tdXG4gICAgKTogKHBhcmFtczogSGVhZGVyQ2xhc3NQYXJhbXMpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiAocGFyYW1zOiBIZWFkZXJDbGFzc1BhcmFtcyk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgbWluV2lkdGggPSBwYXJhbXMuY29sdW1uPy5nZXRNaW5XaWR0aCgpID8/IDA7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gcGFyYW1zLmNvbHVtbj8uZ2V0TWF4V2lkdGgoKSA/PyBJbmZpbml0eTtcbiAgICAgICAgaWYgKHBhcmFtcy5jb2x1bW4/LmlzUmVzaXphYmxlKCkgJiYgbWluV2lkdGggPCBtYXhXaWR0aCkge1xuICAgICAgICAgIHJldHVybiBbLi4uY2xhc3NOYW1lcywgU2t5SGVhZGVyQ2xhc3MuUmVzaXphYmxlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFNreUdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHtcbiAgICAgIGNvbHVtblR5cGVzOiB7XG4gICAgICAgIFtTa3lDZWxsVHlwZS5BdXRvY29tcGxldGVdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuQXV0b2NvbXBsZXRlXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGF1dG9jb21wbGV0ZUZvcm1hdHRlcixcbiAgICAgICAgICBjb21wYXJhdG9yOiBhdXRvY29tcGxldGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiAxODUsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5DdXJyZW5jeV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5DdXJyZW5jeV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlclNlbGVjdG9yOiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3RvcihcbiAgICAgICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LXZhbGlkYXRvcicsXG4gICAgICAgICAgICB7IGNvbXBvbmVudDogJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3knIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCksXG4gICAgICAgICAgbWluV2lkdGg6IDE4NSxcbiAgICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChwYXJhbXMpID0+XG4gICAgICAgICAgICB0aGlzLiNzdXBwcmVzc0VudGVyKHBhcmFtcykgfHwgdGhpcy4jc3VwcHJlc3NUYWIocGFyYW1zKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkRhdGVdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuRGF0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICBjb21wYXJhdG9yOiBkYXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogdGhpcy4jY3VycmVudFRoZW1lPy50aGVtZT8ubmFtZSA9PT0gJ21vZGVybicgPyAxODAgOiAxNjAsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuI2RhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgICAgICAgICAgIHBhcmFtcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGFyZ3MubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgYXJncy5kYXRlRm9ybWF0IHx8ICdzaG9ydERhdGUnLFxuICAgICAgICAgICAgICAgICkgfHwgJydcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoKGVyciBhcyBFcnJvcikuc3RhY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNsb2dTZXJ2aWNlLmVycm9yKGAkeyhlcnIgYXMgRXJyb3IpLnN0YWNrfWApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuI2xvZ1NlcnZpY2UuZXJyb3IoYCR7ZXJyfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTG9va3VwXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkxvb2t1cF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yTG9va3VwQ29tcG9uZW50LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyTG9va3VwQ29tcG9uZW50LFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb29rdXBQcm9wZXJ0aWVzID0gYXBwbHlTa3lMb29rdXBQcm9wZXJ0aWVzRGVmYXVsdHMoXG4gICAgICAgICAgICAgIHBhcmFtcy5jb2xEZWY/LmNlbGxSZW5kZXJlclBhcmFtcz8uc2t5Q29tcG9uZW50UHJvcGVydGllcyA/P1xuICAgICAgICAgICAgICAgIHBhcmFtcy5jb2xEZWY/LmNlbGxFZGl0b3JQYXJhbXM/LnNreUNvbXBvbmVudFByb3BlcnRpZXMgPz9cbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gKHBhcmFtcy52YWx1ZSB8fCBbXSlcbiAgICAgICAgICAgICAgLm1hcCgodmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW2xvb2t1cFByb3BlcnRpZXMuZGVzY3JpcHRvclByb3BlcnR5IGFzIHN0cmluZ107XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgLmpvaW4oJzsgJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTnVtYmVyXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLk51bWJlcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlclNlbGVjdG9yOiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3RvcihcbiAgICAgICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJyxcbiAgICAgICAgICApLFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JOdW1iZXJDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCksXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Sb3dTZWxlY3Rvcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyUm93U2VsZWN0b3JDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB7XG4gICAgICAgICAgICBoZWFkZXJIaWRkZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBoZWFkZXJOYW1lOiAnUm93IHNlbGVjdGlvbicsXG4gICAgICAgICAgbWluV2lkdGg6IDU1LFxuICAgICAgICAgIG1heFdpZHRoOiA1NSxcbiAgICAgICAgICByZXNpemFibGU6IGZhbHNlLFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogNTUsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5UZW1wbGF0ZV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5UZW1wbGF0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgICAgY2VsbEVkaXRvcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5UZXh0XToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLlRleHRdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCcsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlZhbGlkYXRvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgLi4udmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyU2VsZWN0b3I6IGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKFxuICAgICAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICBjZWxsQ2xhc3NSdWxlczogZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKCksXG4gICAgICAgIGhlYWRlckNvbXBvbmVudDogU2t5QWdHcmlkSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgICBzdXBwcmVzc0hlYWRlcktleWJvYXJkRXZlbnQ6IChcbiAgICAgICAgICBrZXlwcmVzczogU3VwcHJlc3NIZWFkZXJLZXlib2FyZEV2ZW50UGFyYW1zLFxuICAgICAgICApID0+IGtleXByZXNzLmV2ZW50LmNvZGUgPT09ICdUYWInLFxuICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChrZXlwcmVzczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKSA9PlxuICAgICAgICAgIHRoaXMuI3N1cHByZXNzVGFiKGtleXByZXNzKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sR3JvdXBEZWY6IHtcbiAgICAgICAgaGVhZGVyR3JvdXBDb21wb25lbnQ6IFNreUFnR3JpZEhlYWRlckdyb3VwQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIGRvbUxheW91dDogJ2F1dG9IZWlnaHQnLFxuICAgICAgZW5zdXJlRG9tT3JkZXI6IHRydWUsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yJzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeVZhbGlkYXRvckNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnOlxuICAgICAgICAgIFNreUFnR3JpZENlbGxSZW5kZXJlclZhbGlkYXRvclRvb2x0aXBDb21wb25lbnQsXG4gICAgICB9LFxuICAgICAgZm9jdXNHcmlkSW5uZXJFbGVtZW50OiAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RGb2N1c2VkQ2VsbCA9IHBhcmFtcy5jb250ZXh0WydsYXN0Rm9jdXNlZENlbGwnXSBhc1xuICAgICAgICAgIHwgTGFzdEZvY3VzZWRDZWxsXG4gICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChsYXN0Rm9jdXNlZENlbGwpIHtcbiAgICAgICAgICBpZiAobGFzdEZvY3VzZWRDZWxsLnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBpLnNldEZvY3VzZWRDZWxsKFxuICAgICAgICAgICAgICBsYXN0Rm9jdXNlZENlbGwucm93SW5kZXgsXG4gICAgICAgICAgICAgIGxhc3RGb2N1c2VkQ2VsbC5jb2x1bW4sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBpLnNldEZvY3VzZWRIZWFkZXIobGFzdEZvY3VzZWRDZWxsLmNvbHVtbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dJZDogKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBkYXRhSWQgPSBwYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgaWYgKGRhdGFJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGAke3BhcmFtcy5kYXRhLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLiNrZXlNYXAuaGFzKHBhcmFtcy5kYXRhKSkge1xuICAgICAgICAgIHRoaXMuI2tleU1hcC5zZXQocGFyYW1zLmRhdGEsIGAke3Jvd05vZGVJZC0tfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLiNrZXlNYXAuZ2V0KHBhcmFtcy5kYXRhKSBhcyBzdHJpbmc7XG4gICAgICB9LFxuICAgICAgZ2V0Um93Q2xhc3M6IChwYXJhbXM6IFJvd0NsYXNzUGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXMubm9kZS5pZCkge1xuICAgICAgICAgIHJldHVybiBgc2t5LWFnLWdyaWQtcm93LSR7cGFyYW1zLm5vZGUuaWR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgc29ydERlc2NlbmRpbmc6IHRoaXMuI2dldEljb25UZW1wbGF0ZSgnc29ydERlc2NlbmRpbmcnKSxcbiAgICAgICAgc29ydEFzY2VuZGluZzogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdzb3J0QXNjZW5kaW5nJyksXG4gICAgICAgIGNvbHVtbk1vdmVNb3ZlOiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVNb3ZlJyksXG4gICAgICAgIGNvbHVtbk1vdmVIaWRlOiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVIaWRlJyksXG4gICAgICAgIGNvbHVtbk1vdmVMZWZ0OiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVMZWZ0JyksXG4gICAgICAgIGNvbHVtbk1vdmVSaWdodDogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdjb2x1bW5Nb3ZlUmlnaHQnKSxcbiAgICAgICAgY29sdW1uTW92ZVBpbjogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdjb2x1bW5Nb3ZlUGluJyksXG4gICAgICB9LFxuICAgICAgbG9hZGluZ092ZXJsYXlDb21wb25lbnQ6IFNreUFnR3JpZExvYWRpbmdDb21wb25lbnQsXG4gICAgICBvbkNlbGxGb2N1c2VkOiAoKSA9PiB0aGlzLiNvbkNlbGxGb2N1c2VkKCksXG4gICAgICByb3dTZWxlY3Rpb246IHtcbiAgICAgICAgbW9kZTogJ211bHRpUm93JyxcbiAgICAgICAgZW5hYmxlQ2xpY2tTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBlbmFibGVTZWxlY3Rpb25XaXRob3V0S2V5czogdHJ1ZSxcbiAgICAgICAgY2hlY2tib3hlczogZmFsc2UsXG4gICAgICAgIGhlYWRlckNoZWNrYm94OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzaW5nbGVDbGlja0VkaXQ6IHRydWUsXG4gICAgICBzb3J0aW5nT3JkZXI6IFsnZGVzYycsICdhc2MnLCBudWxsXSxcbiAgICAgIHN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zOiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBjb2x1bW5UeXBlcyA9IGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBDb2xEZWZcbiAgICA+O1xuXG4gICAgY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3ldLFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFgJHt2YWx1ZSB8fCAnJ31gLm1hdGNoKC9eW14wLTldKihcXGQrWywuXT8pK1xcZCpbXjAtOV0qJC8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGN1cnJlbmN5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jcmVzb3VyY2VzKSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9jdXJyZW5jeV92YWxpZGF0b3JfbWVzc2FnZScpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb2x1bW5UeXBlc1tcbiAgICAgICAgICAgIFNreUNlbGxUeXBlLkN1cnJlbmN5VmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvcl0gPSB7XG4gICAgICAuLi5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5WYWxpZGF0b3JdLFxuICAgICAgLi4uY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyXSxcbiAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgIC4uLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLlZhbGlkYXRvcl0uY2VsbENsYXNzUnVsZXMsXG4gICAgICAgIC4uLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0uY2VsbENsYXNzUnVsZXMsXG4gICAgICB9LFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISF2YWx1ZSAmJiAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlcicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI3Jlc291cmNlcykge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreV9hZ19ncmlkX2NlbGxfcmVuZGVyZXJfbnVtYmVyX3ZhbGlkYXRvcl9tZXNzYWdlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbHVtblR5cGVzW1xuICAgICAgICAgICAgU2t5Q2VsbFR5cGUuTnVtYmVyVmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy4jcmVzb3VyY2VzXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreV9hZ19ncmlkX3Jvd19zZWxlY3Rvcl9jb2x1bW5faGVhZGluZycpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl0uaGVhZGVyTmFtZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFNreUdyaWRPcHRpb25zO1xuICB9XG5cbiAgI29uQ2VsbEZvY3VzZWQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuXG4gICAgdGhpcy4jYWdHcmlkQWRhcHRlclNlcnZpY2UuZm9jdXNPbkZvY3VzYWJsZUNoaWxkcmVuKGN1cnJlbnRFbGVtZW50KTtcbiAgfVxuXG4gICNnZXREZWZhdWx0RWRpdGFibGVHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy4jZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRlZmF1bHRHcmlkT3B0aW9ucztcbiAgfVxuXG4gICNnZXRJY29uVGVtcGxhdGUoaWNvbk5hbWU6IGtleW9mIEljb25NYXBUeXBlKTogKCkgPT4gc3RyaW5nIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGljb25NYXBbaWNvbk5hbWVdO1xuICAgICAgaWYgKHRoaXMuI2N1cnJlbnRUaGVtZT8udGhlbWUubmFtZSA9PT0gJ21vZGVybicgJiYgaWNvbi5za3lJY29uKSB7XG4gICAgICAgIHJldHVybiBgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJza3ktaS0ke2ljb24uc2t5SWNvbn1cIj48L2k+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS0ke2ljb24uZmFJY29ufVwiPjwvaT5gO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAjc3VwcHJlc3NUYWIocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAocGFyYW1zLmV2ZW50LmNvZGUgPT09ICdUYWInKSB7XG4gICAgICBpZiAocGFyYW1zLmVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudGx5Rm9jdXNlZEVsID1cbiAgICAgICAgICB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuICAgICAgICAvLyBpbmxpbmUgY2VsbCBlZGl0b3JzIGhhdmUgdGhlICdhZy1jZWxsJyBjbGFzcywgd2hpbGUgcG9wdXAgZWRpdG9ycyBoYXZlIHRoZSAnYWctcG9wdXAtZWRpdG9yJyBjbGFzc1xuICAgICAgICBjb25zdCBjZWxsRWwgPSB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoXG4gICAgICAgICAgY3VycmVudGx5Rm9jdXNlZEVsLFxuICAgICAgICAgICdhZy1jZWxsJyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcG9wdXBFbCA9IHRoaXMuI2FnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEVsZW1lbnRPclBhcmVudFdpdGhDbGFzcyhcbiAgICAgICAgICBjdXJyZW50bHlGb2N1c2VkRWwsXG4gICAgICAgICAgJ2FnLXBvcHVwLWVkaXRvcicsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gY2VsbEVsIHx8IHBvcHVwRWw7XG5cbiAgICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGwgPVxuICAgICAgICAgIHRoaXMuI2FnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldE5leHRGb2N1c2FibGVFbGVtZW50KFxuICAgICAgICAgICAgY3VycmVudGx5Rm9jdXNlZEVsLFxuICAgICAgICAgICAgcGFyZW50RWwsXG4gICAgICAgICAgICBwYXJhbXMuZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuICEhbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgI3N1cHByZXNzRW50ZXIocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAocGFyYW1zLmV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgIHJldHVybiBwYXJhbXMuZWRpdGluZztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
545
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlCakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDdEksT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDMUgsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDaEksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDcEgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDOUcsT0FBTyxFQUFFLCtDQUErQyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDckosT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDNUgsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFDN0ksT0FBTyxFQUFFLHNDQUFzQyxF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QUFDLDJCQUEyQixDQUNuRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUNWLENBQUM7Z0JBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLDJCQUEyQixDQUNwRSxrQkFBa0IsRUFDbEIsaUJBQWlCLENBQ2xCLENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQztnQkFFbkMsTUFBTSwwQkFBMEIsR0FDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUNoRCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUN0QixDQUFDO2dCQUNKLE9BQU8sQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1lBQ3RDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBbUM7UUFDaEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0FwaUJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYUksUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreURhdGVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2RhdGV0aW1lJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UsIFNreVRoZW1lU2V0dGluZ3MgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQge1xuICBDZWxsQ2xhc3NQYXJhbXMsXG4gIENvbERlZixcbiAgRWRpdGFibGVDYWxsYmFja1BhcmFtcyxcbiAgR3JpZE9wdGlvbnMsXG4gIEhlYWRlckNsYXNzUGFyYW1zLFxuICBJQ2VsbFJlbmRlcmVyUGFyYW1zLFxuICBSb3dDbGFzc1BhcmFtcyxcbiAgUm93U2VsZWN0aW9uT3B0aW9ucyxcbiAgU3VwcHJlc3NIZWFkZXJLZXlib2FyZEV2ZW50UGFyYW1zLFxuICBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMsXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2FnLWdyaWQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFwcGx5U2t5TG9va3VwUHJvcGVydGllc0RlZmF1bHRzIH0gZnJvbSAnLi9hcHBseS1sb29rdXAtcHJvcGVydGllcy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlL2NlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckN1cnJlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItY3VycmVuY3kvY2VsbC1lZGl0b3ItY3VycmVuY3kuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItZGF0ZXBpY2tlci9jZWxsLWVkaXRvci1kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yTG9va3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItbG9va3VwL2NlbGwtZWRpdG9yLWxvb2t1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvck51bWJlckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLW51bWJlci9jZWxsLWVkaXRvci1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItdGV4dC9jZWxsLWVkaXRvci10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeVZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItY3VycmVuY3kvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyTG9va3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWxvb2t1cC9jZWxsLXJlbmRlcmVyLWxvb2t1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyUm93U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItcm93LXNlbGVjdG9yL2NlbGwtcmVuZGVyZXItcm93LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci10ZW1wbGF0ZS9jZWxsLXJlbmRlcmVyLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJWYWxpZGF0b3JUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwL2NlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZEhlYWRlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25NYXBUeXBlLCBpY29uTWFwIH0gZnJvbSAnLi9pY29ucy9pY29uLW1hcCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUNlbGxDbGFzcyB9IGZyb20gJy4vdHlwZXMvY2VsbC1jbGFzcyc7XG5pbXBvcnQgeyBTa3lDZWxsVHlwZSB9IGZyb20gJy4vdHlwZXMvY2VsbC10eXBlJztcbmltcG9ydCB7IFNreUhlYWRlckNsYXNzIH0gZnJvbSAnLi90eXBlcy9oZWFkZXItY2xhc3MnO1xuaW1wb3J0IHsgTGFzdEZvY3VzZWRDZWxsIH0gZnJvbSAnLi90eXBlcy9sYXN0LWZvY3VzZWQuY2VsbCc7XG5pbXBvcnQgeyBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MgfSBmcm9tICcuL3R5cGVzL3NreS1ncmlkLW9wdGlvbnMnO1xuXG5mdW5jdGlvbiBhdXRvY29tcGxldGVDb21wYXJhdG9yKFxuICB2YWx1ZTE6IHsgbmFtZTogc3RyaW5nIH0sXG4gIHZhbHVlMjogeyBuYW1lOiBzdHJpbmcgfSxcbik6IG51bWJlciB7XG4gIGlmICh2YWx1ZTEgJiYgdmFsdWUyKSB7XG4gICAgaWYgKHZhbHVlMS5uYW1lID4gdmFsdWUyLm5hbWUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZTEubmFtZSA8IHZhbHVlMi5uYW1lKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdmFsdWUxID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBhdXRvY29tcGxldGVGb3JtYXR0ZXIocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXJhbXMudmFsdWUgJiYgcGFyYW1zLnZhbHVlLm5hbWU7XG59XG5cbmZ1bmN0aW9uIGRhdGVDb21wYXJhdG9yKGRhdGUxOiBEYXRlIHwgc3RyaW5nLCBkYXRlMjogRGF0ZSB8IHN0cmluZyk6IG51bWJlciB7XG4gIGxldCBkYXRlMXZhbHVlID0gZGF0ZTE7XG4gIGxldCBkYXRlMnZhbHVlID0gZGF0ZTI7XG5cbiAgaWYgKHR5cGVvZiBkYXRlMXZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGRhdGUxdmFsdWUgPSBuZXcgRGF0ZShkYXRlMSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGUydmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZTJ2YWx1ZSA9IG5ldyBEYXRlKGRhdGUyKTtcbiAgfVxuXG4gIGlmIChkYXRlMXZhbHVlICYmIGRhdGUydmFsdWUpIHtcbiAgICBpZiAoZGF0ZTF2YWx1ZSA+IGRhdGUydmFsdWUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChkYXRlMXZhbHVlIDwgZGF0ZTJ2YWx1ZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIGRhdGUxdmFsdWUgPyAxIDogLTE7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3Rvcihjb21wb25lbnQ6IHN0cmluZywgZmFsbGJhY2s/OiBhbnkpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiBhbnkgPT4ge1xuICAgIGlmIChcbiAgICAgIHBhcmFtcy5jb2xEZWYgJiZcbiAgICAgIHR5cGVvZiBwYXJhbXMuY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcz8uc2t5Q29tcG9uZW50UHJvcGVydGllc1xuICAgICAgICA/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICAhcGFyYW1zLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IoXG4gICAgICAgICAgcGFyYW1zLnZhbHVlLFxuICAgICAgICAgIHBhcmFtcy5kYXRhLFxuICAgICAgICAgIHBhcmFtcz8ubm9kZT8ucm93SW5kZXgsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfTtcbn1cblxubGV0IHJvd05vZGVJZCA9IC0xO1xuXG4vKipcbiAqIGBTa3lBZ0dyaWRTZXJ2aWNlYCBwcm92aWRlcyBtZXRob2RzIHRvIGdldCBBRyBHcmlkIGBncmlkT3B0aW9uc2AgdG8gZW5zdXJlIGdyaWRzIG1hdGNoIFNLWSBVWCBmdW5jdGlvbmFsaXR5LiBUaGUgYGdyaWRPcHRpb25zYCBjYW4gYmUgb3ZlcnJpZGRlbiwgYW5kIGluY2x1ZGUgcmVnaXN0ZXJlZCBTS1kgVVggY29sdW1uIHR5cGVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICNrZXlNYXAgPSBuZXcgV2Vha01hcDxhbnksIHN0cmluZz4oKTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAjYWdHcmlkQWRhcHRlclNlcnZpY2U6IFNreUFnR3JpZEFkYXB0ZXJTZXJ2aWNlO1xuICAjcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuICAjZGF0ZVNlcnZpY2UgPSBpbmplY3QoU2t5RGF0ZVNlcnZpY2UpO1xuICAjbG9nU2VydmljZSA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZ0dyaWRBZGFwdGVyU2VydmljZTogU2t5QWdHcmlkQWRhcHRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcmVzb3VyY2VzPzogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jYWdHcmlkQWRhcHRlclNlcnZpY2UgPSBhZ0dyaWRBZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNyZXNvdXJjZXMgPSByZXNvdXJjZXM7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhlbWVTdmMpIHtcbiAgICAgIHRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc2V0dGluZ3NDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLiNjdXJyZW50VGhlbWUgPSBzZXR0aW5nc0NoYW5nZS5jdXJyZW50U2V0dGluZ3M7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBbQUcgR3JpZCBgZ3JpZE9wdGlvbnNgXShodHRwczovL3d3dy5hZy1ncmlkLmNvbS9qYXZhc2NyaXB0LWdyaWQtcHJvcGVydGllcy8pIHdpdGggZGVmYXVsdCBTS1kgVVggb3B0aW9ucywgc3R5bGluZywgYW5kIGNlbGwgcmVuZGVyZXJzIHJlZ2lzdGVyZWQgZm9yIHJlYWQtb25seSBncmlkcy5cbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBnZXRHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy4jZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zID0gdGhpcy4jbWVyZ2VHcmlkT3B0aW9ucyhcbiAgICAgIGRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIGFyZ3MuZ3JpZE9wdGlvbnMsXG4gICAgKTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIFtBRyBHcmlkIGBncmlkT3B0aW9uc2BdKGh0dHBzOi8vd3d3LmFnLWdyaWQuY29tL2phdmFzY3JpcHQtZ3JpZC1wcm9wZXJ0aWVzLykgd2l0aCBkZWZhdWx0IFNLWSBVWCBvcHRpb25zLCBzdHlsaW5nLCBhbmQgY2VsbCBlZGl0b3JzIHJlZ2lzdGVyZWQgZm9yIGVkaXRhYmxlIGdyaWRzLlxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGdldEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9ucyA9IHRoaXMuI2dldERlZmF1bHRFZGl0YWJsZUdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zID0gdGhpcy4jbWVyZ2VHcmlkT3B0aW9ucyhcbiAgICAgIGRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIGFyZ3MuZ3JpZE9wdGlvbnMsXG4gICAgKTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgYGdldEhlYWRlckhlaWdodGAgbWV0aG9kIGlzIG5vIGxvbmdlciBuZWVkZWQuIEhlYWRlciBoZWlnaHQgaXMgbWFuYWdlZCBpbiBDU1MuXG4gICAqL1xuICBwdWJsaWMgZ2V0SGVhZGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRUaGVtZT8udGhlbWU/Lm5hbWUgPT09ICdtb2Rlcm4nID8gNjAgOiAzNztcbiAgfVxuXG4gICNtZXJnZUdyaWRPcHRpb25zKFxuICAgIGRlZmF1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMsXG4gICAgcHJvdmlkZWRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMsXG4gICk6IEdyaWRPcHRpb25zIHtcbiAgICBpZiAoJ2VuYWJsZVJhbmdlU2VsZWN0aW9uJyBpbiBwcm92aWRlZEdyaWRPcHRpb25zKSB7XG4gICAgICBpZiAocHJvdmlkZWRHcmlkT3B0aW9ucy5lbmFibGVSYW5nZVNlbGVjdGlvbikge1xuICAgICAgICBwcm92aWRlZEdyaWRPcHRpb25zLmNlbGxTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgfVxuICAgICAgZGVsZXRlIHByb3ZpZGVkR3JpZE9wdGlvbnMuZW5hYmxlUmFuZ2VTZWxlY3Rpb247XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID09PSAnc2luZ2xlJyB8fFxuICAgICAgcHJvdmlkZWRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPT09ICdtdWx0aXBsZSdcbiAgICApIHtcbiAgICAgIGNvbnN0IHJvd1NlbGVjdGlvbk9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIFJvd1NlbGVjdGlvbk9wdGlvbnM+ID0ge1xuICAgICAgICBzaW5nbGU6IHsgbW9kZTogJ3NpbmdsZVJvdycgfSxcbiAgICAgICAgbXVsdGlwbGU6IHsgbW9kZTogJ211bHRpUm93JyB9LFxuICAgICAgfTtcbiAgICAgIHByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID1cbiAgICAgICAgcm93U2VsZWN0aW9uT3B0aW9uc1twcm92aWRlZEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbl07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gJiZcbiAgICAgIHByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uPy5tb2RlXG4gICAgKSB7XG4gICAgICBwcm92aWRlZEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHtcbiAgICAgICAgLi4uKGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gYXMgUm93U2VsZWN0aW9uT3B0aW9ucyksXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMucm93U2VsZWN0aW9uLFxuICAgICAgfSBhcyBSb3dTZWxlY3Rpb25PcHRpb25zO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuY29tcG9uZW50cyxcbiAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBjb21wb25lbnRzIGxhc3QgdG8gcHJldmVudCBjb25zdW1lcnMgZnJvbSBvdmVyd3JpdGluZyBvdXIgY29tcG9uZW50IHR5cGVzLlxuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuY29tcG9uZW50cyxcbiAgICAgIH0sXG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmNvbHVtblR5cGVzLFxuICAgICAgICAvLyBhcHBseSBkZWZhdWx0IHNlY29uZCB0byBwcmV2ZW50IGNvbnN1bWVycyBmcm9tIG92ZXJ3cml0aW5nIG91ciBkZWZhdWx0IGNvbHVtbiB0eXBlc1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuY29sdW1uVHlwZXMsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLFxuICAgICAgICAvLyBhbGxvdyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgYWxsIGRlZmF1bHRDb2xEZWYgcHJvcGVydGllcyBleGNlcHQgY2VsbENsYXNzUnVsZXMsIHdoaWNoIHdlIHJlc2VydmUgZm9yIHN0eWxpbmdcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmPy5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgaGVhZGVyQ2xhc3M6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmPy5oZWFkZXJDbGFzcyxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sR3JvdXBEZWY6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xHcm91cERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sR3JvdXBEZWYsXG4gICAgICAgIGhlYWRlckNsYXNzOiBkZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbEdyb3VwRGVmPy5oZWFkZXJDbGFzcyxcbiAgICAgIH0sXG4gICAgICBpY29uczoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBFbmFibGUgdGV4dCBzZWxlY3Rpb24gdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWQgb3IgY29uZmxpY3Rpbmcgd2l0aCBhbm90aGVyIHNldHRpbmcuXG4gICAgaWYgKFxuICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gfHxcbiAgICAgICghKCdlbmFibGVDZWxsVGV4dFNlbGVjdGlvbicgaW4gbWVyZ2VkR3JpZE9wdGlvbnMpICYmXG4gICAgICAgICFtZXJnZWRHcmlkT3B0aW9ucy5jZWxsU2VsZWN0aW9uICYmXG4gICAgICAgICFtZXJnZWRHcmlkT3B0aW9ucy5jb2x1bW5EZWZzPy5zb21lKChjb2w6IENvbERlZikgPT4gY29sLmVkaXRhYmxlKSlcbiAgICApIHtcbiAgICAgIG1lcmdlZEdyaWRPcHRpb25zLmNvbnRleHQgfHw9IHt9O1xuICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gPz89IHRydWU7XG4gICAgICBtZXJnZWRHcmlkT3B0aW9ucy5jb250ZXh0LmVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uID1cbiAgICAgICAgbWVyZ2VkR3JpZE9wdGlvbnMuZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgI2dldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgLy8gY2VsbENsYXNzUnVsZXMgY2FuIGJlIGZ1bmN0aW9ucyBvciBzdHJpbmcgZXhwcmVzc2lvbnNcbiAgICBjb25zdCBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24gPSAoKTogYm9vbGVhbiA9PiB0cnVlO1xuXG4gICAgZnVuY3Rpb24gZ2V0RWRpdGFibGVGbihcbiAgICAgIGlzVW5lZGl0YWJsZT86IGJvb2xlYW4sXG4gICAgKTogKHBhcmFtczogQ2VsbENsYXNzUGFyYW1zKSA9PiBib29sZWFuIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRWRpdGFibGUgPSBwYXJhbXMuY29sRGVmLmVkaXRhYmxlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgaXNFZGl0YWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHBhcmFtcy5hcGkuZ2V0Q29sdW1uKHBhcmFtcy5jb2xEZWYpO1xuICAgICAgICAgIGlzRWRpdGFibGUgPSBpc0VkaXRhYmxlKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB9IGFzIEVkaXRhYmxlQ2FsbGJhY2tQYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVW5lZGl0YWJsZSA/ICFpc0VkaXRhYmxlIDogISFpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSksXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFZhbGlkYXRvckZuKCk6IChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtOiBDZWxsQ2xhc3NQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtLmNvbERlZiAmJlxuICAgICAgICAgIHR5cGVvZiBwYXJhbS5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgICAgICA/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gIXBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmRhdGEsXG4gICAgICAgICAgICBwYXJhbS5ub2RlPy5yb3dJbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMgPSB7XG4gICAgICBbU2t5Q2VsbENsYXNzLkludmFsaWRdOiBnZXRWYWxpZGF0b3JGbigpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRIZWFkZXJDbGFzcyhcbiAgICAgIC4uLmNsYXNzTmFtZXM6IHN0cmluZ1tdXG4gICAgKTogKHBhcmFtczogSGVhZGVyQ2xhc3NQYXJhbXMpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiAocGFyYW1zOiBIZWFkZXJDbGFzc1BhcmFtcyk6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgbWluV2lkdGggPSBwYXJhbXMuY29sdW1uPy5nZXRNaW5XaWR0aCgpID8/IDA7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gcGFyYW1zLmNvbHVtbj8uZ2V0TWF4V2lkdGgoKSA/PyBJbmZpbml0eTtcbiAgICAgICAgaWYgKHBhcmFtcy5jb2x1bW4/LmlzUmVzaXphYmxlKCkgJiYgbWluV2lkdGggPCBtYXhXaWR0aCkge1xuICAgICAgICAgIHJldHVybiBbLi4uY2xhc3NOYW1lcywgU2t5SGVhZGVyQ2xhc3MuUmVzaXphYmxlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFNreUdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyA9IHtcbiAgICAgIGNvbHVtblR5cGVzOiB7XG4gICAgICAgIFtTa3lDZWxsVHlwZS5BdXRvY29tcGxldGVdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuQXV0b2NvbXBsZXRlXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGF1dG9jb21wbGV0ZUZvcm1hdHRlcixcbiAgICAgICAgICBjb21wYXJhdG9yOiBhdXRvY29tcGxldGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiAxODUsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5DdXJyZW5jeV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5DdXJyZW5jeV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlclNlbGVjdG9yOiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3RvcihcbiAgICAgICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LXZhbGlkYXRvcicsXG4gICAgICAgICAgICB7IGNvbXBvbmVudDogJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3knIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCksXG4gICAgICAgICAgbWluV2lkdGg6IDE4NSxcbiAgICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChwYXJhbXMpID0+XG4gICAgICAgICAgICB0aGlzLiNzdXBwcmVzc0VudGVyKHBhcmFtcykgfHwgdGhpcy4jc3VwcHJlc3NUYWIocGFyYW1zKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkRhdGVdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuRGF0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICBjb21wYXJhdG9yOiBkYXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogdGhpcy4jY3VycmVudFRoZW1lPy50aGVtZT8ubmFtZSA9PT0gJ21vZGVybicgPyAxODAgOiAxNjAsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuI2RhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgICAgICAgICAgIHBhcmFtcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGFyZ3MubG9jYWxlLFxuICAgICAgICAgICAgICAgICAgYXJncy5kYXRlRm9ybWF0IHx8ICdzaG9ydERhdGUnLFxuICAgICAgICAgICAgICAgICkgfHwgJydcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoKGVyciBhcyBFcnJvcikuc3RhY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNsb2dTZXJ2aWNlLmVycm9yKGAkeyhlcnIgYXMgRXJyb3IpLnN0YWNrfWApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuI2xvZ1NlcnZpY2UuZXJyb3IoYCR7ZXJyfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTG9va3VwXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkxvb2t1cF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yTG9va3VwQ29tcG9uZW50LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyTG9va3VwQ29tcG9uZW50LFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb29rdXBQcm9wZXJ0aWVzID0gYXBwbHlTa3lMb29rdXBQcm9wZXJ0aWVzRGVmYXVsdHMoXG4gICAgICAgICAgICAgIHBhcmFtcy5jb2xEZWY/LmNlbGxSZW5kZXJlclBhcmFtcz8uc2t5Q29tcG9uZW50UHJvcGVydGllcyA/P1xuICAgICAgICAgICAgICAgIHBhcmFtcy5jb2xEZWY/LmNlbGxFZGl0b3JQYXJhbXM/LnNreUNvbXBvbmVudFByb3BlcnRpZXMgPz9cbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gKHBhcmFtcy52YWx1ZSB8fCBbXSlcbiAgICAgICAgICAgICAgLm1hcCgodmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW2xvb2t1cFByb3BlcnRpZXMuZGVzY3JpcHRvclByb3BlcnR5IGFzIHN0cmluZ107XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgLmpvaW4oJzsgJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTnVtYmVyXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLk51bWJlcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlclNlbGVjdG9yOiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3RvcihcbiAgICAgICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJyxcbiAgICAgICAgICApLFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JOdW1iZXJDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCksXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Sb3dTZWxlY3Rvcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyUm93U2VsZWN0b3JDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB7XG4gICAgICAgICAgICBoZWFkZXJIaWRkZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBoZWFkZXJOYW1lOiAnUm93IHNlbGVjdGlvbicsXG4gICAgICAgICAgbWluV2lkdGg6IDU1LFxuICAgICAgICAgIG1heFdpZHRoOiA1NSxcbiAgICAgICAgICByZXNpemFibGU6IGZhbHNlLFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogNTUsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5UZW1wbGF0ZV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5UZW1wbGF0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgICAgY2VsbEVkaXRvcjogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5UZXh0XToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLlRleHRdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCcsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlZhbGlkYXRvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgLi4udmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyU2VsZWN0b3I6IGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKFxuICAgICAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICBjZWxsQ2xhc3NSdWxlczogZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgaGVhZGVyQ2xhc3M6IGdldEhlYWRlckNsYXNzKCksXG4gICAgICAgIGhlYWRlckNvbXBvbmVudDogU2t5QWdHcmlkSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgICBzdXBwcmVzc0hlYWRlcktleWJvYXJkRXZlbnQ6IChcbiAgICAgICAgICBrZXlwcmVzczogU3VwcHJlc3NIZWFkZXJLZXlib2FyZEV2ZW50UGFyYW1zLFxuICAgICAgICApID0+IGtleXByZXNzLmV2ZW50LmNvZGUgPT09ICdUYWInLFxuICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChrZXlwcmVzczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKSA9PlxuICAgICAgICAgIHRoaXMuI3N1cHByZXNzVGFiKGtleXByZXNzKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sR3JvdXBEZWY6IHtcbiAgICAgICAgaGVhZGVyR3JvdXBDb21wb25lbnQ6IFNreUFnR3JpZEhlYWRlckdyb3VwQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIGRvbUxheW91dDogJ2F1dG9IZWlnaHQnLFxuICAgICAgZW5zdXJlRG9tT3JkZXI6IHRydWUsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yJzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeVZhbGlkYXRvckNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnOlxuICAgICAgICAgIFNreUFnR3JpZENlbGxSZW5kZXJlclZhbGlkYXRvclRvb2x0aXBDb21wb25lbnQsXG4gICAgICB9LFxuICAgICAgZm9jdXNHcmlkSW5uZXJFbGVtZW50OiAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RGb2N1c2VkQ2VsbCA9IHBhcmFtcy5jb250ZXh0WydsYXN0Rm9jdXNlZENlbGwnXSBhc1xuICAgICAgICAgIHwgTGFzdEZvY3VzZWRDZWxsXG4gICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChsYXN0Rm9jdXNlZENlbGwpIHtcbiAgICAgICAgICBpZiAobGFzdEZvY3VzZWRDZWxsLnJvd0luZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBpLnNldEZvY3VzZWRDZWxsKFxuICAgICAgICAgICAgICBsYXN0Rm9jdXNlZENlbGwucm93SW5kZXgsXG4gICAgICAgICAgICAgIGxhc3RGb2N1c2VkQ2VsbC5jb2x1bW4sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBpLnNldEZvY3VzZWRIZWFkZXIobGFzdEZvY3VzZWRDZWxsLmNvbHVtbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dJZDogKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBkYXRhSWQgPSBwYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgaWYgKGRhdGFJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGAke3BhcmFtcy5kYXRhLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLiNrZXlNYXAuaGFzKHBhcmFtcy5kYXRhKSkge1xuICAgICAgICAgIHRoaXMuI2tleU1hcC5zZXQocGFyYW1zLmRhdGEsIGAke3Jvd05vZGVJZC0tfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLiNrZXlNYXAuZ2V0KHBhcmFtcy5kYXRhKSBhcyBzdHJpbmc7XG4gICAgICB9LFxuICAgICAgZ2V0Um93Q2xhc3M6IChwYXJhbXM6IFJvd0NsYXNzUGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXMubm9kZS5pZCkge1xuICAgICAgICAgIHJldHVybiBgc2t5LWFnLWdyaWQtcm93LSR7cGFyYW1zLm5vZGUuaWR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgc29ydERlc2NlbmRpbmc6IHRoaXMuI2dldEljb25UZW1wbGF0ZSgnc29ydERlc2NlbmRpbmcnKSxcbiAgICAgICAgc29ydEFzY2VuZGluZzogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdzb3J0QXNjZW5kaW5nJyksXG4gICAgICAgIGNvbHVtbk1vdmVNb3ZlOiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVNb3ZlJyksXG4gICAgICAgIGNvbHVtbk1vdmVIaWRlOiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVIaWRlJyksXG4gICAgICAgIGNvbHVtbk1vdmVMZWZ0OiB0aGlzLiNnZXRJY29uVGVtcGxhdGUoJ2NvbHVtbk1vdmVMZWZ0JyksXG4gICAgICAgIGNvbHVtbk1vdmVSaWdodDogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdjb2x1bW5Nb3ZlUmlnaHQnKSxcbiAgICAgICAgY29sdW1uTW92ZVBpbjogdGhpcy4jZ2V0SWNvblRlbXBsYXRlKCdjb2x1bW5Nb3ZlUGluJyksXG4gICAgICB9LFxuICAgICAgbG9hZGluZ092ZXJsYXlDb21wb25lbnQ6IFNreUFnR3JpZExvYWRpbmdDb21wb25lbnQsXG4gICAgICBvbkNlbGxGb2N1c2VkOiAoKSA9PiB0aGlzLiNvbkNlbGxGb2N1c2VkKCksXG4gICAgICByb3dTZWxlY3Rpb246IHtcbiAgICAgICAgbW9kZTogJ211bHRpUm93JyxcbiAgICAgICAgZW5hYmxlQ2xpY2tTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBlbmFibGVTZWxlY3Rpb25XaXRob3V0S2V5czogdHJ1ZSxcbiAgICAgICAgY2hlY2tib3hlczogZmFsc2UsXG4gICAgICAgIGhlYWRlckNoZWNrYm94OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzaW5nbGVDbGlja0VkaXQ6IHRydWUsXG4gICAgICBzb3J0aW5nT3JkZXI6IFsnZGVzYycsICdhc2MnLCBudWxsXSxcbiAgICAgIHN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zOiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBjb2x1bW5UeXBlcyA9IGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBDb2xEZWZcbiAgICA+O1xuXG4gICAgY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3ldLFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFgJHt2YWx1ZSB8fCAnJ31gLm1hdGNoKC9eW14wLTldKihcXGQrWywuXT8pK1xcZCpbXjAtOV0qJC8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGN1cnJlbmN5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jcmVzb3VyY2VzKSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9jdXJyZW5jeV92YWxpZGF0b3JfbWVzc2FnZScpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb2x1bW5UeXBlc1tcbiAgICAgICAgICAgIFNreUNlbGxUeXBlLkN1cnJlbmN5VmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvcl0gPSB7XG4gICAgICAuLi5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5WYWxpZGF0b3JdLFxuICAgICAgLi4uY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyXSxcbiAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgIC4uLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLlZhbGlkYXRvcl0uY2VsbENsYXNzUnVsZXMsXG4gICAgICAgIC4uLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0uY2VsbENsYXNzUnVsZXMsXG4gICAgICB9LFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISF2YWx1ZSAmJiAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlcicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI3Jlc291cmNlcykge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreV9hZ19ncmlkX2NlbGxfcmVuZGVyZXJfbnVtYmVyX3ZhbGlkYXRvcl9tZXNzYWdlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbHVtblR5cGVzW1xuICAgICAgICAgICAgU2t5Q2VsbFR5cGUuTnVtYmVyVmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy4jcmVzb3VyY2VzXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreV9hZ19ncmlkX3Jvd19zZWxlY3Rvcl9jb2x1bW5faGVhZGluZycpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl0uaGVhZGVyTmFtZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFNreUdyaWRPcHRpb25zO1xuICB9XG5cbiAgI29uQ2VsbEZvY3VzZWQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuXG4gICAgdGhpcy4jYWdHcmlkQWRhcHRlclNlcnZpY2UuZm9jdXNPbkZvY3VzYWJsZUNoaWxkcmVuKGN1cnJlbnRFbGVtZW50KTtcbiAgfVxuXG4gICNnZXREZWZhdWx0RWRpdGFibGVHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy4jZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRlZmF1bHRHcmlkT3B0aW9ucztcbiAgfVxuXG4gICNnZXRJY29uVGVtcGxhdGUoaWNvbk5hbWU6IGtleW9mIEljb25NYXBUeXBlKTogKCkgPT4gc3RyaW5nIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGljb25NYXBbaWNvbk5hbWVdO1xuICAgICAgaWYgKHRoaXMuI2N1cnJlbnRUaGVtZT8udGhlbWUubmFtZSA9PT0gJ21vZGVybicgJiYgaWNvbi5za3lJY29uKSB7XG4gICAgICAgIHJldHVybiBgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJza3ktaS0ke2ljb24uc2t5SWNvbn1cIj48L2k+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS0ke2ljb24uZmFJY29ufVwiPjwvaT5gO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAjc3VwcHJlc3NUYWIocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAocGFyYW1zLmV2ZW50LmNvZGUgPT09ICdUYWInKSB7XG4gICAgICBpZiAocGFyYW1zLmVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudGx5Rm9jdXNlZEVsID1cbiAgICAgICAgICB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuICAgICAgICAvLyBpbmxpbmUgY2VsbCBlZGl0b3JzIGhhdmUgdGhlICdhZy1jZWxsJyBjbGFzcywgd2hpbGUgcG9wdXAgZWRpdG9ycyBoYXZlIHRoZSAnYWctcG9wdXAtZWRpdG9yJyBjbGFzc1xuICAgICAgICBjb25zdCBjZWxsRWwgPSB0aGlzLiNhZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoXG4gICAgICAgICAgY3VycmVudGx5Rm9jdXNlZEVsLFxuICAgICAgICAgICdhZy1jZWxsJyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcG9wdXBFbCA9IHRoaXMuI2FnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEVsZW1lbnRPclBhcmVudFdpdGhDbGFzcyhcbiAgICAgICAgICBjdXJyZW50bHlGb2N1c2VkRWwsXG4gICAgICAgICAgJ2FnLXBvcHVwLWVkaXRvcicsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gY2VsbEVsIHx8IHBvcHVwRWw7XG5cbiAgICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGwgPVxuICAgICAgICAgIHRoaXMuI2FnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldE5leHRGb2N1c2FibGVFbGVtZW50KFxuICAgICAgICAgICAgY3VycmVudGx5Rm9jdXNlZEVsLFxuICAgICAgICAgICAgcGFyZW50RWwsXG4gICAgICAgICAgICBwYXJhbXMuZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuICEhbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgI3N1cHByZXNzRW50ZXIocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAocGFyYW1zLmV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgIHJldHVybiBwYXJhbXMuZWRpdGluZztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -3021,7 +3021,7 @@ class SkyAgGridService {
|
|
|
3021
3021
|
/*istanbul ignore else*/
|
|
3022
3022
|
if (themeSvc) {
|
|
3023
3023
|
themeSvc.settingsChange
|
|
3024
|
-
.pipe(takeUntil
|
|
3024
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
3025
3025
|
.subscribe((settingsChange) => {
|
|
3026
3026
|
this.#currentTheme = settingsChange.currentSettings;
|
|
3027
3027
|
});
|
|
@@ -3074,9 +3074,7 @@ class SkyAgGridService {
|
|
|
3074
3074
|
rowSelectionOptions[providedGridOptions.rowSelection];
|
|
3075
3075
|
}
|
|
3076
3076
|
if (defaultGridOptions.rowSelection &&
|
|
3077
|
-
providedGridOptions.rowSelection?.mode
|
|
3078
|
-
providedGridOptions.rowSelection?.mode ===
|
|
3079
|
-
defaultGridOptions.rowSelection.mode) {
|
|
3077
|
+
providedGridOptions.rowSelection?.mode) {
|
|
3080
3078
|
providedGridOptions.rowSelection = {
|
|
3081
3079
|
...defaultGridOptions.rowSelection,
|
|
3082
3080
|
...providedGridOptions.rowSelection,
|
|
@@ -3374,7 +3372,7 @@ class SkyAgGridService {
|
|
|
3374
3372
|
if (this.#resources) {
|
|
3375
3373
|
this.#resources
|
|
3376
3374
|
.getString('sky_ag_grid_cell_renderer_currency_validator_message')
|
|
3377
|
-
.pipe(takeUntil
|
|
3375
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
3378
3376
|
.subscribe((value) => {
|
|
3379
3377
|
columnTypes[SkyCellType.CurrencyValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
|
|
3380
3378
|
});
|
|
@@ -3399,13 +3397,13 @@ class SkyAgGridService {
|
|
|
3399
3397
|
if (this.#resources) {
|
|
3400
3398
|
this.#resources
|
|
3401
3399
|
.getString('sky_ag_grid_cell_renderer_number_validator_message')
|
|
3402
|
-
.pipe(takeUntil
|
|
3400
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
3403
3401
|
.subscribe((value) => {
|
|
3404
3402
|
columnTypes[SkyCellType.NumberValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
|
|
3405
3403
|
});
|
|
3406
3404
|
this.#resources
|
|
3407
3405
|
.getString('sky_ag_grid_row_selector_column_heading')
|
|
3408
|
-
.pipe(takeUntil
|
|
3406
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
|
3409
3407
|
.subscribe((value) => {
|
|
3410
3408
|
columnTypes[SkyCellType.RowSelector].headerName = value;
|
|
3411
3409
|
});
|