@fundamental-ngx/platform 0.52.2-rc.3 → 0.52.2-rc.31
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/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
- package/esm2022/form/date-picker/date-picker.component.mjs +2 -2
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +2 -2
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +2 -2
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +18 -4
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +4 -4
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +2 -2
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +8 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +5 -6
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
- package/esm2022/variant-management/variant-management.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +10 -5
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +32 -13
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +10 -3
- package/package.json +10 -10
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -1
- package/table/components/table-p13-dialog/table-p13-dialog.component.d.ts +4 -2
|
@@ -272,7 +272,7 @@ export class IconTabBarBase {
|
|
|
272
272
|
_hideExtraTabs(tabs, extraTabs) {
|
|
273
273
|
for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {
|
|
274
274
|
const tab = tabs[i];
|
|
275
|
-
if (tab
|
|
275
|
+
if (tab && tab?.uId !== this.selectedUid) {
|
|
276
276
|
extraTabs.push({ ...tab });
|
|
277
277
|
tab.hidden = true;
|
|
278
278
|
tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
|
|
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
325
325
|
type: ViewChild,
|
|
326
326
|
args: ['tablist', { read: ElementRef }]
|
|
327
327
|
}] } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBSU4sTUFBTSxFQUVOLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQVkscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVExRCxNQUFNLE9BQWdCLGNBQWM7SUFEcEM7UUE4Q0k7O1dBRUc7UUFFSCxhQUFRLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTVFLGlEQUFpRDtRQUVqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQVkzRCxjQUFjO1FBQ2QsZ0JBQVcsR0FBRyxNQUFNLENBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBSzNDLGNBQWM7UUFDZCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMs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QTBEckIscUJBQXFCLHNIQUlGLFVBQVU7OzJGQTlEdEIsY0FBYztrQkFEbkMsU0FBUzs4QkFlRixJQUFJO3NCQURQLEtBQUs7Z0JBY04sS0FBSztzQkFESixLQUFLO2dCQU9GLFdBQVc7c0JBRGQsS0FBSztnQkFXTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFPUCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMscUJBQXFCO2dCQUtoQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHNpZ25hbCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtleVV0aWwsIE51bGxhYmxlLCBPdmVyZmxvd0xpc3REaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGRF9EWU5BTUlDX1BBR0UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZHluYW1pYy1wYWdlJztcbmltcG9ydCB7IElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEljb25UYWJCYXJJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pY29uLXRhYi1iYXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiQ29sb3JBc3NvY2lhdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYi1jb2xvci1hc3NvY2lhdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYkRlc3RpbnlNb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSWNvblRhYkJhclBvcG92ZXJCYXNlIH0gZnJvbSAnLi9wb3BvdmVycy9pY29uLXRhYi1iYXItcG9wb3Zlci1iYXNlLmNsYXNzJztcbmltcG9ydCB7IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3ZlcnMvdGV4dC10eXBlLXBvcG92ZXIvdGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWNvblRhYkJhckJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiB0YWIgZWxlbWVudHMsIHRoYXQgY2FuIHJlY2VpdmUgZm9jdXMuXG4gICAgICogVGhlcmUncyBhIHNlcGFyYXRlIG1hcHBpbmcgZnVuY3Rpb24gdG8gZ2V0IGFjdHVhbCBodG1sIGVsZW1lbnQ6IGBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlYFxuICAgICAqL1xuICAgIGFic3RyYWN0IF90YWJVSUVsZW1lbnRzOiBRdWVyeUxpc3Q8dW5rbm93bj47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBfdGFiQmFyUG9wb3ZlcjogSWNvblRhYkJhclBvcG92ZXJCYXNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgdGFiIGJhciBjb25maWd1cmF0aW9uIHRoYXQgc3RvcmVzIHRoZSBzdGF0ZSBvZiBlYWNoIHRhYi4gQmFzZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLCBhIHRhYiBiYXIgaXMgcmVwcmVzZW50aW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRhYnModmFsdWU6IEljb25UYWJCYXJJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fdGFicyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHRhYnMoKTogSWNvblRhYkJhckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBGbGFnIHJlcHJlc2VudGluZyBydGwgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNSdGw6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZGVuc2l0eU1vZGUgc2V0dGVyIHRyaWdnZXJzIHRhYnMgdG8gcmUtY2FsY3VsYXRpb24gb3ZlcmZsb3dlZCB0YWJzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVuc2l0eU1vZGUodmFsdWU6IFRhYkRlc3RpbnlNb2RlKSB7XG4gICAgICAgIC8vIFNraXAgZmlyc3QgdmFsdWUgJiYgdmFsdWUgZG9lc24ndCBlcXVhbCB0byBwcmV2aW91cyBvbmVcbiAgICAgICAgaWYgKHRoaXMuX2RlbnNpdHlNb2RlICYmIHZhbHVlICE9PSB0aGlzLl9kZW5zaXR5TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZW5zaXR5TW9kZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgdGFiIFVuaXF1ZSBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkVWlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBzb21lIHRhYiBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPEljb25UYWJCYXJJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW0+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBzZWxlY3RlZCB0YWIgVW5pcXVlIElEIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRVaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gT3ZlcmZsb3dMaXN0RGlyZWN0aXZlXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xpc3REaXJlY3RpdmUpXG4gICAgb3ZlcmZsb3dEaXJlY3RpdmU6IE92ZXJmbG93TGlzdERpcmVjdGl2ZTtcblxuICAgIC8qKiBIZWFkZXIgZWxlbWVudCByZWZlcmVuY2UuICovXG4gICAgQFZpZXdDaGlsZCgndGFibGlzdCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXh0cmFUYWJzJCA9IHNpZ25hbDxJY29uVGFiQmFySXRlbVtdPihbXSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9sYXN0VmlzaWJsZVRhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leHRyYUl0ZW1zJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRpb25zIGZvciBjb2xvcnMgb2YgdGhlIHRhYnMuXG4gICAgICogSWYgYW55IG9mIHRoZSBjb2xvciBhc3NvY2lhdGlvbnMgcHJvdmlkZWQsIHRoZXknbGwgYmUgcmVhZCBieSBzY3JlZW5yZWFkZXIgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGNvbG9yXG4gICAgICovXG4gICAgY29sb3JBc3NvY2lhdGlvbnMgPSBpbnB1dDxUYWJDb2xvckFzc29jaWF0aW9ucyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2luRHluYW1pY1BhZ2UgPSAhIWluamVjdChGRF9EWU5BTUlDX1BBR0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJzOiBJY29uVGFiQmFySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlbnNpdHlNb2RlOiBUYWJEZXN0aW55TW9kZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGFicyAmJiAhY2hhbmdlcy50YWJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0VGFicygpO1xuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5pc1J0bCAmJiAhY2hhbmdlcy5pc1J0bC5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkVWlkICYmICFjaGFuZ2VzLnNlbGVjdGVkVWlkLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTZWxlY3RlZFVpZENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgX3NlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtOiBJY29uVGFiQmFySXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZEl0ZW0udUlkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5iYWRnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9rZXlEb3duSGFuZGxlcihcbiAgICAgICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICAgICAgIHRhYjogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICBwb3BvdmVyPzogVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICh0YWIgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtTUEFDRSwgRU5URVJdKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0odGFiKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1JJR0hUX0FSUk9XLCBET1dOX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpICYmIHRhYj8uc3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBvcG92ZXI/Ll9vcGVuUG9wb3ZlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNSdGwgPyB0aGlzLl9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXgpIDogdGhpcy5fZm9jdXNOZXh0SXRlbShjdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbTEVGVF9BUlJPVywgVVBfQVJST1ddKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNSdGwgPyB0aGlzLl9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleCkgOiB0aGlzLl9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9jdXNlcyBuZXh0IHRhYiAqL1xuICAgIF9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCA9PT0gdGhpcy50YWJzLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5fZm9jdXNJdGVtKG5leHRJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9jdXNlcyBwcmV2aW91cyB0YWIgKi9cbiAgICBfZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgZmlyc3QsIGZvY3VzIHRoZSBsYXN0IG9uZS4gSWYgdGFicyBhcmUgb3ZlcmZsb3dlZCwgZm9jdXMgdGhlIGxhc3QgdGFiIGluIHRoZSBwb3BvdmVyXG4gICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW0odGhpcy50YWJzLmxlbmd0aCAtIDEsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtKGN1cnJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB0YWJJbmRleCBpbmRleCBvZiB0aGUgdGFiIHRvIGFwcGx5IGZvY3VzXG4gICAgICogQHBhcmFtIGZvY3VzTGFzdCB3aGV0aGVyIHRvIGZvY3VzIGZpcnN0IG9yIGxhc3QgaXRlbSBpbiB0aGUgcG9wb3ZlclxuICAgICAqL1xuICAgIF9mb2N1c0l0ZW0odGFiSW5kZXg6IG51bWJlciwgZm9jdXNMYXN0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRhYkluZGV4ID4gdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fdGFiQmFyUG9wb3Zlci5fb3BlblBvcG92ZXIoZm9jdXNMYXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1Ub0ZvY3VzID0gdGhpcy5fZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRoaXMuX3RhYlVJRWxlbWVudHMuZ2V0KHRhYkluZGV4KSk7XG4gICAgICAgICAgICBpdGVtVG9Gb2N1cz8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICogQGRlc2NyaXB0aW9uIHNlbGVjdCBleHRyYSBpdGVtIGluc2lkZSBwb3BvdmVyXG4gICAgICovXG4gICAgX3NlbGVjdEV4dHJhSXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0uY29sb3IpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5jc3NDbGFzc2VzID0gW2BmZC1pY29uLXRhYi1iYXJfX2l0ZW0tLSR7c2VsZWN0ZWRJdGVtLmNvbG9yfWBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZXh0cmFJdGVtc1xuICAgICAqIEBkZXNjcmlwdGlvbiByZWNhbGN1bGF0ZSBfbmV4dFN0ZXBzIGFuZCBfcHJldlN0ZXBzIGFycmF5IGlmIHdlIGhhdmUgZXh0cmEgaXRlbXNcbiAgICAgKi9cbiAgICBfcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoZXh0cmFJdGVtczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2V4dHJhSXRlbXMkLnNldChleHRyYUl0ZW1zID4gMCk7XG5cbiAgICAgICAgY29uc3QgdGFicyA9IFsuLi50aGlzLl90YWJzXTtcbiAgICAgICAgY29uc3QgZXh0cmFUYWJzOiBJY29uVGFiQmFySXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGFicy5maW5kKCh0YWIpID0+IHRhYi51SWQgPT09IHRoaXMuc2VsZWN0ZWRVaWQpO1xuXG4gICAgICAgIHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggPSB0aGlzLl9nZXRMYXN0VmlzaWJsZVRhYkluZGV4KHRhYnMubGVuZ3RoLCBleHRyYUl0ZW1zLCBzZWxlY3RlZCk7XG5cbiAgICAgICAgdGhpcy5fcmVzZXRBbmRIaWRlRXh0cmFUYWJzKHRhYnMsIGV4dHJhVGFicyk7XG5cbiAgICAgICAgdGhpcy5fZXh0cmFUYWJzJC5zZXQoZXh0cmFUYWJzKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNYXBwaW5nIGZ1bmN0aW9uIHRvIHJlc29sdmUgVUkgdGFiIGVsZW1lbnQgdG8gaXQncyBmb2N1c2FibGUgcGFydC9kZXNjZW5kYW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGUodGFiVUlFbGVtZW50OiB1bmtub3duKTogTnVsbGFibGU8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgaWYgKHRhYlVJRWxlbWVudCAmJiB0eXBlb2YgdGFiVUlFbGVtZW50ID09PSAnb2JqZWN0JyAmJiAnbmF0aXZlRWxlbWVudCcgaW4gdGFiVUlFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoKDxFbGVtZW50UmVmPnRhYlVJRWxlbWVudCkubmF0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICg8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+dGFiVUlFbGVtZW50KS5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gZ2V0IGZvY3VzYWJsZSB0YWIgZWxlbWVudCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gdHJpZ2dlciByZWNhbGN1bGF0aW9uIGl0ZW1zLCBuZWVkIHRvIGRvIGl0IGFzeW5jaHJvbm91c2x5IGFmdGVyIGRvbSB3YXMgcmVyZW5kZXJlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmZsb3dEaXJlY3RpdmUgJiYgIXRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdGhpcy5vdmVyZmxvd0RpcmVjdGl2ZS5nZXRBbW91bnRPZkV4dHJhSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcyhleHRyYSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIGluaXRpYWxpemUgc3RhdGUgb2YgdGFic1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfaW5pdFRhYnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFVpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5fZmluZEFjdGl2ZVRhYklkKHRoaXMudGFicykgfHwgdGhpcy50YWJzWzBdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkID0gc2VsZWN0ZWRJdGVtPy51SWQ7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVWlkKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJlc2V0cyBhbmQgaGlkZXMgZXh0cmEgdGFicy5cbiAgICAgKiBAcGFyYW0gdGFicyAtIFRoZSBsaXN0IG9mIHRhYiBpdGVtcy5cbiAgICAgKiBAcGFyYW0gZXh0cmFUYWJzIC0gVGhlIGxpc3Qgb2YgZXh0cmEgdGFiIGl0ZW1zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Jlc2V0QW5kSGlkZUV4dHJhVGFicyh0YWJzOiBJY29uVGFiQmFySXRlbVtdLCBleHRyYVRhYnM6IEljb25UYWJCYXJJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGFicy5mb3JFYWNoKChpdGVtKSA9PiB0aGlzLl9yZXNldFRhYihpdGVtKSk7XG4gICAgICAgIHRoaXMuX2hpZGVFeHRyYVRhYnModGFicywgZXh0cmFUYWJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBzZWxlY3RlZCBVSUQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU2VsZWN0ZWRVaWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzRXh0cmFUYWIgPSB0aGlzLl9leHRyYVRhYnMkKCkuZmluZCgodGFiKSA9PiB0YWIudUlkID09PSB0aGlzLnNlbGVjdGVkVWlkKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnRhYnMuZmluZCgodGFiKSA9PiB0YWIudUlkID09PSB0aGlzLnNlbGVjdGVkVWlkKTtcbiAgICAgICAgaWYgKGlzRXh0cmFUYWIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEV4dHJhSXRlbShpc0V4dHJhVGFiKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB2aXNpYmxlIHRhYiBpdGVtLlxuICAgICAqIEBwYXJhbSB0b3RhbFRhYnMgLSBUaGUgdG90YWwgbnVtYmVyIG9mIHRhYnMuXG4gICAgICogQHBhcmFtIGV4dHJhSXRlbXMgLSBUaGUgbnVtYmVyIG9mIGV4dHJhIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCAtIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiIGl0ZW0gKG9wdGlvbmFsKS5cbiAgICAgKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIGxhc3QgdmlzaWJsZSB0YWIgaXRlbS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0VmlzaWJsZVRhYkluZGV4KHRvdGFsVGFiczogbnVtYmVyLCBleHRyYUl0ZW1zOiBudW1iZXIsIHNlbGVjdGVkPzogSWNvblRhYkJhckl0ZW0pOiBudW1iZXIge1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuaW5kZXggPj0gdG90YWxUYWJzIC0gZXh0cmFJdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsVGFicyAtIGV4dHJhSXRlbXMgLSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsVGFicyAtIGV4dHJhSXRlbXMgLSAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJlc2V0cyB0aGUgdmlzaWJpbGl0eSBhbmQgQ1NTIGNsYXNzZXMgb2YgYSB0YWIgaXRlbS5cbiAgICAgKiBAcGFyYW0gdGFiIC0gVGhlIHRhYiBpdGVtIHRvIHJlc2V0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Jlc2V0VGFiKHRhYjogSWNvblRhYkJhckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGFiLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB0YWIuY3NzQ2xhc3NlcyA9IHRhYi5jc3NDbGFzc2VzLmZpbHRlcigoY3NzQ2xhc3MpID0+IGNzc0NsYXNzICE9PSBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhpZGVzIGV4dHJhIHRhYnMgYW5kIHVwZGF0ZXMgdGhlIGV4dHJhVGFicyBhcnJheSB3aXRoIHRoZSBoaWRkZW4gdGFicy5cbiAgICAgKiBAcGFyYW0gdGFicyAtIFRoZSBhcnJheSBvZiBhbGwgdGFiIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBleHRyYVRhYnMgLSBUaGUgYXJyYXkgdG8gc3RvcmUgdGhlIGhpZGRlbiB0YWIgaXRlbXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGlkZUV4dHJhVGFicyh0YWJzOiBJY29uVGFiQmFySXRlbVtdLCBleHRyYVRhYnM6IEljb25UYWJCYXJJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggKyAxOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGFic1tpXTtcbiAgICAgICAgICAgIGlmICh0YWIudUlkICE9PSB0aGlzLnNlbGVjdGVkVWlkKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFUYWJzLnB1c2goeyAuLi50YWIgfSk7XG4gICAgICAgICAgICAgICAgdGFiLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGFiLmNzc0NsYXNzZXMucHVzaChJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmVjdXJzaXZlbHkgZmluZHMgdGhlIGFjdGl2ZSB0YWIgaXRlbSBpbiBhIGxpc3Qgb2YgdGFicy5cbiAgICAgKiBAcGFyYW0gdGFicyAtIFRoZSBhcnJheSBvZiB0YWIgaXRlbXMuXG4gICAgICogQHJldHVybnMgVGhlIGFjdGl2ZSB0YWIgaXRlbSwgb3IgdW5kZWZpbmVkIGlmIG5vIGFjdGl2ZSB0YWIgaXMgZm91bmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZmluZEFjdGl2ZVRhYklkKHRhYnM6IEljb25UYWJCYXJJdGVtW10pOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhY3RpdmVUYWI6IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJzKSB7XG4gICAgICAgICAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9IHRhYjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGFiLnN1Ykl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID0gdGhpcy5fZmluZEFjdGl2ZVRhYklkKHRhYi5zdWJJdGVtcyk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYikge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aXZlVGFiO1xuICAgIH1cbn1cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBSU4sTUFBTSxFQUVOLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQVkscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVExRCxNQUFNLE9BQWdCLGNBQWM7SUFEcEM7UUE4Q0k7O1dBRUc7UUFFSCxhQUFRLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTVFLGlEQUFpRDtRQUVqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQVkzRCxjQUFjO1FBQ2QsZ0JBQVcsR0FBRyxNQUFNLENBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBSzNDLGNBQWM7UUFDZCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMs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ZCxjQUFjLHEwQkEwRHJCLHFCQUFxQixzSEFJRixVQUFVOzsyRkE5RHRCLGNBQWM7a0JBRG5DLFNBQVM7OEJBZUYsSUFBSTtzQkFEUCxLQUFLO2dCQWNOLEtBQUs7c0JBREosS0FBSztnQkFPRixXQUFXO3NCQURkLEtBQUs7Z0JBV04sV0FBVztzQkFEVixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBT1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLHFCQUFxQjtnQkFLaEMsYUFBYTtzQkFEWixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBzaWduYWwsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBLZXlVdGlsLCBOdWxsYWJsZSwgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYkNvbG9yQXNzb2NpYXRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWItY29sb3ItYXNzb2NpYXRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJEZXN0aW55TW9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4vcG9wb3ZlcnMvaWNvbi10YWItYmFyLXBvcG92ZXItYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEljb25UYWJCYXJCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgdGFiIGVsZW1lbnRzLCB0aGF0IGNhbiByZWNlaXZlIGZvY3VzLlxuICAgICAqIFRoZXJlJ3MgYSBzZXBhcmF0ZSBtYXBwaW5nIGZ1bmN0aW9uIHRvIGdldCBhY3R1YWwgaHRtbCBlbGVtZW50OiBgX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZWBcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PHVua25vd24+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJzdHJhY3QgX3RhYkJhclBvcG92ZXI6IEljb25UYWJCYXJQb3BvdmVyQmFzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHRhYiBiYXIgY29uZmlndXJhdGlvbiB0aGF0IHN0b3JlcyB0aGUgc3RhdGUgb2YgZWFjaCB0YWIuIEJhc2VkIG9uIHRoaXMgY29uZmlndXJhdGlvbiwgYSB0YWIgYmFyIGlzIHJlcHJlc2VudGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0YWJzKHZhbHVlOiBJY29uVGFiQmFySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX3RhYnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB0YWJzKCk6IEljb25UYWJCYXJJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFicztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRmxhZyByZXByZXNlbnRpbmcgcnRsIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUnRsOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGRlbnNpdHlNb2RlIHNldHRlciB0cmlnZ2VycyB0YWJzIHRvIHJlLWNhbGN1bGF0aW9uIG92ZXJmbG93ZWQgdGFic1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlbnNpdHlNb2RlKHZhbHVlOiBUYWJEZXN0aW55TW9kZSkge1xuICAgICAgICAvLyBTa2lwIGZpcnN0IHZhbHVlICYmIHZhbHVlIGRvZXNuJ3QgZXF1YWwgdG8gcHJldmlvdXMgb25lXG4gICAgICAgIGlmICh0aGlzLl9kZW5zaXR5TW9kZSAmJiB2YWx1ZSAhPT0gdGhpcy5fZGVuc2l0eU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGVuc2l0eU1vZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIHRhYiBVbmlxdWUgSUQuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZFVpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gc29tZSB0YWIgaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxJY29uVGFiQmFySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPEljb25UYWJCYXJJdGVtPigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gc2VsZWN0ZWQgdGFiIFVuaXF1ZSBJRCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVWlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlIHRvIE92ZXJmbG93TGlzdERpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoT3ZlcmZsb3dMaXN0RGlyZWN0aXZlKVxuICAgIG92ZXJmbG93RGlyZWN0aXZlOiBPdmVyZmxvd0xpc3REaXJlY3RpdmU7XG5cbiAgICAvKiogSGVhZGVyIGVsZW1lbnQgcmVmZXJlbmNlLiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3RhYmxpc3QnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4dHJhVGFicyQgPSBzaWduYWw8SWNvblRhYkJhckl0ZW1bXT4oW10pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbGFzdFZpc2libGVUYWJJbmRleDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXh0cmFJdGVtcyQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0aW9ucyBmb3IgY29sb3JzIG9mIHRoZSB0YWJzLlxuICAgICAqIElmIGFueSBvZiB0aGUgY29sb3IgYXNzb2NpYXRpb25zIHByb3ZpZGVkLCB0aGV5J2xsIGJlIHJlYWQgYnkgc2NyZWVucmVhZGVyIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBjb2xvclxuICAgICAqL1xuICAgIGNvbG9yQXNzb2NpYXRpb25zID0gaW5wdXQ8VGFiQ29sb3JBc3NvY2lhdGlvbnMgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pbkR5bmFtaWNQYWdlID0gISFpbmplY3QoRkRfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZW5zaXR5TW9kZTogVGFiRGVzdGlueU1vZGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRhYnMgJiYgIWNoYW5nZXMudGFicy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNSdGwgJiYgIWNoYW5nZXMuaXNSdGwuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFVpZCAmJiAhY2hhbmdlcy5zZWxlY3RlZFVpZC5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU2VsZWN0ZWRVaWRDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRUYWJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHNlbGVjdGVkSXRlbVxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIF9zZWxlY3RJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkID0gc2VsZWN0ZWRJdGVtLnVJZDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRVaWQpO1xuICAgICAgICBzZWxlY3RlZEl0ZW0uYmFkZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfa2V5RG93bkhhbmRsZXIoXG4gICAgICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgICAgICB0YWI6IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgcG9wb3Zlcj86IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAodGFiICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKHRhYik7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtSSUdIVF9BUlJPVywgRE9XTl9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSAmJiB0YWI/LnN1Ykl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwb3BvdmVyPy5fb3BlblBvcG92ZXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzUnRsID8gdGhpcy5fZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4KSA6IHRoaXMuX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0xFRlRfQVJST1csIFVQX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLmlzUnRsID8gdGhpcy5fZm9jdXNOZXh0SXRlbShjdXJyZW50SW5kZXgpIDogdGhpcy5fZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGZvY3VzZXMgbmV4dCB0YWIgKi9cbiAgICBfZm9jdXNOZXh0SXRlbShjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggPT09IHRoaXMudGFicy5sZW5ndGggLSAxID8gMCA6IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgIHRoaXMuX2ZvY3VzSXRlbShuZXh0SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGZvY3VzZXMgcHJldmlvdXMgdGFiICovXG4gICAgX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50IGlzIGZpcnN0LCBmb2N1cyB0aGUgbGFzdCBvbmUuIElmIHRhYnMgYXJlIG92ZXJmbG93ZWQsIGZvY3VzIHRoZSBsYXN0IHRhYiBpbiB0aGUgcG9wb3ZlclxuICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtKHRoaXMudGFicy5sZW5ndGggLSAxLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbShjdXJyZW50SW5kZXggLSAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gdGFiSW5kZXggaW5kZXggb2YgdGhlIHRhYiB0byBhcHBseSBmb2N1c1xuICAgICAqIEBwYXJhbSBmb2N1c0xhc3Qgd2hldGhlciB0byBmb2N1cyBmaXJzdCBvciBsYXN0IGl0ZW0gaW4gdGhlIHBvcG92ZXJcbiAgICAgKi9cbiAgICBfZm9jdXNJdGVtKHRhYkluZGV4OiBudW1iZXIsIGZvY3VzTGFzdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0YWJJbmRleCA+IHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYkJhclBvcG92ZXIuX29wZW5Qb3BvdmVyKGZvY3VzTGFzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtVG9Gb2N1cyA9IHRoaXMuX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZSh0aGlzLl90YWJVSUVsZW1lbnRzLmdldCh0YWJJbmRleCkpO1xuICAgICAgICAgICAgaXRlbVRvRm9jdXM/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHNlbGVjdGVkSXRlbVxuICAgICAqIEBkZXNjcmlwdGlvbiBzZWxlY3QgZXh0cmEgaXRlbSBpbnNpZGUgcG9wb3ZlclxuICAgICAqL1xuICAgIF9zZWxlY3RFeHRyYUl0ZW0oc2VsZWN0ZWRJdGVtOiBJY29uVGFiQmFySXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtLmNvbG9yKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0uY3NzQ2xhc3NlcyA9IFtgZmQtaWNvbi10YWItYmFyX19pdGVtLS0ke3NlbGVjdGVkSXRlbS5jb2xvcn1gXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGV4dHJhSXRlbXNcbiAgICAgKiBAZGVzY3JpcHRpb24gcmVjYWxjdWxhdGUgX25leHRTdGVwcyBhbmQgX3ByZXZTdGVwcyBhcnJheSBpZiB3ZSBoYXZlIGV4dHJhIGl0ZW1zXG4gICAgICovXG4gICAgX3JlY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKGV4dHJhSXRlbXM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9leHRyYUl0ZW1zJC5zZXQoZXh0cmFJdGVtcyA+IDApO1xuXG4gICAgICAgIGNvbnN0IHRhYnMgPSBbLi4udGhpcy5fdGFic107XG4gICAgICAgIGNvbnN0IGV4dHJhVGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRhYnMuZmluZCgodGFiKSA9PiB0YWIudUlkID09PSB0aGlzLnNlbGVjdGVkVWlkKTtcblxuICAgICAgICB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ID0gdGhpcy5fZ2V0TGFzdFZpc2libGVUYWJJbmRleCh0YWJzLmxlbmd0aCwgZXh0cmFJdGVtcywgc2VsZWN0ZWQpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2V0QW5kSGlkZUV4dHJhVGFicyh0YWJzLCBleHRyYVRhYnMpO1xuXG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQuc2V0KGV4dHJhVGFicyk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWFwcGluZyBmdW5jdGlvbiB0byByZXNvbHZlIFVJIHRhYiBlbGVtZW50IHRvIGl0J3MgZm9jdXNhYmxlIHBhcnQvZGVzY2VuZGFudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogdW5rbm93bik6IE51bGxhYmxlPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIGlmICh0YWJVSUVsZW1lbnQgJiYgdHlwZW9mIHRhYlVJRWxlbWVudCA9PT0gJ29iamVjdCcgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIHRhYlVJRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCg8RWxlbWVudFJlZj50YWJVSUVsZW1lbnQpLm5hdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PnRhYlVJRWxlbWVudCkubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBmb2N1c2FibGUgdGFiIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIHRyaWdnZXIgcmVjYWxjdWxhdGlvbiBpdGVtcywgbmVlZCB0byBkbyBpdCBhc3luY2hyb25vdXNseSBhZnRlciBkb20gd2FzIHJlcmVuZGVyZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJmbG93RGlyZWN0aXZlICYmICF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMub3ZlcmZsb3dEaXJlY3RpdmUuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoZXh0cmEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXNjcmlwdGlvbiBpbml0aWFsaXplIHN0YXRlIG9mIHRhYnNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2luaXRUYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ID0gdGhpcy50YWJzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuX2ZpbmRBY3RpdmVUYWJJZCh0aGlzLnRhYnMpIHx8IHRoaXMudGFic1swXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZCA9IHNlbGVjdGVkSXRlbT8udUlkO1xuXG4gICAgICAgIGlmICghc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXNldHMgYW5kIGhpZGVzIGV4dHJhIHRhYnMuXG4gICAgICogQHBhcmFtIHRhYnMgLSBUaGUgbGlzdCBvZiB0YWIgaXRlbXMuXG4gICAgICogQHBhcmFtIGV4dHJhVGFicyAtIFRoZSBsaXN0IG9mIGV4dHJhIHRhYiBpdGVtcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNldEFuZEhpZGVFeHRyYVRhYnModGFiczogSWNvblRhYkJhckl0ZW1bXSwgZXh0cmFUYWJzOiBJY29uVGFiQmFySXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRhYnMuZm9yRWFjaCgoaXRlbSkgPT4gdGhpcy5fcmVzZXRUYWIoaXRlbSkpO1xuICAgICAgICB0aGlzLl9oaWRlRXh0cmFUYWJzKHRhYnMsIGV4dHJhVGFicyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgY2hhbmdlcyB0byB0aGUgc2VsZWN0ZWQgVUlELlxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVNlbGVjdGVkVWlkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0V4dHJhVGFiID0gdGhpcy5fZXh0cmFUYWJzJCgpLmZpbmQoKHRhYikgPT4gdGFiLnVJZCA9PT0gdGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50YWJzLmZpbmQoKHRhYikgPT4gdGFiLnVJZCA9PT0gdGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgIGlmIChpc0V4dHJhVGFiKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RFeHRyYUl0ZW0oaXNFeHRyYVRhYik7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEV4dHJhSXRlbShzZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdmlzaWJsZSB0YWIgaXRlbS5cbiAgICAgKiBAcGFyYW0gdG90YWxUYWJzIC0gVGhlIHRvdGFsIG51bWJlciBvZiB0YWJzLlxuICAgICAqIEBwYXJhbSBleHRyYUl0ZW1zIC0gVGhlIG51bWJlciBvZiBleHRyYSBpdGVtcy5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgLSBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHRhYiBpdGVtIChvcHRpb25hbCkuXG4gICAgICogQHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBsYXN0IHZpc2libGUgdGFiIGl0ZW0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdFZpc2libGVUYWJJbmRleCh0b3RhbFRhYnM6IG51bWJlciwgZXh0cmFJdGVtczogbnVtYmVyLCBzZWxlY3RlZD86IEljb25UYWJCYXJJdGVtKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkICYmIHNlbGVjdGVkLmluZGV4ID49IHRvdGFsVGFicyAtIGV4dHJhSXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbFRhYnMgLSBleHRyYUl0ZW1zIC0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbFRhYnMgLSBleHRyYUl0ZW1zIC0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXNldHMgdGhlIHZpc2liaWxpdHkgYW5kIENTUyBjbGFzc2VzIG9mIGEgdGFiIGl0ZW0uXG4gICAgICogQHBhcmFtIHRhYiAtIFRoZSB0YWIgaXRlbSB0byByZXNldC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNldFRhYih0YWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIHRhYi5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgdGFiLmNzc0NsYXNzZXMgPSB0YWIuY3NzQ2xhc3Nlcy5maWx0ZXIoKGNzc0NsYXNzKSA9PiBjc3NDbGFzcyAhPT0gSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBIaWRlcyBleHRyYSB0YWJzIGFuZCB1cGRhdGVzIHRoZSBleHRyYVRhYnMgYXJyYXkgd2l0aCB0aGUgaGlkZGVuIHRhYnMuXG4gICAgICogQHBhcmFtIHRhYnMgLSBUaGUgYXJyYXkgb2YgYWxsIHRhYiBpdGVtcy5cbiAgICAgKiBAcGFyYW0gZXh0cmFUYWJzIC0gVGhlIGFycmF5IHRvIHN0b3JlIHRoZSBoaWRkZW4gdGFiIGl0ZW1zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2hpZGVFeHRyYVRhYnModGFiczogSWNvblRhYkJhckl0ZW1bXSwgZXh0cmFUYWJzOiBJY29uVGFiQmFySXRlbVtdKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ICsgMTsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYnNbaV07XG4gICAgICAgICAgICBpZiAodGFiICYmIHRhYj8udUlkICE9PSB0aGlzLnNlbGVjdGVkVWlkKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFUYWJzLnB1c2goeyAuLi50YWIgfSk7XG4gICAgICAgICAgICAgICAgdGFiLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGFiLmNzc0NsYXNzZXMucHVzaChJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmVjdXJzaXZlbHkgZmluZHMgdGhlIGFjdGl2ZSB0YWIgaXRlbSBpbiBhIGxpc3Qgb2YgdGFicy5cbiAgICAgKiBAcGFyYW0gdGFicyAtIFRoZSBhcnJheSBvZiB0YWIgaXRlbXMuXG4gICAgICogQHJldHVybnMgVGhlIGFjdGl2ZSB0YWIgaXRlbSwgb3IgdW5kZWZpbmVkIGlmIG5vIGFjdGl2ZSB0YWIgaXMgZm91bmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZmluZEFjdGl2ZVRhYklkKHRhYnM6IEljb25UYWJCYXJJdGVtW10pOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhY3RpdmVUYWI6IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJzKSB7XG4gICAgICAgICAgICBpZiAodGFiLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9IHRhYjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGFiLnN1Ykl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID0gdGhpcy5fZmluZEFjdGl2ZVRhYklkKHRhYi5zdWJJdGVtcyk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYikge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aXZlVGFiO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -496,7 +496,7 @@ export class SmartFilterBarComponent extends SmartFilterBar {
|
|
|
496
496
|
provide: FDP_PRESET_MANAGED_COMPONENT,
|
|
497
497
|
useExisting: SmartFilterBarComponent
|
|
498
498
|
}
|
|
499
|
-
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (!hideToolbar) {\n <fd-toolbar fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() }\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-top:0!important;padding-bottom:0!important}.fdp-smart-filter-bar .fd-toolbar{--fdToolbar_Border: none}\n"], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
499
|
+
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (!hideToolbar) {\n <fd-toolbar [shouldOverflow]=\"true\" fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n fd-toolbar-item\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() }\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" fd-toolbar-item [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-top:0!important;padding-bottom:0!important}.fdp-smart-filter-bar .fd-toolbar{--fdToolbar_Border: none}\n"], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
500
500
|
}
|
|
501
501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: SmartFilterBarComponent, decorators: [{
|
|
502
502
|
type: Component,
|
|
@@ -521,7 +521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
521
521
|
ToolbarItemDirective,
|
|
522
522
|
FormGeneratorComponent,
|
|
523
523
|
FdTranslatePipe
|
|
524
|
-
], template: "@if (!hideToolbar) {\n <fd-toolbar fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() }\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-top:0!important;padding-bottom:0!important}.fdp-smart-filter-bar .fd-toolbar{--fdToolbar_Border: none}\n"] }]
|
|
524
|
+
], template: "@if (!hideToolbar) {\n <fd-toolbar [shouldOverflow]=\"true\" fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n fd-toolbar-item\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() }\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" fd-toolbar-item [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-top:0!important;padding-bottom:0!important}.fdp-smart-filter-bar .fd-toolbar{--fdToolbar_Border: none}\n"] }]
|
|
525
525
|
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.FormGeneratorService }, { type: i0.Injector }, { type: i0.DestroyRef }], propDecorators: { _formGenerator: [{
|
|
526
526
|
type: ViewChild,
|
|
527
527
|
args: [FormGeneratorComponent]
|
|
@@ -548,4 +548,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
548
548
|
type: ContentChildren,
|
|
549
549
|
args: [SmartFilterBarToolbarItemDirective]
|
|
550
550
|
}] } });
|
|
551
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NtYXJ0LWZpbHRlci1iYXIvc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NtYXJ0LWZpbHRlci1iYXIvc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUdILHNCQUFzQixFQUN0QixvQkFBb0IsRUFFdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQXlCLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxN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LGVBQWU7OzJGQUdWLHVCQUF1QjtrQkFoQ25DLFNBQVM7K0JBQ0ksc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcseUJBQXlCO3lCQUN2QztxQkFDSixRQUNLO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7d0JBQzdCLDJDQUEyQyxFQUFFLGFBQWE7cUJBQzdELGNBQ1csSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNsQjtxS0FPa0MsY0FBYztzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBTTdCLE9BQU87c0JBRFYsS0FBSztnQkFZTixXQUFXO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3RDLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3RDLFdBQVc7c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPdEMsbUJBQW1CO3NCQURsQixNQUFNO2dCQU9QLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFPUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBSVUsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIER5bmFtaWNGb3JtRmllbGRJdGVtLFxuICAgIER5bmFtaWNGb3JtSXRlbSxcbiAgICBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LFxuICAgIEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCwgU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IENvbGxlY3Rpb25GaWx0ZXJHcm91cCwgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLCBGaWx0ZXJUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgVG9vbGJhclNlcGFyYXRvckNvbXBvbmVudCxcbiAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2V0dGluZ3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJTdWJqZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NtYXJ0LWZpbHRlci1iYXItc3ViamVjdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zbWFydC1maWx0ZXItYmFyLXRvb2xiYXItaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0SXRlbVZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCwgU21hcnRGaWx0ZXJDaGFuZ2VPYmplY3QgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJDb25kaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24nO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1maWVsZC1kZWZpbml0aW9uJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2ctY29uZmlnJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWR5bmFtaWMtZm9ybS1pdGVtJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyIH0gZnJvbSAnLi9zbWFydC1maWx0ZXItYmFyLmNsYXNzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2VydmljZSB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWJhci5zZXJ2aWNlJztcblxuY29uc3QgZGVmYXVsdENvbHVtbnNMYXlvdXQgPSAnWEw0LUwzLU0yLVMxJztcblxuZnVuY3Rpb24gZ2V0Q29sdW1uc051bWJlcihsYXlvdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICAuLi5sYXlvdXQuc3BsaXQoJy0nKS5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoQXJyYXkgPSBwYXJ0Lm1hdGNoKC9cXGQrLyk7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaEFycmF5ID8gcGFyc2VJbnQobWF0Y2hBcnJheVswXSwgMTApIDogMTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZGlhbG9nIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xuICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlLFxuICAgIHZlcnRpY2FsUGFkZGluZzogdHJ1ZSxcbiAgICBtaW5XaWR0aDogJzMwcmVtJyxcbiAgICAvKiogODhweCBpdCdzIHRoZSBoZWFkZXIgKyBmb290ZXIgaGVpZ2h0ICovXG4gICAgYm9keU1pbkhlaWdodDogJ2NhbGMoNTB2aCAtIDUuNXJlbSknXG59O1xuXG5jb25zdCBzbWFydEZpbHRlckJhclByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBTbWFydEZpbHRlckJhcixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydEZpbHRlckJhckNvbXBvbmVudClcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNtYXJ0LWZpbHRlci1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgc21hcnRGaWx0ZXJCYXJQcm92aWRlcixcbiAgICAgICAgU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLFxuICAgICAgICBGb3JtR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBTbWFydEZpbHRlckJhckNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLXNtYXJ0LWZpbHRlci1iYXInLFxuICAgICAgICAnW2NsYXNzLmZkcC1zbWFydC1maWx0ZXItYmFyLS10cmFuc3BhcmVudF0nOiAndHJhbnNwYXJlbnQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVG9vbGJhclNlcGFyYXRvckNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIEZvcm1HZW5lcmF0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU21hcnRGaWx0ZXJCYXJDb21wb25lbnQgZXh0ZW5kcyBTbWFydEZpbHRlckJhciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZvcm0gZ2VuZXJhdG9yIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKEZvcm1HZW5lcmF0b3JDb21wb25lbnQpIF9mb3JtR2VuZXJhdG9yITogRm9ybUdlbmVyYXRvckNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFN1YmplY3Qgd2hpY2ggd2lsbCBwcm92aWRlIGNvbmZpZ3VyYXRpb24gZGF0YTogZGF0YSBzb3VyY2UsIGNvbHVtbnMgZGVmaW5pdGlvbnMsIGV0Yy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdWJqZWN0KHZhbHVlOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUpIHtcbiAgICAgICAgdGhpcy5fc2V0U3ViamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHN1YmplY3QoKTogU21hcnRGaWx0ZXJCYXJTdWJqZWN0RGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3Q7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc21hcnQgZmlsdGVyIGJhciBiYWNrZ3JvdW5kIHNob3VsZCBiZSB0cmFuc3BhcmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB0cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29sdW1ucyBsYXlvdXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJzQ29sdW1uTGF5b3V0OiBOdWxsYWJsZTxzdHJpbmc+ID0gZGVmYXVsdENvbHVtbnNMYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWx0ZXJzIHdoZW4gdGhleSBhcmUgc2VsZWN0ZWQuIE90aGVyd2lzZSwgZmlsdGVycyB3aWxsIGJlIGFwcGxpZWQgb25seSBieSBwcmVzc2luZyBcIkdvXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGxpdmVVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gaGlkZSBUb29sYmFyLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGhpZGVUb29sYmFyID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGZpbHRlcnMgaGF2ZSBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc21hcnRGaWx0ZXJzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNtYXJ0RmlsdGVyQ2hhbmdlT2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gc2VsZWN0ZWQgZmlsdGVycyBoYXMgYmVlbiBhcHBsaWVkIChVc2VyIGNsaWNrZWQgb24gR28gYnV0dG9uKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzbWFydEZpbHRlcnNBcHBsaWVkOiBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWFyY2ggaW5wdXQgZmllbGQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWFyY2hJbnB1dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTZWFyY2hJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihTbWFydEZpbHRlckJhclRvb2xiYXJJdGVtRGlyZWN0aXZlKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rvb2xiYXJJdGVtUmVmczogUXVlcnlMaXN0PFNtYXJ0RmlsdGVyQmFyVG9vbGJhckl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlZCBhcnJheSBvZiBmaWx0ZXJzIHRvIGFwcGx5IGZvciB0aGUgc3ViamVjdCdzIGRhdGEgc291cmNlLlxuICAgICAqL1xuICAgIGZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGZpbHRlcnMgc2VjdGlvbiBzaG91bGQgYmUgc2hvd24uICovXG4gICAgc2hvd0ZpbHRlckJhciQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggZmllbGQgdmFsdWUgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgc2VhcmNoOiBTZWFyY2hJbnB1dCB8IHVuZGVmaW5lZDtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF90b29sYmFySXRlbXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Zvcm1JdGVtcyA9IHNpZ25hbDxEeW5hbWljRm9ybUl0ZW1bXSB8IG51bGw+KG51bGwpO1xuICAgIC8qKiBTZWxlY3RlZCBmaWx0ZXJzLiAqL1xuICAgIHNlbGVjdGVkRmlsdGVycyQgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcblxuICAgIC8qKiBTZWxlY3RlZCBmaWx0ZXJzIGNvdW50LiAqL1xuICAgIHNlbGVjdGVkRmlsdGVyc0NvdW50JCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzJCgpLmxlbmd0aCk7XG5cbiAgICAvKiogTG9hZGluZyBzdGF0ZS4gKi9cbiAgICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3Q/LmdldERhdGFTb3VyY2UoKSA/IHRoaXMuX3N1YmplY3QuZ2V0RGF0YVNvdXJjZSgpLmlzRGF0YUxvYWRpbmcgOiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3ViamVjdFN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1HZW5lcmF0b3JSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3ViamVjdCE6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNtYXJ0IGZpbHRlciBiYXIgc2VydmljZSBtYXkgYmUgcHJvdmlkZWQgYnkgcGFyZW50IGNvbXBvbmVudCB0aGF0IGFkZHMgY3VzdG9tIGNvbmZpZ3VyYXRpb24sIHNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQncyBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zbWFydEZpbHRlckJhclNlcnZpY2UgPVxuICAgICAgICBpbmplY3QoU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KSA/P1xuICAgICAgICBpbmplY3QoU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9mZ1NlcnZpY2U6IEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLmFkZENvbXBvbmVudChTbWFydEZpbHRlckJhckNvbmRpdGlvbkZpZWxkQ29tcG9uZW50LCBbU01BUlRfRklMVEVSX0JBUl9SRU5ERVJFUl9DT01QT05FTlRdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl90b29sYmFySXRlbVJlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b29sYmFySXRlbXMgPSB0aGlzLl90b29sYmFySXRlbVJlZnMudG9BcnJheSgpLm1hcCgocmVmKSA9PiByZWYudGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgY29uZGl0aW9uIHZhbHVlIGludG8gaHVtYW4tcmVhZGFibGUgdGV4dC5cbiAgICAgKiBAcGFyYW0gY29uZGl0aW9uIFNtYXJ0IGZpbHRlciBiYXIgY29uZGl0aW9uLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIENvbmRpdGlvbiBmaWx0ZXIgdHlwZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbiwgZmlsdGVyVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS5nZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uLCBmaWx0ZXJUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbiBGaWx0ZXJpbmcgU2V0dGluZ3MgRGlhbG9nICovXG4gICAgc2hvd0ZpbHRlcmluZ1NldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IGNvbHVtbnMsXG4gICAgICAgICAgICBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSxcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyczogdGhpcy5zZWxlY3RlZEZpbHRlcnMkKClcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICBTbWFydEZpbHRlckJhclNldHRpbmdzRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmRpYWxvZ0NvbmZpZyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlUGFkZGluZ3M6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc1MHJlbScsXG4gICAgICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChzZWxlY3RlZEZpbHRlcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKHNlbGVjdGVkRmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB3aGVuIHNlYXJjaCBxdWVyeSBjaGFuZ2VkLiAqL1xuICAgIG9uU2VhcmNoSW5wdXRDaGFuZ2UoZXZlbnQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBDbGVhciBzZWFyY2ggcXVlcnkuICovXG4gICAgY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1Ym1pdHMgZmlsdGVycyBhbmQgc2VhcmNoIGZvcm0uXG4gICAgICovXG4gICAgc3VibWl0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5zdWJtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGZvciBzZXR0aW5nIHByZWRlZmluZWQgY29uZmlndXJhdGlvbi4gKi9cbiAgICBhc3luYyBzZXRQcmVzZXQoZGF0YTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2lnbm9yZVByZXNldENoYW5nZSA9IHRydWU7XG4gICAgICAgIGRhdGEuZmlsdGVyQnkgPSBkYXRhLmZpbHRlckJ5IHx8IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5ID0gZGF0YS5maWx0ZXJCeTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBkYXRhLnNlYXJjaDtcblxuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHZhbHVlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fcmVmcmVzaCQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBSZXNldCBmb3JtXG4gICAgICAgICAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLnJlc2V0Rm9ybSh0aGlzLl9mb3JtR2VuZXJhdG9yLmZvcm0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IG5ldyBkYXRhXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJCeSBvZiB0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybUNvbnRyb2wodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLCBmaWx0ZXJCeS5maWVsZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1JdGVtID0gY29udHJvbC5mb3JtSXRlbSBhcyBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS50cmFuc2Zvcm1Db2xsZWN0aW9uRmlsdGVyKGZpbHRlckJ5KTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbmRpdGlvbnMgPSBhd2FpdCB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q29uZGl0aW9uRmllbGRTZWxlY3RlZFZhcmlhbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbD8uc2V0VmFsdWUoc2VsZWN0ZWRDb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJCeS5tYXAoKGZpbHRlckJ5KSA9PiBmaWx0ZXJCeS5maWVsZCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5zdWJqZWN0LmdldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnModGhpcy5maWx0ZXJCeSwgdGhpcy5zZWFyY2gpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3ViamVjdC5nZXRTdWJqZWN0KCkuZmV0Y2goKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24uICovXG4gICAgZ2V0Q3VycmVudFByZXNldCgpOiBTbWFydEZpbHRlckJhck1hbmFnZWRQcmVzZXQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaCxcbiAgICAgICAgICAgIGZpbHRlckJ5OiB0aGlzLmZpbHRlckJ5XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gZm9ybSBnZW5lcmF0b3IgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGFuZCBzdWJtaXR0ZWQuXG4gICAgICovXG4gICAgX29uRm9ybVN1Ym1pdHRlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB0aGlzLl9nZW5lcmF0ZUNvbGxlY3Rpb25GaWx0ZXJHcm91cHMoZXZlbnQpO1xuICAgICAgICB0aGlzLl9hcHBseUZpbHRlcmluZyhjb25kaXRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHdoZW4gZm9ybSBoYXMgYmVlbiBjcmVhdGVkLlxuICAgICAqIFBvcHVsYXRlcyBzZWxlY3RlZCBmaWx0ZXJzIGFycmF5IHdpdGggdXNlci1kZWZpbmVkIGRlZmF1bHQgZmlsdGVycy5cbiAgICAgKi9cbiAgICBfb25Gb3JtQ3JlYXRlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViamVjdCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKFsuLi50aGlzLnN1YmplY3QuZ2V0RGVmYXVsdEZpZWxkcygpLCAuLi50aGlzLnNlbGVjdGVkRmlsdGVycyQoKV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ2hhbmdlZC5lbWl0KHsgZmlsdGVyQnk6IGNvbmRpdGlvbnMsIHNlYXJjaDogdGhpcy5zZWFyY2gsIHN1YmplY3Q6IHRoaXMuc3ViamVjdCB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWx0ZXJpbmcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHkubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIFNtYXJ0IEZpbHRlciBCYXIgZmlsdGVycyBzZWN0aW9uLlxuICAgICAqL1xuICAgIHRvZ2dsZUZpbHRlckJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyQmFyJC51cGRhdGUoKHNob3cpID0+ICFzaG93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHJhdyBmaWx0ZXJzIG9iamVjdCBpbnRvIGFycmF5IG9mIGdyb3VwZWQgZmlsdGVycy5cbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBncm91cGVkIGZpbHRlcnMuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpOiBQcm9taXNlPENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdPiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGF3YWl0IHRoaXMuX2ZnU2VydmljZS5nZXRGb3JtVmFsdWUodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3Vwcyhmb3JtVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVDb2xsZWN0aW9uRmlsdGVyR3JvdXBzKHZhbHVlOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW107XG4gICAgfSk6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbkZpbHRlckdyb3VwczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKChbLCBmaWVsZENvbmRpdGlvbnNdKSA9PiAhIWZpZWxkQ29uZGl0aW9ucylcbiAgICAgICAgICAgIC5mb3JFYWNoKChbZmllbGROYW1lLCBmaWVsZENvbmRpdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSkgYXMgU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb247XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyR3JvdXA6IENvbGxlY3Rpb25GaWx0ZXJHcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW10sXG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiBjb2x1bW4uY29uZGl0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4ua2V5XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmaWVsZENvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckdyb3VwLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogY29uZGl0aW9uLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29uZGl0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUyOiBjb25kaXRpb24udmFsdWUyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sdW1uLmRhdGFUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbkZpbHRlckdyb3Vwcy5wdXNoKGZpbHRlckdyb3VwKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlbW92ZSBlbXB0eSBmaWx0ZXIgb2JqZWN0cy5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25GaWx0ZXJHcm91cHMuZmlsdGVyKChmaWx0ZXJHcm91cCkgPT4gZmlsdGVyR3JvdXAuZmlsdGVycz8ubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdWJqZWN0KHN1YmplY3Q6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXN1YmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9TdWJqZWN0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZUZyb21TdWJqZWN0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3N1YmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdWJqZWN0U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9TdWJqZWN0Q29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3ViamVjdFN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3N1YmplY3QuZmllbGRzU3RyZWFtLnN1YnNjcmliZShhc3luYyAoY29sdW1uczogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dlbmVyYXRlRm9ybShjb2x1bW5zLmZpbHRlcigoYykgPT4gYy5maWx0ZXJhYmxlKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZXMgZm9ybSBpdGVtcyB0byBiZSBjb25zdW1lZCBieSBmb3JtIGdlbmVyYXRvciBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGNvbHVtbnMgY29sdW1ucyBkZWZpbml0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2VuZXJhdGVGb3JtKGNvbHVtbnM6IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXRlbXM6IER5bmFtaWNGb3JtRmllbGRJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgY29sdW1uc051bWJlciA9IGdldENvbHVtbnNOdW1iZXIodGhpcy5maWx0ZXJzQ29sdW1uTGF5b3V0ID8/ICcnKTtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2x1bW4gPSAxO1xuXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGxldCBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtID0gdGhpcy5fZ2VuZXJhdGVCYXNlRmllbGRJdGVtKGNvbHVtbik7XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4ucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyQudXBkYXRlKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlNJTkdMRTpcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ0FURUdPUlk6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLk1VTFRJOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdtdWx0aS1pbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZS5DVVNUT006XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLl9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShjb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuSU5QVVQ6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2dlbmVyYXRlSW5wdXRGaWVsZEl0ZW0oY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5jb2x1bW4gPSBjdXJyZW50Q29sdW1uO1xuICAgICAgICAgICAgY3VycmVudENvbHVtbiArPSAxO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiA+IGNvbHVtbnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1zLnNldChpdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShcbiAgICAgICAgY29sdW1uOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbixcbiAgICAgICAgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICk6IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0ge1xuICAgICAgICBpZiAoIWNvbHVtbi5jdXN0b21GaWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9IGNvbHVtbi5jdXN0b21GaWx0ZXJUeXBlO1xuICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICAgICAgdGhpcy5fc21hcnRGaWx0ZXJCYXJTZXJ2aWNlLmdldEN1c3RvbUZpbHRlckNvbmZpZ3VyYXRpb24oY29sdW1uLmN1c3RvbUZpbHRlclR5cGUpXG4gICAgICAgICk7XG5cbiAgICAgICAgaXRlbS50eXBlID0gaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnJlbmRlcmVyQ29tcG9uZW50XG4gICAgICAgICAgICA/IGAke2l0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlfS1yZW5kZXJlcmBcbiAgICAgICAgICAgIDogaXRlbS50eXBlO1xuICAgICAgICBpdGVtLnRyYW5zZm9ybWVyID0gaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlcyBmb3JtIGl0ZW0gYmFzZWQgb24gZGF0YSB0eXBlLlxuICAgICAqIEBwYXJhbSBjb2x1bW5cbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVJbnB1dEZpZWxkSXRlbShcbiAgICAgICAgY29sdW1uOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbixcbiAgICAgICAgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICk6IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0ge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuREFURTpcbiAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdkYXRlcGlja2VyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEuY29udHJvbFR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICBjYXNlIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZS5TVFJJTkc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS5jb250cm9sVHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZXMgYmFzZSBmb3JtIGl0ZW0gb2JqZWN0IHRvIGJlIGNvbnN1bWVkIGJ5IGZvcm0gZ2VuZXJhdG9yIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gY29sdW1uIGNvbHVtbiBkZWZpbml0aW9uXG4gICAgICogQHJldHVybnMgYmFzZSBmb3JtIGl0ZW0gb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQmFzZUZpZWxkSXRlbShjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNvbHVtbi5sYWJlbCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG4gICAgICAgICAgICB0eXBlOiBTTUFSVF9GSUxURVJfQkFSX1JFTkRFUkVSX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnICcsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBjb2x1bW4ucmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXSxcbiAgICAgICAgICAgIGNob2ljZXM6IGNvbHVtbi5oYXNPcHRpb25zID8gdGhpcy5fZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uLmtleSwgY29sdW1uLmZpbHRlclR5cGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHJhbnNmb3JtZXI6IChpdGVtVmFsdWUpID0+IGdldFNlbGVjdEl0ZW1WYWx1ZShpdGVtVmFsdWUpLFxuICAgICAgICAgICAgZ3VpT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBjb2x1bW4uZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGU6IGNvbHVtbi5maWx0ZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sVHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VzOiBjb2x1bW4uaGFzT3B0aW9ucyA/IHRoaXMuX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uLmtleSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2hlbjogKCkgPT4gdGhpcy5zZWxlY3RlZEZpbHRlcnMkKCkuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG4gICAgICAgIH0gYXMgU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0cmlldmVzIGF2YWlsYWJsZSBvcHRpb25zIGZvciBwYXJ0aWN1bGFyIGNvbHVtbiBieSB1c2luZyBkYXRhIHNvdXJjZSBtZXRob2QuXG4gICAgICogQHBhcmFtIGNvbHVtbiBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+fSBPYnNlcnZhYmxlIHdpdGggdGhlIGFycmF5IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uOiBzdHJpbmcpOiAoKSA9PiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4gdGhpcy5fZ2V0RmllbGRWYXJpYW50cyhjb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uOiBzdHJpbmcsIGZpbHRlclR5cGU6IEZpbHRlclR5cGUpOiAoKSA9PiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2dldEZpZWxkVmFyaWFudHMoY29sdW1uKS5waXBlKHRha2UoMSkpKTtcblxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM6IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW10gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb246IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogJ2VxdWFsVG8nXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5kaXNwbGF5VmFsdWUgPSBhd2FpdCB0aGlzLmdldERpc3BsYXlWYWx1ZShjb25kaXRpb24sIGZpbHRlclR5cGUpO1xuXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gZGF0YS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkgPT09IGluZGV4KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFN1YmplY3REZWZpbml0aW9ucygpOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdD8uZ2V0U3ViamVjdEZpZWxkcygpIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZXRzIHByb3ZpZGVkIGZpbHRlcnMgZGlyZWN0bHkgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIGFycmF5IG9mIGZpbHRlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXBwbHlGaWx0ZXJpbmcoZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10pOiB2b2lkIHtcbiAgICAgICAgLy8gQXBwbHkgb3V0c2lkZSBmaWx0ZXJpbmcgYW5kIGZvcmNlIHN1YmplY3QgdG8gZmV0Y2ggbmV3IGRhdGEuXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc3ViamVjdC5nZXREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkgPSBmaWx0ZXJzO1xuICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2gpO1xuICAgICAgICB0aGlzLnN1YmplY3QuZ2V0U3ViamVjdCgpLmZldGNoKCk7XG4gICAgICAgIGNvbnN0IGVtaXR0ZWRWYWx1ZTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0ID0geyBzZWFyY2g6IHRoaXMuc2VhcmNoLCBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSB9O1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyc0FwcGxpZWQuZW1pdCh7IC4uLmVtaXR0ZWRWYWx1ZSwgc3ViamVjdDogdGhpcy5fc3ViamVjdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVByZXNldENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRDaGFuZ2VkLmVtaXQoZW1pdHRlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRGaWx0ZXJzKGZpbHRlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzJC5zZXQoZmlsdGVycy5maWx0ZXIoKGY6IHN0cmluZywgaTogbnVtYmVyKSA9PiBmaWx0ZXJzLmluZGV4T2YoZikgPT09IGkpKTtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5yZWZyZXNoU3RlcHNWaXNpYmlsaXR5KCk7XG4gICAgfVxufVxuIiwiQGlmICghaGlkZVRvb2xiYXIpIHtcbiAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICBAaWYgKF90b29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgIEBmb3IgKHRlbXBsYXRlIG9mIF90b29sYmFySXRlbXM7IHRyYWNrIHRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhci1zZXBhcmF0b3I+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIm9uU2VhcmNoSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICAgICAgICAoY2FuY2VsU2VhcmNoKT1cImNhbmNlbFNlYXJjaCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5zZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgIDxmZC10b29sYmFyLXNwYWNlcj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICBAaWYgKCFsaXZlVXBkYXRlKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5zdWJtaXRCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZ2x5cGg9XCJzeW5jaHJvbml6ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLnJlZnJlc2hCdXR0b25BcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dGaWx0ZXJpbmdTZXR0aW5ncygpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1TbWFydEZpbHRlckJhci5maWx0ZXJzQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGU6IHsgZmlsdGVyc0NvdW50OiBzZWxlY3RlZEZpbHRlcnNDb3VudCQoKSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRmlsdGVyQmFyKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgIChzaG93RmlsdGVyQmFyJCgpXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuaGlkZUZpbHRlcnNCdXR0b25MYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1TbWFydEZpbHRlckJhci5zaG93RmlsdGVyc0J1dHRvbkxhYmVsJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9mZC10b29sYmFyPlxufVxuQGlmIChfZm9ybUl0ZW1zKCk7IGFzIGZvcm1JdGVtcykge1xuICAgIDxkaXYgY2xhc3M9XCJmZHAtc21hcnQtZmlsdGVyLWJhcl9fZmlsdGVyc1wiIFtoaWRkZW5dPVwiIXNob3dGaWx0ZXJCYXIkKClcIj5cbiAgICAgICAgPGZkcC1mb3JtLWdlbmVyYXRvclxuICAgICAgICAgICAgKGZvcm1DcmVhdGVkKT1cIl9vbkZvcm1DcmVhdGVkKClcIlxuICAgICAgICAgICAgKGZvcm1TdWJtaXR0ZWQpPVwiX29uRm9ybVN1Ym1pdHRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtub0FkZGl0aW9uYWxDb250ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgW2Zvcm1JdGVtc109XCJmb3JtSXRlbXNcIlxuICAgICAgICAgICAgW2NvbHVtbkxheW91dF09XCJmaWx0ZXJzQ29sdW1uTGF5b3V0XCJcbiAgICAgICAgPjwvZmRwLWZvcm0tZ2VuZXJhdG9yPlxuICAgIDwvZGl2PlxufVxuIl19
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NtYXJ0LWZpbHRlci1iYXIvc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NtYXJ0LWZpbHRlci1iYXIvc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUdILHNCQUFzQixFQUN0QixvQkFBb0IsRUFFdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQXlCLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxN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LGVBQWU7OzJGQUdWLHVCQUF1QjtrQkFoQ25DLFNBQVM7K0JBQ0ksc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcseUJBQXlCO3lCQUN2QztxQkFDSixRQUNLO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7d0JBQzdCLDJDQUEyQyxFQUFFLGFBQWE7cUJBQzdELGNBQ1csSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNsQjtxS0FPa0MsY0FBYztzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBTTdCLE9BQU87c0JBRFYsS0FBSztnQkFZTixXQUFXO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3RDLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3RDLFdBQVc7c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPdEMsbUJBQW1CO3NCQURsQixNQUFNO2dCQU9QLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFPUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBSVUsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIER5bmFtaWNGb3JtRmllbGRJdGVtLFxuICAgIER5bmFtaWNGb3JtSXRlbSxcbiAgICBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LFxuICAgIEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCwgU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IENvbGxlY3Rpb25GaWx0ZXJHcm91cCwgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLCBGaWx0ZXJUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgVG9vbGJhclNlcGFyYXRvckNvbXBvbmVudCxcbiAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2V0dGluZ3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJTdWJqZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NtYXJ0LWZpbHRlci1iYXItc3ViamVjdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zbWFydC1maWx0ZXItYmFyLXRvb2xiYXItaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0SXRlbVZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCwgU21hcnRGaWx0ZXJDaGFuZ2VPYmplY3QgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJDb25kaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24nO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1maWVsZC1kZWZpbml0aW9uJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2ctY29uZmlnJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWR5bmFtaWMtZm9ybS1pdGVtJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyIH0gZnJvbSAnLi9zbWFydC1maWx0ZXItYmFyLmNsYXNzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2VydmljZSB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWJhci5zZXJ2aWNlJztcblxuY29uc3QgZGVmYXVsdENvbHVtbnNMYXlvdXQgPSAnWEw0LUwzLU0yLVMxJztcblxuZnVuY3Rpb24gZ2V0Q29sdW1uc051bWJlcihsYXlvdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICAuLi5sYXlvdXQuc3BsaXQoJy0nKS5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoQXJyYXkgPSBwYXJ0Lm1hdGNoKC9cXGQrLyk7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaEFycmF5ID8gcGFyc2VJbnQobWF0Y2hBcnJheVswXSwgMTApIDogMTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZGlhbG9nIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xuICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlLFxuICAgIHZlcnRpY2FsUGFkZGluZzogdHJ1ZSxcbiAgICBtaW5XaWR0aDogJzMwcmVtJyxcbiAgICAvKiogODhweCBpdCdzIHRoZSBoZWFkZXIgKyBmb290ZXIgaGVpZ2h0ICovXG4gICAgYm9keU1pbkhlaWdodDogJ2NhbGMoNTB2aCAtIDUuNXJlbSknXG59O1xuXG5jb25zdCBzbWFydEZpbHRlckJhclByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBTbWFydEZpbHRlckJhcixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydEZpbHRlckJhckNvbXBvbmVudClcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNtYXJ0LWZpbHRlci1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgc21hcnRGaWx0ZXJCYXJQcm92aWRlcixcbiAgICAgICAgU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLFxuICAgICAgICBGb3JtR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBTbWFydEZpbHRlckJhckNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLXNtYXJ0LWZpbHRlci1iYXInLFxuICAgICAgICAnW2NsYXNzLmZkcC1zbWFydC1maWx0ZXItYmFyLS10cmFuc3BhcmVudF0nOiAndHJhbnNwYXJlbnQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVG9vbGJhclNlcGFyYXRvckNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIEZvcm1HZW5lcmF0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU21hcnRGaWx0ZXJCYXJDb21wb25lbnQgZXh0ZW5kcyBTbWFydEZpbHRlckJhciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZvcm0gZ2VuZXJhdG9yIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKEZvcm1HZW5lcmF0b3JDb21wb25lbnQpIF9mb3JtR2VuZXJhdG9yITogRm9ybUdlbmVyYXRvckNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFN1YmplY3Qgd2hpY2ggd2lsbCBwcm92aWRlIGNvbmZpZ3VyYXRpb24gZGF0YTogZGF0YSBzb3VyY2UsIGNvbHVtbnMgZGVmaW5pdGlvbnMsIGV0Yy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdWJqZWN0KHZhbHVlOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUpIHtcbiAgICAgICAgdGhpcy5fc2V0U3ViamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHN1YmplY3QoKTogU21hcnRGaWx0ZXJCYXJTdWJqZWN0RGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3Q7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc21hcnQgZmlsdGVyIGJhciBiYWNrZ3JvdW5kIHNob3VsZCBiZSB0cmFuc3BhcmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB0cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29sdW1ucyBsYXlvdXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJzQ29sdW1uTGF5b3V0OiBOdWxsYWJsZTxzdHJpbmc+ID0gZGVmYXVsdENvbHVtbnNMYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWx0ZXJzIHdoZW4gdGhleSBhcmUgc2VsZWN0ZWQuIE90aGVyd2lzZSwgZmlsdGVycyB3aWxsIGJlIGFwcGxpZWQgb25seSBieSBwcmVzc2luZyBcIkdvXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGxpdmVVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gaGlkZSBUb29sYmFyLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGhpZGVUb29sYmFyID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGZpbHRlcnMgaGF2ZSBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc21hcnRGaWx0ZXJzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNtYXJ0RmlsdGVyQ2hhbmdlT2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gc2VsZWN0ZWQgZmlsdGVycyBoYXMgYmVlbiBhcHBsaWVkIChVc2VyIGNsaWNrZWQgb24gR28gYnV0dG9uKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzbWFydEZpbHRlcnNBcHBsaWVkOiBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWFyY2ggaW5wdXQgZmllbGQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWFyY2hJbnB1dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTZWFyY2hJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihTbWFydEZpbHRlckJhclRvb2xiYXJJdGVtRGlyZWN0aXZlKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rvb2xiYXJJdGVtUmVmczogUXVlcnlMaXN0PFNtYXJ0RmlsdGVyQmFyVG9vbGJhckl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlZCBhcnJheSBvZiBmaWx0ZXJzIHRvIGFwcGx5IGZvciB0aGUgc3ViamVjdCdzIGRhdGEgc291cmNlLlxuICAgICAqL1xuICAgIGZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGZpbHRlcnMgc2VjdGlvbiBzaG91bGQgYmUgc2hvd24uICovXG4gICAgc2hvd0ZpbHRlckJhciQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggZmllbGQgdmFsdWUgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgc2VhcmNoOiBTZWFyY2hJbnB1dCB8IHVuZGVmaW5lZDtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF90b29sYmFySXRlbXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Zvcm1JdGVtcyA9IHNpZ25hbDxEeW5hbWljRm9ybUl0ZW1bXSB8IG51bGw+KG51bGwpO1xuICAgIC8qKiBTZWxlY3RlZCBmaWx0ZXJzLiAqL1xuICAgIHNlbGVjdGVkRmlsdGVycyQgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcblxuICAgIC8qKiBTZWxlY3RlZCBmaWx0ZXJzIGNvdW50LiAqL1xuICAgIHNlbGVjdGVkRmlsdGVyc0NvdW50JCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzJCgpLmxlbmd0aCk7XG5cbiAgICAvKiogTG9hZGluZyBzdGF0ZS4gKi9cbiAgICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3Q/LmdldERhdGFTb3VyY2UoKSA/IHRoaXMuX3N1YmplY3QuZ2V0RGF0YVNvdXJjZSgpLmlzRGF0YUxvYWRpbmcgOiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3ViamVjdFN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1HZW5lcmF0b3JSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3ViamVjdCE6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNtYXJ0IGZpbHRlciBiYXIgc2VydmljZSBtYXkgYmUgcHJvdmlkZWQgYnkgcGFyZW50IGNvbXBvbmVudCB0aGF0IGFkZHMgY3VzdG9tIGNvbmZpZ3VyYXRpb24sIHNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQncyBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zbWFydEZpbHRlckJhclNlcnZpY2UgPVxuICAgICAgICBpbmplY3QoU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KSA/P1xuICAgICAgICBpbmplY3QoU21hcnRGaWx0ZXJCYXJTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9mZ1NlcnZpY2U6IEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLmFkZENvbXBvbmVudChTbWFydEZpbHRlckJhckNvbmRpdGlvbkZpZWxkQ29tcG9uZW50LCBbU01BUlRfRklMVEVSX0JBUl9SRU5ERVJFUl9DT01QT05FTlRdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl90b29sYmFySXRlbVJlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b29sYmFySXRlbXMgPSB0aGlzLl90b29sYmFySXRlbVJlZnMudG9BcnJheSgpLm1hcCgocmVmKSA9PiByZWYudGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgY29uZGl0aW9uIHZhbHVlIGludG8gaHVtYW4tcmVhZGFibGUgdGV4dC5cbiAgICAgKiBAcGFyYW0gY29uZGl0aW9uIFNtYXJ0IGZpbHRlciBiYXIgY29uZGl0aW9uLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIENvbmRpdGlvbiBmaWx0ZXIgdHlwZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbiwgZmlsdGVyVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS5nZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uLCBmaWx0ZXJUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbiBGaWx0ZXJpbmcgU2V0dGluZ3MgRGlhbG9nICovXG4gICAgc2hvd0ZpbHRlcmluZ1NldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IGNvbHVtbnMsXG4gICAgICAgICAgICBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSxcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyczogdGhpcy5zZWxlY3RlZEZpbHRlcnMkKClcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICBTbWFydEZpbHRlckJhclNldHRpbmdzRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmRpYWxvZ0NvbmZpZyxcbiAgICAgICAgICAgICAgICBkaXNhYmxlUGFkZGluZ3M6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc1MHJlbScsXG4gICAgICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChzZWxlY3RlZEZpbHRlcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKHNlbGVjdGVkRmlsdGVycyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB3aGVuIHNlYXJjaCBxdWVyeSBjaGFuZ2VkLiAqL1xuICAgIG9uU2VhcmNoSW5wdXRDaGFuZ2UoZXZlbnQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBDbGVhciBzZWFyY2ggcXVlcnkuICovXG4gICAgY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1Ym1pdHMgZmlsdGVycyBhbmQgc2VhcmNoIGZvcm0uXG4gICAgICovXG4gICAgc3VibWl0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5zdWJtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGZvciBzZXR0aW5nIHByZWRlZmluZWQgY29uZmlndXJhdGlvbi4gKi9cbiAgICBhc3luYyBzZXRQcmVzZXQoZGF0YTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2lnbm9yZVByZXNldENoYW5nZSA9IHRydWU7XG4gICAgICAgIGRhdGEuZmlsdGVyQnkgPSBkYXRhLmZpbHRlckJ5IHx8IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5ID0gZGF0YS5maWx0ZXJCeTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBkYXRhLnNlYXJjaDtcblxuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHZhbHVlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fcmVmcmVzaCQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBSZXNldCBmb3JtXG4gICAgICAgICAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLnJlc2V0Rm9ybSh0aGlzLl9mb3JtR2VuZXJhdG9yLmZvcm0pO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IG5ldyBkYXRhXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJCeSBvZiB0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybUNvbnRyb2wodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLCBmaWx0ZXJCeS5maWVsZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1JdGVtID0gY29udHJvbC5mb3JtSXRlbSBhcyBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS50cmFuc2Zvcm1Db2xsZWN0aW9uRmlsdGVyKGZpbHRlckJ5KTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbmRpdGlvbnMgPSBhd2FpdCB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q29uZGl0aW9uRmllbGRTZWxlY3RlZFZhcmlhbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbD8uc2V0VmFsdWUoc2VsZWN0ZWRDb25kaXRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJCeS5tYXAoKGZpbHRlckJ5KSA9PiBmaWx0ZXJCeS5maWVsZCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5zdWJqZWN0LmdldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnModGhpcy5maWx0ZXJCeSwgdGhpcy5zZWFyY2gpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3ViamVjdC5nZXRTdWJqZWN0KCkuZmV0Y2goKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGN1cnJlbnQgcHJlc2V0IGNvbmZpZ3VyYXRpb24uICovXG4gICAgZ2V0Q3VycmVudFByZXNldCgpOiBTbWFydEZpbHRlckJhck1hbmFnZWRQcmVzZXQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaCxcbiAgICAgICAgICAgIGZpbHRlckJ5OiB0aGlzLmZpbHRlckJ5XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gZm9ybSBnZW5lcmF0b3IgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGFuZCBzdWJtaXR0ZWQuXG4gICAgICovXG4gICAgX29uRm9ybVN1Ym1pdHRlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB0aGlzLl9nZW5lcmF0ZUNvbGxlY3Rpb25GaWx0ZXJHcm91cHMoZXZlbnQpO1xuICAgICAgICB0aGlzLl9hcHBseUZpbHRlcmluZyhjb25kaXRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHdoZW4gZm9ybSBoYXMgYmVlbiBjcmVhdGVkLlxuICAgICAqIFBvcHVsYXRlcyBzZWxlY3RlZCBmaWx0ZXJzIGFycmF5IHdpdGggdXNlci1kZWZpbmVkIGRlZmF1bHQgZmlsdGVycy5cbiAgICAgKi9cbiAgICBfb25Gb3JtQ3JlYXRlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViamVjdCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKFsuLi50aGlzLnN1YmplY3QuZ2V0RGVmYXVsdEZpZWxkcygpLCAuLi50aGlzLnNlbGVjdGVkRmlsdGVycyQoKV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ2hhbmdlZC5lbWl0KHsgZmlsdGVyQnk6IGNvbmRpdGlvbnMsIHNlYXJjaDogdGhpcy5zZWFyY2gsIHN1YmplY3Q6IHRoaXMuc3ViamVjdCB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWx0ZXJpbmcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHkubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIFNtYXJ0IEZpbHRlciBCYXIgZmlsdGVycyBzZWN0aW9uLlxuICAgICAqL1xuICAgIHRvZ2dsZUZpbHRlckJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyQmFyJC51cGRhdGUoKHNob3cpID0+ICFzaG93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHJhdyBmaWx0ZXJzIG9iamVjdCBpbnRvIGFycmF5IG9mIGdyb3VwZWQgZmlsdGVycy5cbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBncm91cGVkIGZpbHRlcnMuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpOiBQcm9taXNlPENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdPiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGF3YWl0IHRoaXMuX2ZnU2VydmljZS5nZXRGb3JtVmFsdWUodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3Vwcyhmb3JtVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVDb2xsZWN0aW9uRmlsdGVyR3JvdXBzKHZhbHVlOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW107XG4gICAgfSk6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbkZpbHRlckdyb3VwczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpXG4gICAgICAgICAgICAuZmlsdGVyKChbLCBmaWVsZENvbmRpdGlvbnNdKSA9PiAhIWZpZWxkQ29uZGl0aW9ucylcbiAgICAgICAgICAgIC5mb3JFYWNoKChbZmllbGROYW1lLCBmaWVsZENvbmRpdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKChjKSA9PiBjLm5hbWUgPT09IGZpZWxkTmFtZSkgYXMgU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb247XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyR3JvdXA6IENvbGxlY3Rpb25GaWx0ZXJHcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW10sXG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiBjb2x1bW4uY29uZGl0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4ua2V5XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmaWVsZENvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckdyb3VwLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogY29uZGl0aW9uLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29uZGl0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUyOiBjb25kaXRpb24udmFsdWUyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sdW1uLmRhdGFUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbkZpbHRlckdyb3Vwcy5wdXNoKGZpbHRlckdyb3VwKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlbW92ZSBlbXB0eSBmaWx0ZXIgb2JqZWN0cy5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25GaWx0ZXJHcm91cHMuZmlsdGVyKChmaWx0ZXJHcm91cCkgPT4gZmlsdGVyR3JvdXAuZmlsdGVycz8ubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdWJqZWN0KHN1YmplY3Q6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXN1YmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9TdWJqZWN0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZUZyb21TdWJqZWN0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3N1YmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdWJqZWN0U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9TdWJqZWN0Q29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3ViamVjdFN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3N1YmplY3QuZmllbGRzU3RyZWFtLnN1YnNjcmliZShhc3luYyAoY29sdW1uczogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dlbmVyYXRlRm9ybShjb2x1bW5zLmZpbHRlcigoYykgPT4gYy5maWx0ZXJhYmxlKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZXMgZm9ybSBpdGVtcyB0byBiZSBjb25zdW1lZCBieSBmb3JtIGdlbmVyYXRvciBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGNvbHVtbnMgY29sdW1ucyBkZWZpbml0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2VuZXJhdGVGb3JtKGNvbHVtbnM6IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXRlbXM6IER5bmFtaWNGb3JtRmllbGRJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgY29sdW1uc051bWJlciA9IGdldENvbHVtbnNOdW1iZXIodGhpcy5maWx0ZXJzQ29sdW1uTGF5b3V0ID8/ICcnKTtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2x1bW4gPSAxO1xuXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGxldCBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtID0gdGhpcy5fZ2VuZXJhdGVCYXNlRmllbGRJdGVtKGNvbHVtbik7XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW4ucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycyQudXBkYXRlKChmaWx0ZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlNJTkdMRTpcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ0FURUdPUlk6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLk1VTFRJOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdtdWx0aS1pbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZS5DVVNUT006XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLl9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShjb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuSU5QVVQ6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2dlbmVyYXRlSW5wdXRGaWVsZEl0ZW0oY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5jb2x1bW4gPSBjdXJyZW50Q29sdW1uO1xuICAgICAgICAgICAgY3VycmVudENvbHVtbiArPSAxO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiA+IGNvbHVtbnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1zLnNldChpdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShcbiAgICAgICAgY29sdW1uOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbixcbiAgICAgICAgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICk6IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0ge1xuICAgICAgICBpZiAoIWNvbHVtbi5jdXN0b21GaWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9IGNvbHVtbi5jdXN0b21GaWx0ZXJUeXBlO1xuICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICAgICAgdGhpcy5fc21hcnRGaWx0ZXJCYXJTZXJ2aWNlLmdldEN1c3RvbUZpbHRlckNvbmZpZ3VyYXRpb24oY29sdW1uLmN1c3RvbUZpbHRlclR5cGUpXG4gICAgICAgICk7XG5cbiAgICAgICAgaXRlbS50eXBlID0gaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnJlbmRlcmVyQ29tcG9uZW50XG4gICAgICAgICAgICA/IGAke2l0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlfS1yZW5kZXJlcmBcbiAgICAgICAgICAgIDogaXRlbS50eXBlO1xuICAgICAgICBpdGVtLnRyYW5zZm9ybWVyID0gaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlcyBmb3JtIGl0ZW0gYmFzZWQgb24gZGF0YSB0eXBlLlxuICAgICAqIEBwYXJhbSBjb2x1bW5cbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVJbnB1dEZpZWxkSXRlbShcbiAgICAgICAgY29sdW1uOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbixcbiAgICAgICAgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICk6IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0ge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuREFURTpcbiAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdkYXRlcGlja2VyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEuY29udHJvbFR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICBjYXNlIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZS5TVFJJTkc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS5jb250cm9sVHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZXMgYmFzZSBmb3JtIGl0ZW0gb2JqZWN0IHRvIGJlIGNvbnN1bWVkIGJ5IGZvcm0gZ2VuZXJhdG9yIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gY29sdW1uIGNvbHVtbiBkZWZpbml0aW9uXG4gICAgICogQHJldHVybnMgYmFzZSBmb3JtIGl0ZW0gb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQmFzZUZpZWxkSXRlbShjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNvbHVtbi5sYWJlbCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG4gICAgICAgICAgICB0eXBlOiBTTUFSVF9GSUxURVJfQkFSX1JFTkRFUkVSX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnICcsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBjb2x1bW4ucmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXSxcbiAgICAgICAgICAgIGNob2ljZXM6IGNvbHVtbi5oYXNPcHRpb25zID8gdGhpcy5fZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uLmtleSwgY29sdW1uLmZpbHRlclR5cGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHJhbnNmb3JtZXI6IChpdGVtVmFsdWUpID0+IGdldFNlbGVjdEl0ZW1WYWx1ZShpdGVtVmFsdWUpLFxuICAgICAgICAgICAgZ3VpT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBjb2x1bW4uZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGU6IGNvbHVtbi5maWx0ZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sVHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VzOiBjb2x1bW4uaGFzT3B0aW9ucyA/IHRoaXMuX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uLmtleSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2hlbjogKCkgPT4gdGhpcy5zZWxlY3RlZEZpbHRlcnMkKCkuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG4gICAgICAgIH0gYXMgU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0cmlldmVzIGF2YWlsYWJsZSBvcHRpb25zIGZvciBwYXJ0aWN1bGFyIGNvbHVtbiBieSB1c2luZyBkYXRhIHNvdXJjZSBtZXRob2QuXG4gICAgICogQHBhcmFtIGNvbHVtbiBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+fSBPYnNlcnZhYmxlIHdpdGggdGhlIGFycmF5IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uOiBzdHJpbmcpOiAoKSA9PiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4gdGhpcy5fZ2V0RmllbGRWYXJpYW50cyhjb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uOiBzdHJpbmcsIGZpbHRlclR5cGU6IEZpbHRlclR5cGUpOiAoKSA9PiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2dldEZpZWxkVmFyaWFudHMoY29sdW1uKS5waXBlKHRha2UoMSkpKTtcblxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM6IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW10gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb246IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogJ2VxdWFsVG8nXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5kaXNwbGF5VmFsdWUgPSBhd2FpdCB0aGlzLmdldERpc3BsYXlWYWx1ZShjb25kaXRpb24sIGZpbHRlclR5cGUpO1xuXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gZGF0YS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkgPT09IGluZGV4KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFN1YmplY3REZWZpbml0aW9ucygpOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdD8uZ2V0U3ViamVjdEZpZWxkcygpIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZXRzIHByb3ZpZGVkIGZpbHRlcnMgZGlyZWN0bHkgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIGFycmF5IG9mIGZpbHRlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXBwbHlGaWx0ZXJpbmcoZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10pOiB2b2lkIHtcbiAgICAgICAgLy8gQXBwbHkgb3V0c2lkZSBmaWx0ZXJpbmcgYW5kIGZvcmNlIHN1YmplY3QgdG8gZmV0Y2ggbmV3IGRhdGEuXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc3ViamVjdC5nZXREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkgPSBmaWx0ZXJzO1xuICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2gpO1xuICAgICAgICB0aGlzLnN1YmplY3QuZ2V0U3ViamVjdCgpLmZldGNoKCk7XG4gICAgICAgIGNvbnN0IGVtaXR0ZWRWYWx1ZTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0ID0geyBzZWFyY2g6IHRoaXMuc2VhcmNoLCBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSB9O1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyc0FwcGxpZWQuZW1pdCh7IC4uLmVtaXR0ZWRWYWx1ZSwgc3ViamVjdDogdGhpcy5fc3ViamVjdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVByZXNldENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRDaGFuZ2VkLmVtaXQoZW1pdHRlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRGaWx0ZXJzKGZpbHRlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzJC5zZXQoZmlsdGVycy5maWx0ZXIoKGY6IHN0cmluZywgaTogbnVtYmVyKSA9PiBmaWx0ZXJzLmluZGV4T2YoZikgPT09IGkpKTtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5yZWZyZXNoU3RlcHNWaXNpYmlsaXR5KCk7XG4gICAgfVxufVxuIiwiQGlmICghaGlkZVRvb2xiYXIpIHtcbiAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgIEBpZiAoX3Rvb2xiYXJJdGVtcykge1xuICAgICAgICAgICAgQGZvciAodGVtcGxhdGUgb2YgX3Rvb2xiYXJJdGVtczsgdHJhY2sgdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxmZC10b29sYmFyLXNlcGFyYXRvcj48L2ZkLXRvb2xiYXItc2VwYXJhdG9yPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJvblNlYXJjaElucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHNlYXJjaFN1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgICAgICAgKGNhbmNlbFNlYXJjaCk9XCJjYW5jZWxTZWFyY2goKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBbZGlzYWJsZVJlZnJlc2hdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuc2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgQGlmICghbGl2ZVVwZGF0ZSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuc3VibWl0QnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIGdseXBoPVwic3luY2hyb25pemVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5yZWZyZXNoQnV0dG9uQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzaG93RmlsdGVyaW5nU2V0dGluZ3MoKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuZmlsdGVyc0J1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGZpbHRlcnNDb3VudDogc2VsZWN0ZWRGaWx0ZXJzQ291bnQkKCkgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpbHRlckJhcigpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAoc2hvd0ZpbHRlckJhciQoKVxuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLmhpZGVGaWx0ZXJzQnV0dG9uTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuc2hvd0ZpbHRlcnNCdXR0b25MYWJlbCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZmQtdG9vbGJhcj5cbn1cbkBpZiAoX2Zvcm1JdGVtcygpOyBhcyBmb3JtSXRlbXMpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmRwLXNtYXJ0LWZpbHRlci1iYXJfX2ZpbHRlcnNcIiBmZC10b29sYmFyLWl0ZW0gW2hpZGRlbl09XCIhc2hvd0ZpbHRlckJhciQoKVwiPlxuICAgICAgICA8ZmRwLWZvcm0tZ2VuZXJhdG9yXG4gICAgICAgICAgICAoZm9ybUNyZWF0ZWQpPVwiX29uRm9ybUNyZWF0ZWQoKVwiXG4gICAgICAgICAgICAoZm9ybVN1Ym1pdHRlZCk9XCJfb25Gb3JtU3VibWl0dGVkKCRldmVudClcIlxuICAgICAgICAgICAgW25vQWRkaXRpb25hbENvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZm9ybUl0ZW1zXT1cImZvcm1JdGVtc1wiXG4gICAgICAgICAgICBbY29sdW1uTGF5b3V0XT1cImZpbHRlcnNDb2x1bW5MYXlvdXRcIlxuICAgICAgICA+PC9mZHAtZm9ybS1nZW5lcmF0b3I+XG4gICAgPC9kaXY+XG59XG4iXX0=
|