@nova-design-system/nova-angular 3.32.0 → 3.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.txt +116680 -0
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render/flex-render-component-ref.mjs +4 -4
- package/dist/nova-components/esm2022/lib/components/datatable.utils/flex-render.mjs +4 -4
- package/dist/nova-components/esm2022/lib/components/nv-datatable-cell.directive.mjs +4 -4
- package/dist/nova-components/esm2022/lib/components/nv-datatable.component.mjs +4 -4
- package/dist/nova-components/esm2022/lib/nova-components.module.mjs +13 -13
- package/dist/nova-components/esm2022/lib/providers/notification-service.component.mjs +4 -4
- package/dist/nova-components/esm2022/lib/providers/notification.service.mjs +4 -4
- package/dist/nova-components/esm2022/lib/stencil-generated/component-value-accessors.mjs +91 -91
- package/dist/nova-components/esm2022/lib/stencil-generated/components.mjs +208 -208
- package/dist/nova-components/esm2022/lib/value-accessor.mjs +4 -4
- package/dist/nova-components/fesm2022/nova-components.mjs +330 -330
- package/dist/nova-components/fesm2022/nova-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -14,10 +14,10 @@ export class FlexRenderComponentFactory {
|
|
|
14
14
|
view.setOutputs(outputs);
|
|
15
15
|
return view;
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
18
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlexRenderComponentFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlexRenderComponentFactory }); }
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlexRenderComponentFactory, decorators: [{
|
|
21
21
|
type: Injectable
|
|
22
22
|
}] });
|
|
23
23
|
export class FlexRenderComponentRef {
|
|
@@ -168,4 +168,4 @@ class FlexRenderComponentOutputManager {
|
|
|
168
168
|
return this.#valueDiffer.diff(outputs ?? {});
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXItY29tcG9uZW50LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlLnV0aWxzL2ZsZXgtcmVuZGVyL2ZsZXgtcmVuZGVyLWNvbXBvbmVudC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixNQUFNLEVBQ04sVUFBVSxFQUdWLGVBQWUsRUFDZixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBOztBQUl0QixNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTVDLGVBQWUsQ0FDYixtQkFBMkMsRUFDM0MsaUJBQTJCO1FBRTNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3pELG1CQUFtQixDQUFDLFNBQVMsRUFDN0I7WUFDRSxRQUFRLEVBQUUsaUJBQWlCO1NBQzVCLENBQ0YsQ0FBQTtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQXNCLENBQ3JDLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsaUJBQWlCLENBQ2xCLENBQUE7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixDQUFBO1FBRS9DLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEMsSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7OEdBekJVLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOztBQTZCWCxNQUFNLE9BQU8sc0JBQXNCO0lB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LENBQUE7WUFDMUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBc0U7UUFDekUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgT3V0cHV0UmVmU3Vic2NyaXB0aW9uLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmxleFJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vZmxleC1yZW5kZXItY29tcG9uZW50J1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudEZhY3Rvcnkge1xuICAjdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuXG4gIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+LFxuICAgIGNvbXBvbmVudEluamVjdG9yOiBJbmplY3RvclxuICApOiBGbGV4UmVuZGVyQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLiN2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQuY29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBpbmplY3RvcjogY29tcG9uZW50SW5qZWN0b3IsXG4gICAgICB9XG4gICAgKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgRmxleFJlbmRlckNvbXBvbmVudFJlZihcbiAgICAgIGNvbXBvbmVudFJlZixcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRJbmplY3RvclxuICAgIClcblxuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzIH0gPSBmbGV4UmVuZGVyQ29tcG9uZW50XG5cbiAgICBpZiAoaW5wdXRzKSB2aWV3LnNldElucHV0cyhpbnB1dHMpXG4gICAgaWYgKG91dHB1dHMpIHZpZXcuc2V0T3V0cHV0cyhvdXRwdXRzKVxuXG4gICAgcmV0dXJuIHZpZXdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudFJlZjxUPiB7XG4gIHJlYWRvbmx5ICNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5OiBLZXlWYWx1ZURpZmZlcnNcbiAgI2NvbXBvbmVudERhdGE6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD5cbiAgI2lucHV0VmFsdWVEaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgdW5rbm93bj5cblxuICByZWFkb25seSAjb3V0cHV0UmVnaXN0cnk6IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gICAgY29tcG9uZW50RGF0YTogRmxleFJlbmRlckNvbXBvbmVudDxUPixcbiAgICByZWFkb25seSBjb21wb25lbnRJbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy4jY29tcG9uZW50RGF0YSA9IGNvbXBvbmVudERhdGFcbiAgICB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5ID0gY29tcG9uZW50SW5qZWN0b3IuZ2V0KEtleVZhbHVlRGlmZmVycylcblxuICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5ID0gbmV3IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyKFxuICAgICAgdGhpcy4ja2V5VmFsdWVEaWZmZXJzRmFjdG9yeSxcbiAgICAgIHRoaXMub3V0cHV0c1xuICAgIClcblxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIgPSB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5XG4gICAgICAuZmluZCh0aGlzLmlucHV0cylcbiAgICAgIC5jcmVhdGUoKVxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZih0aGlzLmlucHV0cylcblxuICAgIHRoaXMuY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLiNvdXRwdXRSZWdpc3RyeS51bnN1YnNjcmliZUFsbCgpKVxuICB9XG5cbiAgZ2V0IGNvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5jb21wb25lbnRcbiAgfVxuXG4gIGdldCBpbnB1dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbXBvbmVudERhdGEuaW5wdXRzID8/IHt9XG4gIH1cblxuICBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5vdXRwdXRzID8/IHt9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbXBvbmVudCBpbnB1dCBhbmQgb3V0cHV0IGRpZmYgYnkgdGhlIGdpdmVuIGl0ZW1cbiAgICovXG4gIGRpZmYoaXRlbTogRmxleFJlbmRlckNvbXBvbmVudDxUPikge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dERpZmY6IHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZihpdGVtLmlucHV0cyA/PyB7fSksXG4gICAgICBvdXRwdXREaWZmOiB0aGlzLiNvdXRwdXRSZWdpc3RyeS5kaWZmKGl0ZW0ub3V0cHV0cyA/PyB7fSksXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29tcGFyZSBXaGV0aGVyIHRoZSBjdXJyZW50IHJlZiBjb21wb25lbnQgaW5zdGFuY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGdpdmVuIG9uZVxuICAgKi9cbiAgZXFUeXBlKGNvbXBhcmU6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29tcGFyZS5jb21wb25lbnQgPT09IHRoaXMuY29tcG9uZW50XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gdXBkYXRlIGN1cnJlbnQgY29tcG9uZW50IHJlZnMgaW5wdXQgYnkgdGhlIG5ldyBnaXZlbiBjb250ZW50IGNvbXBvbmVudC5cbiAgICovXG4gIHVwZGF0ZShjb250ZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+KSB7XG4gICAgY29uc3QgZXEgPSB0aGlzLmVxVHlwZShjb250ZW50KVxuICAgIGlmICghZXEpIHJldHVyblxuICAgIGNvbnN0IHsgaW5wdXREaWZmLCBvdXRwdXREaWZmIH0gPSB0aGlzLmRpZmYoY29udGVudClcbiAgICBpZiAoaW5wdXREaWZmKSB7XG4gICAgICBpbnB1dERpZmYuZm9yRWFjaEFkZGVkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hSZW1vdmVkSXRlbShpdGVtID0+IHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIHVuZGVmaW5lZCkpXG4gICAgfVxuICAgIGlmIChvdXRwdXREaWZmKSB7XG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hBZGRlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3V0cHV0KGl0ZW0ua2V5LCBpdGVtLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH0pXG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgb3V0cHV0RGlmZi5mb3JFYWNoUmVtb3ZlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLiNjb21wb25lbnREYXRhID0gY29udGVudFxuICB9XG5cbiAgbWFya0FzRGlydHkoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgc2V0SW5wdXRzKGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gaW5wdXRzKSB7XG4gICAgICB0aGlzLnNldElucHV0KHByb3AsIGlucHV0c1twcm9wXSlcbiAgICB9XG4gIH1cblxuICBzZXRJbnB1dChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAodGhpcy4jY29tcG9uZW50RGF0YS5hbGxvd2VkSW5wdXROYW1lcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dHMoXG4gICAgb3V0cHV0czogUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgID5cbiAgKSB7XG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkudW5zdWJzY3JpYmVBbGwoKVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvdXRwdXRzKSB7XG4gICAgICB0aGlzLnNldE91dHB1dChwcm9wLCBvdXRwdXRzW3Byb3BdKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dChcbiAgICBvdXRwdXROYW1lOiBzdHJpbmcsXG4gICAgZW1pdDogT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgdW5kZWZpbmVkIHwgbnVsbFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2NvbXBvbmVudERhdGEuYWxsb3dlZE91dHB1dE5hbWVzLmluY2x1ZGVzKG91dHB1dE5hbWUpKSByZXR1cm5cbiAgICBpZiAoIWVtaXQpIHtcbiAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKG91dHB1dE5hbWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBoYXNMaXN0ZW5lciA9IHRoaXMuI291dHB1dFJlZ2lzdHJ5Lmhhc0xpc3RlbmVyKG91dHB1dE5hbWUpXG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIob3V0cHV0TmFtZSwgZW1pdClcblxuICAgIGlmIChoYXNMaXN0ZW5lcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVxuICAgIGNvbnN0IG91dHB1dCA9IGluc3RhbmNlW291dHB1dE5hbWUgYXMga2V5b2YgdHlwZW9mIGluc3RhbmNlXVxuICAgIGlmIChvdXRwdXQgJiYgb3V0cHV0IGluc3RhbmNlb2YgT3V0cHV0RW1pdHRlclJlZikge1xuICAgICAgb3V0cHV0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LmdldExpc3RlbmVyKG91dHB1dE5hbWUpPy4odmFsdWUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50T3V0cHV0TWFuYWdlciB7XG4gIHJlYWRvbmx5ICNvdXRwdXRTdWJzY3JpYmVyczogUmVjb3JkPHN0cmluZywgT3V0cHV0UmVmU3Vic2NyaXB0aW9uPiA9IHt9XG4gIHJlYWRvbmx5ICNvdXRwdXRMaXN0ZW5lcnM6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4gPSB7fVxuXG4gIHJlYWRvbmx5ICN2YWx1ZURpZmZlcjogS2V5VmFsdWVEaWZmZXI8XG4gICAgc3RyaW5nLFxuICAgIHVuZGVmaW5lZCB8IG51bGwgfCBPdXRwdXRFbWl0dGVyUmVmPHVua25vd24+WydlbWl0J11cbiAgPlxuXG4gIGNvbnN0cnVjdG9yKGtleVZhbHVlRGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBpbml0aWFsT3V0cHV0czogYW55KSB7XG4gICAgdGhpcy4jdmFsdWVEaWZmZXIgPSBrZXlWYWx1ZURpZmZlcnMuZmluZChpbml0aWFsT3V0cHV0cykuY3JlYXRlKClcbiAgICBpZiAoaW5pdGlhbE91dHB1dHMpIHtcbiAgICAgIHRoaXMuI3ZhbHVlRGlmZmVyLmRpZmYoaW5pdGlhbE91dHB1dHMpXG4gICAgfVxuICB9XG5cbiAgaGFzTGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0TGlzdGVuZXJzXG4gIH1cblxuICBzZXRMaXN0ZW5lcihvdXRwdXROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV0gPSBjYWxsYmFja1xuICB9XG5cbiAgZ2V0TGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI291dHB1dExpc3RlbmVyc1tvdXRwdXROYW1lXVxuICB9XG5cbiAgdW5zdWJzY3JpYmVBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMuI291dHB1dFN1YnNjcmliZXJzKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHByb3ApXG4gICAgfVxuICB9XG5cbiAgdW5zdWJzY3JpYmUob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnMpIHtcbiAgICAgIHRoaXMuI291dHB1dFN1YnNjcmliZXJzW291dHB1dE5hbWVdPy51bnN1YnNjcmliZSgpXG4gICAgICBkZWxldGUgdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnNbb3V0cHV0TmFtZV1cbiAgICAgIGRlbGV0ZSB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV1cbiAgICB9XG4gIH1cblxuICBkaWZmKG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIE91dHB1dEVtaXR0ZXJSZWY8dW5rbm93bj5bJ2VtaXQnXSB8IHVuZGVmaW5lZD4pIHtcbiAgICByZXR1cm4gdGhpcy4jdmFsdWVEaWZmZXIuZGlmZihvdXRwdXRzID8/IHt9KVxuICB9XG59XG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXItY29tcG9uZW50LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXRhYmxlLnV0aWxzL2ZsZXgtcmVuZGVyL2ZsZXgtcmVuZGVyLWNvbXBvbmVudC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixNQUFNLEVBQ04sVUFBVSxFQUdWLGVBQWUsRUFDZixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBOztBQUl0QixNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTVDLGVBQWUsQ0FDYixtQkFBMkMsRUFDM0MsaUJBQTJCO1FBRTNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQ3pELG1CQUFtQixDQUFDLFNBQVMsRUFDN0I7WUFDRSxRQUFRLEVBQUUsaUJBQWlCO1NBQzVCLENBQ0YsQ0FBQTtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQXNCLENBQ3JDLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsaUJBQWlCLENBQ2xCLENBQUE7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixDQUFBO1FBRS9DLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEMsSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7K0dBekJVLDBCQUEwQjttSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOztBQTZCWCxNQUFNLE9BQU8sc0JBQXNCO0lB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LENBQUE7WUFDMUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBc0U7UUFDekUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgT3V0cHV0UmVmU3Vic2NyaXB0aW9uLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmxleFJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vZmxleC1yZW5kZXItY29tcG9uZW50J1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudEZhY3Rvcnkge1xuICAjdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuXG4gIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+LFxuICAgIGNvbXBvbmVudEluamVjdG9yOiBJbmplY3RvclxuICApOiBGbGV4UmVuZGVyQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLiN2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQuY29tcG9uZW50LFxuICAgICAge1xuICAgICAgICBpbmplY3RvcjogY29tcG9uZW50SW5qZWN0b3IsXG4gICAgICB9XG4gICAgKVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgRmxleFJlbmRlckNvbXBvbmVudFJlZihcbiAgICAgIGNvbXBvbmVudFJlZixcbiAgICAgIGZsZXhSZW5kZXJDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRJbmplY3RvclxuICAgIClcblxuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzIH0gPSBmbGV4UmVuZGVyQ29tcG9uZW50XG5cbiAgICBpZiAoaW5wdXRzKSB2aWV3LnNldElucHV0cyhpbnB1dHMpXG4gICAgaWYgKG91dHB1dHMpIHZpZXcuc2V0T3V0cHV0cyhvdXRwdXRzKVxuXG4gICAgcmV0dXJuIHZpZXdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudFJlZjxUPiB7XG4gIHJlYWRvbmx5ICNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5OiBLZXlWYWx1ZURpZmZlcnNcbiAgI2NvbXBvbmVudERhdGE6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD5cbiAgI2lucHV0VmFsdWVEaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgdW5rbm93bj5cblxuICByZWFkb25seSAjb3V0cHV0UmVnaXN0cnk6IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gICAgY29tcG9uZW50RGF0YTogRmxleFJlbmRlckNvbXBvbmVudDxUPixcbiAgICByZWFkb25seSBjb21wb25lbnRJbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy4jY29tcG9uZW50RGF0YSA9IGNvbXBvbmVudERhdGFcbiAgICB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5ID0gY29tcG9uZW50SW5qZWN0b3IuZ2V0KEtleVZhbHVlRGlmZmVycylcblxuICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5ID0gbmV3IEZsZXhSZW5kZXJDb21wb25lbnRPdXRwdXRNYW5hZ2VyKFxuICAgICAgdGhpcy4ja2V5VmFsdWVEaWZmZXJzRmFjdG9yeSxcbiAgICAgIHRoaXMub3V0cHV0c1xuICAgIClcblxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIgPSB0aGlzLiNrZXlWYWx1ZURpZmZlcnNGYWN0b3J5XG4gICAgICAuZmluZCh0aGlzLmlucHV0cylcbiAgICAgIC5jcmVhdGUoKVxuICAgIHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZih0aGlzLmlucHV0cylcblxuICAgIHRoaXMuY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLiNvdXRwdXRSZWdpc3RyeS51bnN1YnNjcmliZUFsbCgpKVxuICB9XG5cbiAgZ2V0IGNvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5jb21wb25lbnRcbiAgfVxuXG4gIGdldCBpbnB1dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbXBvbmVudERhdGEuaW5wdXRzID8/IHt9XG4gIH1cblxuICBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy4jY29tcG9uZW50RGF0YS5vdXRwdXRzID8/IHt9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbXBvbmVudCBpbnB1dCBhbmQgb3V0cHV0IGRpZmYgYnkgdGhlIGdpdmVuIGl0ZW1cbiAgICovXG4gIGRpZmYoaXRlbTogRmxleFJlbmRlckNvbXBvbmVudDxUPikge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dERpZmY6IHRoaXMuI2lucHV0VmFsdWVEaWZmZXIuZGlmZihpdGVtLmlucHV0cyA/PyB7fSksXG4gICAgICBvdXRwdXREaWZmOiB0aGlzLiNvdXRwdXRSZWdpc3RyeS5kaWZmKGl0ZW0ub3V0cHV0cyA/PyB7fSksXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29tcGFyZSBXaGV0aGVyIHRoZSBjdXJyZW50IHJlZiBjb21wb25lbnQgaW5zdGFuY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGdpdmVuIG9uZVxuICAgKi9cbiAgZXFUeXBlKGNvbXBhcmU6IEZsZXhSZW5kZXJDb21wb25lbnQ8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29tcGFyZS5jb21wb25lbnQgPT09IHRoaXMuY29tcG9uZW50XG4gIH1cblxuICAvKipcbiAgICogVHJpZXMgdG8gdXBkYXRlIGN1cnJlbnQgY29tcG9uZW50IHJlZnMgaW5wdXQgYnkgdGhlIG5ldyBnaXZlbiBjb250ZW50IGNvbXBvbmVudC5cbiAgICovXG4gIHVwZGF0ZShjb250ZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFQ+KSB7XG4gICAgY29uc3QgZXEgPSB0aGlzLmVxVHlwZShjb250ZW50KVxuICAgIGlmICghZXEpIHJldHVyblxuICAgIGNvbnN0IHsgaW5wdXREaWZmLCBvdXRwdXREaWZmIH0gPSB0aGlzLmRpZmYoY29udGVudClcbiAgICBpZiAoaW5wdXREaWZmKSB7XG4gICAgICBpbnB1dERpZmYuZm9yRWFjaEFkZGVkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+XG4gICAgICAgIHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgKVxuICAgICAgaW5wdXREaWZmLmZvckVhY2hSZW1vdmVkSXRlbShpdGVtID0+IHRoaXMuc2V0SW5wdXQoaXRlbS5rZXksIHVuZGVmaW5lZCkpXG4gICAgfVxuICAgIGlmIChvdXRwdXREaWZmKSB7XG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hBZGRlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3V0cHV0KGl0ZW0ua2V5LCBpdGVtLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH0pXG4gICAgICBvdXRwdXREaWZmLmZvckVhY2hDaGFuZ2VkSXRlbShpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIoaXRlbS5rZXksIGl0ZW0uY3VycmVudFZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgb3V0cHV0RGlmZi5mb3JFYWNoUmVtb3ZlZEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKGl0ZW0ua2V5KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLiNjb21wb25lbnREYXRhID0gY29udGVudFxuICB9XG5cbiAgbWFya0FzRGlydHkoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgc2V0SW5wdXRzKGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gaW5wdXRzKSB7XG4gICAgICB0aGlzLnNldElucHV0KHByb3AsIGlucHV0c1twcm9wXSlcbiAgICB9XG4gIH1cblxuICBzZXRJbnB1dChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAodGhpcy4jY29tcG9uZW50RGF0YS5hbGxvd2VkSW5wdXROYW1lcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dHMoXG4gICAgb3V0cHV0czogUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgID5cbiAgKSB7XG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkudW5zdWJzY3JpYmVBbGwoKVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvdXRwdXRzKSB7XG4gICAgICB0aGlzLnNldE91dHB1dChwcm9wLCBvdXRwdXRzW3Byb3BdKVxuICAgIH1cbiAgfVxuXG4gIHNldE91dHB1dChcbiAgICBvdXRwdXROYW1lOiBzdHJpbmcsXG4gICAgZW1pdDogT3V0cHV0RW1pdHRlclJlZjx1bmtub3duPlsnZW1pdCddIHwgdW5kZWZpbmVkIHwgbnVsbFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2NvbXBvbmVudERhdGEuYWxsb3dlZE91dHB1dE5hbWVzLmluY2x1ZGVzKG91dHB1dE5hbWUpKSByZXR1cm5cbiAgICBpZiAoIWVtaXQpIHtcbiAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LnVuc3Vic2NyaWJlKG91dHB1dE5hbWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBoYXNMaXN0ZW5lciA9IHRoaXMuI291dHB1dFJlZ2lzdHJ5Lmhhc0xpc3RlbmVyKG91dHB1dE5hbWUpXG4gICAgdGhpcy4jb3V0cHV0UmVnaXN0cnkuc2V0TGlzdGVuZXIob3V0cHV0TmFtZSwgZW1pdClcblxuICAgIGlmIChoYXNMaXN0ZW5lcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVxuICAgIGNvbnN0IG91dHB1dCA9IGluc3RhbmNlW291dHB1dE5hbWUgYXMga2V5b2YgdHlwZW9mIGluc3RhbmNlXVxuICAgIGlmIChvdXRwdXQgJiYgb3V0cHV0IGluc3RhbmNlb2YgT3V0cHV0RW1pdHRlclJlZikge1xuICAgICAgb3V0cHV0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuI291dHB1dFJlZ2lzdHJ5LmdldExpc3RlbmVyKG91dHB1dE5hbWUpPy4odmFsdWUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50T3V0cHV0TWFuYWdlciB7XG4gIHJlYWRvbmx5ICNvdXRwdXRTdWJzY3JpYmVyczogUmVjb3JkPHN0cmluZywgT3V0cHV0UmVmU3Vic2NyaXB0aW9uPiA9IHt9XG4gIHJlYWRvbmx5ICNvdXRwdXRMaXN0ZW5lcnM6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4gPSB7fVxuXG4gIHJlYWRvbmx5ICN2YWx1ZURpZmZlcjogS2V5VmFsdWVEaWZmZXI8XG4gICAgc3RyaW5nLFxuICAgIHVuZGVmaW5lZCB8IG51bGwgfCBPdXRwdXRFbWl0dGVyUmVmPHVua25vd24+WydlbWl0J11cbiAgPlxuXG4gIGNvbnN0cnVjdG9yKGtleVZhbHVlRGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBpbml0aWFsT3V0cHV0czogYW55KSB7XG4gICAgdGhpcy4jdmFsdWVEaWZmZXIgPSBrZXlWYWx1ZURpZmZlcnMuZmluZChpbml0aWFsT3V0cHV0cykuY3JlYXRlKClcbiAgICBpZiAoaW5pdGlhbE91dHB1dHMpIHtcbiAgICAgIHRoaXMuI3ZhbHVlRGlmZmVyLmRpZmYoaW5pdGlhbE91dHB1dHMpXG4gICAgfVxuICB9XG5cbiAgaGFzTGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0TGlzdGVuZXJzXG4gIH1cblxuICBzZXRMaXN0ZW5lcihvdXRwdXROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV0gPSBjYWxsYmFja1xuICB9XG5cbiAgZ2V0TGlzdGVuZXIob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI291dHB1dExpc3RlbmVyc1tvdXRwdXROYW1lXVxuICB9XG5cbiAgdW5zdWJzY3JpYmVBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMuI291dHB1dFN1YnNjcmliZXJzKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHByb3ApXG4gICAgfVxuICB9XG5cbiAgdW5zdWJzY3JpYmUob3V0cHV0TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKG91dHB1dE5hbWUgaW4gdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnMpIHtcbiAgICAgIHRoaXMuI291dHB1dFN1YnNjcmliZXJzW291dHB1dE5hbWVdPy51bnN1YnNjcmliZSgpXG4gICAgICBkZWxldGUgdGhpcy4jb3V0cHV0U3Vic2NyaWJlcnNbb3V0cHV0TmFtZV1cbiAgICAgIGRlbGV0ZSB0aGlzLiNvdXRwdXRMaXN0ZW5lcnNbb3V0cHV0TmFtZV1cbiAgICB9XG4gIH1cblxuICBkaWZmKG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIE91dHB1dEVtaXR0ZXJSZWY8dW5rbm93bj5bJ2VtaXQnXSB8IHVuZGVmaW5lZD4pIHtcbiAgICByZXR1cm4gdGhpcy4jdmFsdWVEaWZmZXIuZGlmZihvdXRwdXRzID8/IHt9KVxuICB9XG59XG4iXX0=
|
|
@@ -182,10 +182,10 @@ export class FlexRenderDirective {
|
|
|
182
182
|
}), this.injector);
|
|
183
183
|
return new FlexRenderComponentView(component, view);
|
|
184
184
|
}
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
186
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlexRenderDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
186
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, providers: [FlexRenderComponentFactory], usesOnChanges: true, ngImport: i0 }); }
|
|
187
187
|
}
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
189
189
|
type: Directive,
|
|
190
190
|
args: [{
|
|
191
191
|
selector: '[flexRender]',
|
|
@@ -208,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
208
208
|
type: Input,
|
|
209
209
|
args: [{ required: false, alias: 'flexRenderInjector' }]
|
|
210
210
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGF0YWJsZS51dGlscy9mbGV4LXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLHFCQUFxQixFQUVyQixXQUFXLEVBRVgsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0scUNBQXFDLENBQUE7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDcEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixzQkFBc0IsRUFHdEIsMkJBQTJCLEdBQzVCLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFBOztBQUUzQyxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sdUJBQXVCLENBQUE7QUFpQjlCLE1BQU0sT0FBTyxtQkFBbUI7SUFHckIsMkJBQTJCLENBQXFDO0lBQ2hFLGtCQUFrQixDQUE0QjtJQW1COUMsY0FBYyxDQUt0QjtJQUVELGdCQUFnQixDQU1mO0lBRUQsWUFFbUIsZ0JBQWtDLEVBRWxDLFdBQTZCO1FBRjdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFFbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBdkN2QyxnQ0FBMkIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUNo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QU8sSUFBSSx1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLFNBQWlFO1FBRWpFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQzNELG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDLEVBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFBO1FBQ0QsT0FBTyxJQUFJLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNyRCxDQUFDOzhHQXZPVSxtQkFBbUIsa0JBdUNwQixnQkFBZ0IsYUFFaEIsV0FBVztrR0F6Q1YsbUJBQW1CLDhMQUZuQixDQUFDLDBCQUEwQixDQUFDOzsyRkFFNUIsbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3hDOzswQkF3Q0ksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLFdBQVc7eUNBbENyQixPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBUzlDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUluRCxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERvQ2hlY2ssXG4gIGVmZmVjdCxcbiAgdHlwZSBFZmZlY3RSZWYsXG4gIEluamVjdCxcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcyB9IGZyb20gJy4vZmxleC1yZW5kZXIvY29udGV4dCdcbmltcG9ydCB7IEZsZXhSZW5kZXJGbGFncyB9IGZyb20gJy4vZmxleC1yZW5kZXIvZmxhZ3MnXG5pbXBvcnQge1xuICBmbGV4UmVuZGVyQ29tcG9uZW50LFxuICBGbGV4UmVuZGVyQ29tcG9uZW50LFxufSBmcm9tICcuL2ZsZXgtcmVuZGVyL2ZsZXgtcmVuZGVyLWNvbXBvbmVudCdcbmltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSAnLi9mbGV4LXJlbmRlci9mbGV4LXJlbmRlci1jb21wb25lbnQtcmVmJ1xuaW1wb3J0IHtcbiAgRmxleFJlbmRlckNvbXBvbmVudFZpZXcsXG4gIEZsZXhSZW5kZXJUZW1wbGF0ZVZpZXcsXG4gIHR5cGUgRmxleFJlbmRlclR5cGVkQ29udGVudCxcbiAgRmxleFJlbmRlclZpZXcsXG4gIG1hcFRvRmxleFJlbmRlclR5cGVkQ29udGVudCxcbn0gZnJvbSAnLi9mbGV4LXJlbmRlci92aWV3J1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJ0B0YW5zdGFjay90YWJsZS1jb3JlJ1xuXG5leHBvcnQge1xuICBpbmplY3RGbGV4UmVuZGVyQ29udGV4dCxcbiAgdHlwZSBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsXG59IGZyb20gJy4vZmxleC1yZW5kZXIvY29udGV4dCdcblxuZXhwb3J0IHR5cGUgRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+ID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBUeXBlPFRQcm9wcz5cbiAgfCBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVFByb3BzIH0+XG4gIHwgbnVsbFxuICB8IFJlY29yZDxhbnksIGFueT5cbiAgfCB1bmRlZmluZWRcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZsZXhSZW5kZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbRmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnldLFxufSlcbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyRGlyZWN0aXZlPFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRG9DaGVja1xue1xuICByZWFkb25seSAjZmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkgPSBpbmplY3QoRmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkpXG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyJyB9KVxuICBjb250ZW50OlxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8ICgocHJvcHM6IFRQcm9wcykgPT4gRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzPilcbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXJQcm9wcycgfSlcbiAgcHJvcHM6IFRQcm9wcyA9IHt9IGFzIFRQcm9wc1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmbGV4UmVuZGVySW5qZWN0b3InIH0pXG4gIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICByZW5kZXJGbGFncyA9IEZsZXhSZW5kZXJGbGFncy5WaWV3Rmlyc3RSZW5kZXJcbiAgcmVuZGVyVmlldzogRmxleFJlbmRlclZpZXc8YW55PiB8IG51bGwgPSBudWxsXG5cbiAgcmVhZG9ubHkgI2xhdGVzdENvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250ZW50LCBwcm9wcyB9ID0gdGhpc1xuICAgIHJldHVybiB0eXBlb2YgY29udGVudCAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBjb250ZW50XG4gICAgICA6IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBjb250ZW50KHByb3BzKSlcbiAgfVxuXG4gICNnZXRDb250ZW50VmFsdWUgPSBtZW1vKFxuICAgICgpID0+IFt0aGlzLiNsYXRlc3RDb250ZW50KCksIHRoaXMucHJvcHMsIHRoaXMuY29udGVudF0sXG4gICAgbGF0ZXN0Q29udGVudCA9PiB7XG4gICAgICByZXR1cm4gbWFwVG9GbGV4UmVuZGVyVHlwZWRDb250ZW50KGxhdGVzdENvbnRlbnQpXG4gICAgfSxcbiAgICB7IGtleTogJ2ZsZXhSZW5kZXJDb250ZW50VmFsdWUnLCBkZWJ1ZzogKCkgPT4gZmFsc2UgfVxuICApXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBASW5qZWN0KFRlbXBsYXRlUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT5cbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuUHJvcHNSZWZlcmVuY2VDaGFuZ2VkXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydjb250ZW50J10pIHtcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgfD1cbiAgICAgICAgRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkIHwgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgICAgdGhpcy51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW5kZXJGbGFncyAmIEZsZXhSZW5kZXJGbGFncy5WaWV3Rmlyc3RSZW5kZXIpIHtcbiAgICAgIC8vIE9uIHRoZSBpbml0aWFsIHJlbmRlciwgdGhlIHZpZXcgaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGBuZ09uQ2hhbmdlc2AgaG9vay5cbiAgICAgIC8vIFNpbmNlIGBuZ0RvQ2hlY2tgIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlcndhcmQsIHRoZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBmb3IgY2hhbmdlcyBpbiB0aGlzIHBoYXNlLlxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuRGlydHlDaGVja1xuXG4gICAgY29uc3QgbGF0ZXN0Q29udGVudCA9IHRoaXMuI2dldENvbnRlbnRWYWx1ZSgpXG4gICAgaWYgKGxhdGVzdENvbnRlbnQua2luZCA9PT0gJ251bGwnIHx8ICF0aGlzLnJlbmRlclZpZXcpIHtcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgfD0gRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyVmlldy5jb250ZW50ID0gbGF0ZXN0Q29udGVudFxuICAgICAgY29uc3QgeyBraW5kOiBwcmV2aW91c0tpbmQgfSA9IHRoaXMucmVuZGVyVmlldy5wcmV2aW91c0NvbnRlbnRcbiAgICAgIGlmIChsYXRlc3RDb250ZW50LmtpbmQgIT09IHByZXZpb3VzS2luZCkge1xuICAgICAgICB0aGlzLnJlbmRlckZsYWdzIHw9IEZsZXhSZW5kZXJGbGFncy5Db250ZW50Q2hhbmdlZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZSgpXG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmXG4gICAgICAoRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkIHwgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlcilcbiAgICApIHtcbiAgICAgIHRoaXMucmVuZGVyKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5yZW5kZXJGbGFncyAmIEZsZXhSZW5kZXJGbGFncy5Qcm9wc1JlZmVyZW5jZUNoYW5nZWQpIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlclZpZXcpIHRoaXMucmVuZGVyVmlldy51cGRhdGVQcm9wcyh0aGlzLnByb3BzKVxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlByb3BzUmVmZXJlbmNlQ2hhbmdlZFxuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnJlbmRlckZsYWdzICZcbiAgICAgIChGbGV4UmVuZGVyRmxhZ3MuRGlydHlDaGVjayB8IEZsZXhSZW5kZXJGbGFncy5EaXJ0eVNpZ25hbClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlclZpZXcpIHRoaXMucmVuZGVyVmlldy5kaXJ0eUNoZWNrKClcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgJj0gfihcbiAgICAgICAgRmxleFJlbmRlckZsYWdzLkRpcnR5Q2hlY2sgfCBGbGV4UmVuZGVyRmxhZ3MuRGlydHlTaWduYWxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAjY3VycmVudEVmZmVjdFJlZjogRWZmZWN0UmVmIHwgbnVsbCA9IG51bGxcblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuI3Nob3VsZFJlY3JlYXRlRW50aXJlVmlldygpICYmIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYuZGVzdHJveSgpXG4gICAgICB0aGlzLiNjdXJyZW50RWZmZWN0UmVmID0gbnVsbFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlJlbmRlckVmZmVjdENoZWNrZWRcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIHRoaXMucmVuZGVyRmxhZ3MgPVxuICAgICAgRmxleFJlbmRlckZsYWdzLlByaXN0aW5lIHxcbiAgICAgICh0aGlzLnJlbmRlckZsYWdzICYgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlcikgfFxuICAgICAgKHRoaXMucmVuZGVyRmxhZ3MgJiBGbGV4UmVuZGVyRmxhZ3MuUmVuZGVyRWZmZWN0Q2hlY2tlZClcblxuICAgIGNvbnN0IHJlc29sdmVkQ29udGVudCA9IHRoaXMuI2dldENvbnRlbnRWYWx1ZSgpXG4gICAgaWYgKHJlc29sdmVkQ29udGVudC5raW5kID09PSAnbnVsbCcpIHtcbiAgICAgIHRoaXMucmVuZGVyVmlldyA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJWaWV3ID0gdGhpcy4jcmVuZGVyVmlld0J5Q29udGVudChyZXNvbHZlZENvbnRlbnQpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvbnRlbnQgaXMgYSBmdW5jdGlvbiBgY29udGVudChwcm9wcylgLCB3ZSBpbml0aWFsaXplIGFuIGVmZmVjdFxuICAgIC8vIGluIG9yZGVyIHRvIHJlYWN0IHRvIGNoYW5nZXMgaWYgdGhlIGdpdmVuIGRlZmluaXRpb24gdXNlIHNpZ25hbHMuXG4gICAgaWYgKCF0aGlzLiNjdXJyZW50RWZmZWN0UmVmICYmIHR5cGVvZiB0aGlzLmNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYgPSBlZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLiNsYXRlc3RDb250ZW50KClcbiAgICAgICAgICBpZiAoISh0aGlzLnJlbmRlckZsYWdzICYgRmxleFJlbmRlckZsYWdzLlJlbmRlckVmZmVjdENoZWNrZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckZsYWdzIHw9IEZsZXhSZW5kZXJGbGFncy5SZW5kZXJFZmZlY3RDaGVja2VkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuRGlydHlTaWduYWxcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgbWFyayB0aGUgdmlldyBhcyBjaGFuZ2VkLFxuICAgICAgICAgIC8vIHNvIHdlJ2xsIHRyeSB0byBjaGVjayBmb3IgdXBkYXRlcyBpbnRvIG5nRG9DaGVja1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgIH0sXG4gICAgICAgIHsgaW5qZWN0b3I6IHRoaXMudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgI3Nob3VsZFJlY3JlYXRlRW50aXJlVmlldygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmXG4gICAgICBGbGV4UmVuZGVyRmxhZ3MuQ29udGVudENoYW5nZWQgJlxuICAgICAgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgIClcbiAgfVxuXG4gICNyZW5kZXJWaWV3QnlDb250ZW50KFxuICAgIGNvbnRlbnQ6IEZsZXhSZW5kZXJUeXBlZENvbnRlbnRcbiAgKTogRmxleFJlbmRlclZpZXc8YW55PiB8IG51bGwge1xuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdwcmltaXRpdmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy4jcmVuZGVyU3RyaW5nQ29udGVudChjb250ZW50KVxuICAgIH0gZWxzZSBpZiAoY29udGVudC5raW5kID09PSAndGVtcGxhdGVSZWYnKSB7XG4gICAgICByZXR1cm4gdGhpcy4jcmVuZGVyVGVtcGxhdGVSZWZDb250ZW50KGNvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChjb250ZW50LmtpbmQgPT09ICdmbGV4UmVuZGVyQ29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuIHRoaXMuI3JlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSBpZiAoY29udGVudC5raW5kID09PSAnY29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuIHRoaXMuI3JlbmRlckN1c3RvbUNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gICNyZW5kZXJTdHJpbmdDb250ZW50KFxuICAgIHRlbXBsYXRlOiBFeHRyYWN0PEZsZXhSZW5kZXJUeXBlZENvbnRlbnQsIHsga2luZDogJ3ByaW1pdGl2ZScgfT5cbiAgKTogRmxleFJlbmRlclRlbXBsYXRlVmlldyB7XG4gICAgY29uc3QgY29udGV4dCA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnc3RyaW5nJyB8fFxuICAgICAgICB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnbnVtYmVyJ1xuICAgICAgICA/IHRoaXMuY29udGVudFxuICAgICAgICA6IHRoaXMuY29udGVudD8uKHRoaXMucHJvcHMpXG4gICAgfVxuICAgIGNvbnN0IHJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwge1xuICAgICAgZ2V0ICRpbXBsaWNpdCgpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQoKVxuICAgICAgfSxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgRmxleFJlbmRlclRlbXBsYXRlVmlldyh0ZW1wbGF0ZSwgcmVmKVxuICB9XG5cbiAgI3JlbmRlclRlbXBsYXRlUmVmQ29udGVudChcbiAgICB0ZW1wbGF0ZTogRXh0cmFjdDxGbGV4UmVuZGVyVHlwZWRDb250ZW50LCB7IGtpbmQ6ICd0ZW1wbGF0ZVJlZicgfT5cbiAgKTogRmxleFJlbmRlclRlbXBsYXRlVmlldyB7XG4gICAgY29uc3QgbGF0ZXN0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZS5jb250ZW50LCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gbGF0ZXN0Q29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gICAgcmV0dXJuIG5ldyBGbGV4UmVuZGVyVGVtcGxhdGVWaWV3KHRlbXBsYXRlLCB2aWV3KVxuICB9XG5cbiAgI3JlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBFeHRyYWN0PFxuICAgICAgRmxleFJlbmRlclR5cGVkQ29udGVudCxcbiAgICAgIHsga2luZDogJ2ZsZXhSZW5kZXJDb21wb25lbnQnIH1cbiAgICA+XG4gICk6IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3IHtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgaW5qZWN0b3IgfSA9IGZsZXhSZW5kZXJDb21wb25lbnQuY29udGVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0aGlzLnByb3BzLCB7XG4gICAgICBnZXQ6IChfLCBrZXkpID0+IGdldENvbnRleHQoKVtrZXkgYXMga2V5b2YgdHlwZW9mIF9dLFxuICAgIH0pXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuICAgIGNvbnN0IHZpZXcgPSB0aGlzLiNmbGV4UmVuZGVyQ29tcG9uZW50RmFjdG9yeS5jcmVhdGVDb21wb25lbnQoXG4gICAgICBmbGV4UmVuZGVyQ29tcG9uZW50LmNvbnRlbnQsXG4gICAgICBjb21wb25lbnRJbmplY3RvclxuICAgIClcbiAgICByZXR1cm4gbmV3IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3KGZsZXhSZW5kZXJDb21wb25lbnQsIHZpZXcpXG4gIH1cblxuICAjcmVuZGVyQ3VzdG9tQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogRXh0cmFjdDxGbGV4UmVuZGVyVHlwZWRDb250ZW50LCB7IGtpbmQ6ICdjb21wb25lbnQnIH0+XG4gICk6IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy4jZmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgZmxleFJlbmRlckNvbXBvbmVudChjb21wb25lbnQuY29udGVudCwge1xuICAgICAgICBpbnB1dHM6IHRoaXMucHJvcHMsXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICB0aGlzLmluamVjdG9yXG4gICAgKVxuICAgIHJldHVybiBuZXcgRmxleFJlbmRlckNvbXBvbmVudFZpZXcoY29tcG9uZW50LCB2aWV3KVxuICB9XG59XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGF0YWJsZS51dGlscy9mbGV4LXJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLHFCQUFxQixFQUVyQixXQUFXLEVBRVgsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0scUNBQXFDLENBQUE7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDcEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixzQkFBc0IsRUFHdEIsMkJBQTJCLEdBQzVCLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFBOztBQUUzQyxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sdUJBQXVCLENBQUE7QUFpQjlCLE1BQU0sT0FBTyxtQkFBbUI7SUFHckIsMkJBQTJCLENBQXFDO0lBQ2hFLGtCQUFrQixDQUE0QjtJQW1COUMsY0FBYyxDQUt0QjtJQUVELGdCQUFnQixDQU1mO0lBRUQsWUFFbUIsZ0JBQWtDLEVBRWxDLFdBQTZCO1FBRjdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFFbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBdkN2QyxnQ0FBMkIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUNo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QU8sSUFBSSx1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLFNBQWlFO1FBRWpFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQzNELG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDLEVBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFBO1FBQ0QsT0FBTyxJQUFJLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNyRCxDQUFDOytHQXZPVSxtQkFBbUIsa0JBdUNwQixnQkFBZ0IsYUFFaEIsV0FBVzttR0F6Q1YsbUJBQW1CLDhMQUZuQixDQUFDLDBCQUEwQixDQUFDOzs0RkFFNUIsbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3hDOzswQkF3Q0ksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLFdBQVc7eUNBbENyQixPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBUzlDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUluRCxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERvQ2hlY2ssXG4gIGVmZmVjdCxcbiAgdHlwZSBFZmZlY3RSZWYsXG4gIEluamVjdCxcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcyB9IGZyb20gJy4vZmxleC1yZW5kZXIvY29udGV4dCdcbmltcG9ydCB7IEZsZXhSZW5kZXJGbGFncyB9IGZyb20gJy4vZmxleC1yZW5kZXIvZmxhZ3MnXG5pbXBvcnQge1xuICBmbGV4UmVuZGVyQ29tcG9uZW50LFxuICBGbGV4UmVuZGVyQ29tcG9uZW50LFxufSBmcm9tICcuL2ZsZXgtcmVuZGVyL2ZsZXgtcmVuZGVyLWNvbXBvbmVudCdcbmltcG9ydCB7IEZsZXhSZW5kZXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSAnLi9mbGV4LXJlbmRlci9mbGV4LXJlbmRlci1jb21wb25lbnQtcmVmJ1xuaW1wb3J0IHtcbiAgRmxleFJlbmRlckNvbXBvbmVudFZpZXcsXG4gIEZsZXhSZW5kZXJUZW1wbGF0ZVZpZXcsXG4gIHR5cGUgRmxleFJlbmRlclR5cGVkQ29udGVudCxcbiAgRmxleFJlbmRlclZpZXcsXG4gIG1hcFRvRmxleFJlbmRlclR5cGVkQ29udGVudCxcbn0gZnJvbSAnLi9mbGV4LXJlbmRlci92aWV3J1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJ0B0YW5zdGFjay90YWJsZS1jb3JlJ1xuXG5leHBvcnQge1xuICBpbmplY3RGbGV4UmVuZGVyQ29udGV4dCxcbiAgdHlwZSBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsXG59IGZyb20gJy4vZmxleC1yZW5kZXIvY29udGV4dCdcblxuZXhwb3J0IHR5cGUgRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+ID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBUeXBlPFRQcm9wcz5cbiAgfCBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVFByb3BzIH0+XG4gIHwgbnVsbFxuICB8IFJlY29yZDxhbnksIGFueT5cbiAgfCB1bmRlZmluZWRcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZsZXhSZW5kZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbRmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnldLFxufSlcbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyRGlyZWN0aXZlPFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRG9DaGVja1xue1xuICByZWFkb25seSAjZmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkgPSBpbmplY3QoRmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkpXG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyJyB9KVxuICBjb250ZW50OlxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8ICgocHJvcHM6IFRQcm9wcykgPT4gRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzPilcbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXJQcm9wcycgfSlcbiAgcHJvcHM6IFRQcm9wcyA9IHt9IGFzIFRQcm9wc1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmbGV4UmVuZGVySW5qZWN0b3InIH0pXG4gIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICByZW5kZXJGbGFncyA9IEZsZXhSZW5kZXJGbGFncy5WaWV3Rmlyc3RSZW5kZXJcbiAgcmVuZGVyVmlldzogRmxleFJlbmRlclZpZXc8YW55PiB8IG51bGwgPSBudWxsXG5cbiAgcmVhZG9ubHkgI2xhdGVzdENvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250ZW50LCBwcm9wcyB9ID0gdGhpc1xuICAgIHJldHVybiB0eXBlb2YgY29udGVudCAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBjb250ZW50XG4gICAgICA6IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBjb250ZW50KHByb3BzKSlcbiAgfVxuXG4gICNnZXRDb250ZW50VmFsdWUgPSBtZW1vKFxuICAgICgpID0+IFt0aGlzLiNsYXRlc3RDb250ZW50KCksIHRoaXMucHJvcHMsIHRoaXMuY29udGVudF0sXG4gICAgbGF0ZXN0Q29udGVudCA9PiB7XG4gICAgICByZXR1cm4gbWFwVG9GbGV4UmVuZGVyVHlwZWRDb250ZW50KGxhdGVzdENvbnRlbnQpXG4gICAgfSxcbiAgICB7IGtleTogJ2ZsZXhSZW5kZXJDb250ZW50VmFsdWUnLCBkZWJ1ZzogKCkgPT4gZmFsc2UgfVxuICApXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBASW5qZWN0KFRlbXBsYXRlUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT5cbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuUHJvcHNSZWZlcmVuY2VDaGFuZ2VkXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydjb250ZW50J10pIHtcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgfD1cbiAgICAgICAgRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkIHwgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgICAgdGhpcy51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW5kZXJGbGFncyAmIEZsZXhSZW5kZXJGbGFncy5WaWV3Rmlyc3RSZW5kZXIpIHtcbiAgICAgIC8vIE9uIHRoZSBpbml0aWFsIHJlbmRlciwgdGhlIHZpZXcgaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGBuZ09uQ2hhbmdlc2AgaG9vay5cbiAgICAgIC8vIFNpbmNlIGBuZ0RvQ2hlY2tgIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlcndhcmQsIHRoZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBmb3IgY2hhbmdlcyBpbiB0aGlzIHBoYXNlLlxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuRGlydHlDaGVja1xuXG4gICAgY29uc3QgbGF0ZXN0Q29udGVudCA9IHRoaXMuI2dldENvbnRlbnRWYWx1ZSgpXG4gICAgaWYgKGxhdGVzdENvbnRlbnQua2luZCA9PT0gJ251bGwnIHx8ICF0aGlzLnJlbmRlclZpZXcpIHtcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgfD0gRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyVmlldy5jb250ZW50ID0gbGF0ZXN0Q29udGVudFxuICAgICAgY29uc3QgeyBraW5kOiBwcmV2aW91c0tpbmQgfSA9IHRoaXMucmVuZGVyVmlldy5wcmV2aW91c0NvbnRlbnRcbiAgICAgIGlmIChsYXRlc3RDb250ZW50LmtpbmQgIT09IHByZXZpb3VzS2luZCkge1xuICAgICAgICB0aGlzLnJlbmRlckZsYWdzIHw9IEZsZXhSZW5kZXJGbGFncy5Db250ZW50Q2hhbmdlZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZSgpXG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmXG4gICAgICAoRmxleFJlbmRlckZsYWdzLkNvbnRlbnRDaGFuZ2VkIHwgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlcilcbiAgICApIHtcbiAgICAgIHRoaXMucmVuZGVyKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5yZW5kZXJGbGFncyAmIEZsZXhSZW5kZXJGbGFncy5Qcm9wc1JlZmVyZW5jZUNoYW5nZWQpIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlclZpZXcpIHRoaXMucmVuZGVyVmlldy51cGRhdGVQcm9wcyh0aGlzLnByb3BzKVxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlByb3BzUmVmZXJlbmNlQ2hhbmdlZFxuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnJlbmRlckZsYWdzICZcbiAgICAgIChGbGV4UmVuZGVyRmxhZ3MuRGlydHlDaGVjayB8IEZsZXhSZW5kZXJGbGFncy5EaXJ0eVNpZ25hbClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlbmRlclZpZXcpIHRoaXMucmVuZGVyVmlldy5kaXJ0eUNoZWNrKClcbiAgICAgIHRoaXMucmVuZGVyRmxhZ3MgJj0gfihcbiAgICAgICAgRmxleFJlbmRlckZsYWdzLkRpcnR5Q2hlY2sgfCBGbGV4UmVuZGVyRmxhZ3MuRGlydHlTaWduYWxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAjY3VycmVudEVmZmVjdFJlZjogRWZmZWN0UmVmIHwgbnVsbCA9IG51bGxcblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuI3Nob3VsZFJlY3JlYXRlRW50aXJlVmlldygpICYmIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYuZGVzdHJveSgpXG4gICAgICB0aGlzLiNjdXJyZW50RWZmZWN0UmVmID0gbnVsbFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmPSB+RmxleFJlbmRlckZsYWdzLlJlbmRlckVmZmVjdENoZWNrZWRcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIHRoaXMucmVuZGVyRmxhZ3MgPVxuICAgICAgRmxleFJlbmRlckZsYWdzLlByaXN0aW5lIHxcbiAgICAgICh0aGlzLnJlbmRlckZsYWdzICYgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlcikgfFxuICAgICAgKHRoaXMucmVuZGVyRmxhZ3MgJiBGbGV4UmVuZGVyRmxhZ3MuUmVuZGVyRWZmZWN0Q2hlY2tlZClcblxuICAgIGNvbnN0IHJlc29sdmVkQ29udGVudCA9IHRoaXMuI2dldENvbnRlbnRWYWx1ZSgpXG4gICAgaWYgKHJlc29sdmVkQ29udGVudC5raW5kID09PSAnbnVsbCcpIHtcbiAgICAgIHRoaXMucmVuZGVyVmlldyA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJWaWV3ID0gdGhpcy4jcmVuZGVyVmlld0J5Q29udGVudChyZXNvbHZlZENvbnRlbnQpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvbnRlbnQgaXMgYSBmdW5jdGlvbiBgY29udGVudChwcm9wcylgLCB3ZSBpbml0aWFsaXplIGFuIGVmZmVjdFxuICAgIC8vIGluIG9yZGVyIHRvIHJlYWN0IHRvIGNoYW5nZXMgaWYgdGhlIGdpdmVuIGRlZmluaXRpb24gdXNlIHNpZ25hbHMuXG4gICAgaWYgKCF0aGlzLiNjdXJyZW50RWZmZWN0UmVmICYmIHR5cGVvZiB0aGlzLmNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRFZmZlY3RSZWYgPSBlZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLiNsYXRlc3RDb250ZW50KClcbiAgICAgICAgICBpZiAoISh0aGlzLnJlbmRlckZsYWdzICYgRmxleFJlbmRlckZsYWdzLlJlbmRlckVmZmVjdENoZWNrZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckZsYWdzIHw9IEZsZXhSZW5kZXJGbGFncy5SZW5kZXJFZmZlY3RDaGVja2VkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZW5kZXJGbGFncyB8PSBGbGV4UmVuZGVyRmxhZ3MuRGlydHlTaWduYWxcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgbWFyayB0aGUgdmlldyBhcyBjaGFuZ2VkLFxuICAgICAgICAgIC8vIHNvIHdlJ2xsIHRyeSB0byBjaGVjayBmb3IgdXBkYXRlcyBpbnRvIG5nRG9DaGVja1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgIH0sXG4gICAgICAgIHsgaW5qZWN0b3I6IHRoaXMudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgI3Nob3VsZFJlY3JlYXRlRW50aXJlVmlldygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5yZW5kZXJGbGFncyAmXG4gICAgICBGbGV4UmVuZGVyRmxhZ3MuQ29udGVudENoYW5nZWQgJlxuICAgICAgRmxleFJlbmRlckZsYWdzLlZpZXdGaXJzdFJlbmRlclxuICAgIClcbiAgfVxuXG4gICNyZW5kZXJWaWV3QnlDb250ZW50KFxuICAgIGNvbnRlbnQ6IEZsZXhSZW5kZXJUeXBlZENvbnRlbnRcbiAgKTogRmxleFJlbmRlclZpZXc8YW55PiB8IG51bGwge1xuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdwcmltaXRpdmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy4jcmVuZGVyU3RyaW5nQ29udGVudChjb250ZW50KVxuICAgIH0gZWxzZSBpZiAoY29udGVudC5raW5kID09PSAndGVtcGxhdGVSZWYnKSB7XG4gICAgICByZXR1cm4gdGhpcy4jcmVuZGVyVGVtcGxhdGVSZWZDb250ZW50KGNvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChjb250ZW50LmtpbmQgPT09ICdmbGV4UmVuZGVyQ29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuIHRoaXMuI3JlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSBpZiAoY29udGVudC5raW5kID09PSAnY29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuIHRoaXMuI3JlbmRlckN1c3RvbUNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gICNyZW5kZXJTdHJpbmdDb250ZW50KFxuICAgIHRlbXBsYXRlOiBFeHRyYWN0PEZsZXhSZW5kZXJUeXBlZENvbnRlbnQsIHsga2luZDogJ3ByaW1pdGl2ZScgfT5cbiAgKTogRmxleFJlbmRlclRlbXBsYXRlVmlldyB7XG4gICAgY29uc3QgY29udGV4dCA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnc3RyaW5nJyB8fFxuICAgICAgICB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnbnVtYmVyJ1xuICAgICAgICA/IHRoaXMuY29udGVudFxuICAgICAgICA6IHRoaXMuY29udGVudD8uKHRoaXMucHJvcHMpXG4gICAgfVxuICAgIGNvbnN0IHJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwge1xuICAgICAgZ2V0ICRpbXBsaWNpdCgpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQoKVxuICAgICAgfSxcbiAgICB9KVxuICAgIHJldHVybiBuZXcgRmxleFJlbmRlclRlbXBsYXRlVmlldyh0ZW1wbGF0ZSwgcmVmKVxuICB9XG5cbiAgI3JlbmRlclRlbXBsYXRlUmVmQ29udGVudChcbiAgICB0ZW1wbGF0ZTogRXh0cmFjdDxGbGV4UmVuZGVyVHlwZWRDb250ZW50LCB7IGtpbmQ6ICd0ZW1wbGF0ZVJlZicgfT5cbiAgKTogRmxleFJlbmRlclRlbXBsYXRlVmlldyB7XG4gICAgY29uc3QgbGF0ZXN0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZS5jb250ZW50LCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gbGF0ZXN0Q29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gICAgcmV0dXJuIG5ldyBGbGV4UmVuZGVyVGVtcGxhdGVWaWV3KHRlbXBsYXRlLCB2aWV3KVxuICB9XG5cbiAgI3JlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBFeHRyYWN0PFxuICAgICAgRmxleFJlbmRlclR5cGVkQ29udGVudCxcbiAgICAgIHsga2luZDogJ2ZsZXhSZW5kZXJDb21wb25lbnQnIH1cbiAgICA+XG4gICk6IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3IHtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgaW5qZWN0b3IgfSA9IGZsZXhSZW5kZXJDb21wb25lbnQuY29udGVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0aGlzLnByb3BzLCB7XG4gICAgICBnZXQ6IChfLCBrZXkpID0+IGdldENvbnRleHQoKVtrZXkgYXMga2V5b2YgdHlwZW9mIF9dLFxuICAgIH0pXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuICAgIGNvbnN0IHZpZXcgPSB0aGlzLiNmbGV4UmVuZGVyQ29tcG9uZW50RmFjdG9yeS5jcmVhdGVDb21wb25lbnQoXG4gICAgICBmbGV4UmVuZGVyQ29tcG9uZW50LmNvbnRlbnQsXG4gICAgICBjb21wb25lbnRJbmplY3RvclxuICAgIClcbiAgICByZXR1cm4gbmV3IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3KGZsZXhSZW5kZXJDb21wb25lbnQsIHZpZXcpXG4gIH1cblxuICAjcmVuZGVyQ3VzdG9tQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogRXh0cmFjdDxGbGV4UmVuZGVyVHlwZWRDb250ZW50LCB7IGtpbmQ6ICdjb21wb25lbnQnIH0+XG4gICk6IEZsZXhSZW5kZXJDb21wb25lbnRWaWV3IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy4jZmxleFJlbmRlckNvbXBvbmVudEZhY3RvcnkuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgZmxleFJlbmRlckNvbXBvbmVudChjb21wb25lbnQuY29udGVudCwge1xuICAgICAgICBpbnB1dHM6IHRoaXMucHJvcHMsXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICB0aGlzLmluamVjdG9yXG4gICAgKVxuICAgIHJldHVybiBuZXcgRmxleFJlbmRlckNvbXBvbmVudFZpZXcoY29tcG9uZW50LCB2aWV3KVxuICB9XG59XG4iXX0=
|
|
@@ -20,10 +20,10 @@ export class NvDatatableCellDirective {
|
|
|
20
20
|
constructor(template) {
|
|
21
21
|
this.template = template;
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
24
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NvDatatableCellDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NvDatatableCellDirective, isStandalone: true, selector: "ng-template[nvDatatableCell]", inputs: { nvDatatableCell: "nvDatatableCell" }, ngImport: i0 }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NvDatatableCellDirective, decorators: [{
|
|
27
27
|
type: Directive,
|
|
28
28
|
args: [{
|
|
29
29
|
selector: 'ng-template[nvDatatableCell]',
|
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
33
33
|
type: Input,
|
|
34
34
|
args: [{ required: true }]
|
|
35
35
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnYtZGF0YXRhYmxlLWNlbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92YS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9udi1kYXRhdGFibGUtY2VsbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBVzlEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFPbkMsWUFBbUIsUUFBbUQ7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBMkM7SUFBRyxDQUFDOytHQVAvRCx3QkFBd0I7bUdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0ZBTTRCLGVBQWU7c0JBQXpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ2VsbENvbnRleHQgfSBmcm9tICcuL2RhdGF0YWJsZS51dGlscyc7XG5cbi8qKlxuICogQ29udGV4dCB0eXBlIGZvciBjZWxsIHRlbXBsYXRlcyAtIHVzZXMgVGFuU3RhY2sgVGFibGUncyBDZWxsQ29udGV4dCBkaXJlY3RseVxuICovXG5leHBvcnQgdHlwZSBOdkRhdGF0YWJsZUNlbGxDb250ZXh0PFQsIFY+ID0ge1xuICAvKiogVGhlIGNlbGwncyBhY3R1YWwgdmFsdWUgKi9cbiAgJGltcGxpY2l0OiBDZWxsQ29udGV4dDxULCBWPjtcbn07XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIG1hcmsgbmctdGVtcGxhdGVzIGFzIGNlbGwgdGVtcGxhdGVzIGZvciBzcGVjaWZpYyBmaWVsZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxudi1kYXRhdGFibGUgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtyb3dzXT1cImRhdGFcIj5cbiAqICAgPG5nLXRlbXBsYXRlIG52RGF0YXRhYmxlQ2VsbD1cIm5hbWVcIiBsZXQtY29udGV4dD5cbiAqICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IGNvbnRleHQudmFsdWUgfX08L2Rpdj5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiAgIDxuZy10ZW1wbGF0ZSBudkRhdGF0YWJsZUNlbGw9XCJwcmljZVwiIGxldC1jb250ZXh0PlxuICogICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tb25vXCI+JHt7IGNvbnRleHQudmFsdWUgfX08L3NwYW4+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L252LWRhdGF0YWJsZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtudkRhdGF0YWJsZUNlbGxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlPFQsIFY+IHtcbiAgLyoqXG4gICAqIFRoZSBmaWVsZCBuYW1lIHRoaXMgdGVtcGxhdGUgc2hvdWxkIHJlbmRlci5cbiAgICogU2hvdWxkIG1hdGNoIGEgZmllbGQgaW4geW91ciBjb2x1bW4gZGVmaW5pdGlvbnMuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBudkRhdGF0YWJsZUNlbGwhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxOdkRhdGF0YWJsZUNlbGxDb250ZXh0PFQsIFY+Pikge31cbn1cbiJdfQ==
|
|
@@ -365,8 +365,8 @@ export class NvDatatable {
|
|
|
365
365
|
this.observer = null;
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
369
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.
|
|
368
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NvDatatable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
369
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NvDatatable, isStandalone: true, selector: "nv-datatable", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true, read: TemplateRef }, { propertyName: "cellTemplates", predicate: NvDatatableCellDirective }], viewQueries: [{ propertyName: "tableRows", first: true, predicate: ["tableRow"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
370
370
|
<nv-table>
|
|
371
371
|
<table>
|
|
372
372
|
<thead [attr.data-sticky-top]="stickyHeader() ? 'true' : null">
|
|
@@ -462,7 +462,7 @@ export class NvDatatable {
|
|
|
462
462
|
} }
|
|
463
463
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FlexRenderDirective, selector: "[flexRender]", inputs: ["flexRender", "flexRenderProps", "flexRenderInjector"] }] }); }
|
|
464
464
|
}
|
|
465
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NvDatatable, decorators: [{
|
|
466
466
|
type: Component,
|
|
467
467
|
args: [{
|
|
468
468
|
selector: 'nv-datatable',
|
|
@@ -598,4 +598,4 @@ export function makeColumn() {
|
|
|
598
598
|
};
|
|
599
599
|
}
|
|
600
600
|
export { flexRenderComponent as nvDatatableRenderComponent } from './datatable.utils';
|
|
601
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnYtZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnYtZGF0YXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsMENBQTBDO0FBQzFDLHdDQUF3QztBQUV4QyxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osZUFBZSxFQUVmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsZ0hBQWdIO0FBQ2hILE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBT3BCLE1BQU0sbUJBQW1CLENBQUM7OztBQUUzQjs7O0dBR0c7QUFzR0gsTUFBTSxPQUFPLFdBQVc7SUFtUXRCLHdDQUF3QztJQUN4QyxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEIsQ0FDeEIsS0FBMkMsRUFDM0MsTUFLQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFNBQWtDLENBQUM7UUFFdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixTQUFTLEdBQUcsS0FBZ0MsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqRSxT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bUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtcmV0dXJucyAqL1xuLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1wYXJhbSAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBFbGVtZW50UmVmLFxuICB2aWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlLFxuICB0eXBlIE52RGF0YXRhYmxlQ2VsbENvbnRleHQsXG59IGZyb20gJy4vbnYtZGF0YXRhYmxlLWNlbGwuZGlyZWN0aXZlJztcblxuLy8gbG9jYWwgY29weSBvZiBAdGFuc3RhY2svYW5ndWxhci10YWJsZSAocmVxdWlyZWQgZm9yIG11bHRpIGFuZ3VsYXIgdmVyc2lvbnMsIHRoZSBidWlsdCB2ZXJzaW9uIGlzIG5vdCB3b3JraW5nKVxuaW1wb3J0IHtcbiAgY3JlYXRlQW5ndWxhclRhYmxlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIGdldFBhZ2luYXRpb25Sb3dNb2RlbCxcbiAgZ2V0U29ydGVkUm93TW9kZWwsXG4gIEZsZXhSZW5kZXJEaXJlY3RpdmUsXG4gIHR5cGUgRmxleFJlbmRlckNvbXBvbmVudCxcbiAgdHlwZSBDb2x1bW5EZWYsXG4gIHR5cGUgQ2VsbENvbnRleHQsXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBOb0luZmVyLFxufSBmcm9tICcuL2RhdGF0YWJsZS51dGlscyc7XG5cbi8qKlxuICogQSBwb3dlcmZ1bCwgZmxleGlibGUgZGF0YXRhYmxlIGNvbXBvbmVudCBidWlsdCBvbiBUYW5TdGFjayBUYWJsZS5cbiAqIFN1cHBvcnRzIGN1c3RvbSBjZWxsIHJlbmRlcmluZywgY29sdW1uIGNvbmZpZ3VyYXRpb24sIHBhZ2luYXRpb24sIGFuZCBmdWxsIFR5cGVTY3JpcHQgdHlwaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kYXRhdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGbGV4UmVuZGVyRGlyZWN0aXZlXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxudi10YWJsZT5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkIFthdHRyLmRhdGEtc3RpY2t5LXRvcF09XCJzdGlja3lIZWFkZXIoKSA/ICd0cnVlJyA6IG51bGxcIj5cbiAgICAgICAgICBAZm9yIChoZWFkZXJHcm91cCBvZiB0YWJsZSgpLmdldEhlYWRlckdyb3VwcygpOyB0cmFjayBoZWFkZXJHcm91cC5pZClcbiAgICAgICAgICB7XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoaGVhZGVyIG9mIGhlYWRlckdyb3VwLmhlYWRlcnM7IHRyYWNrIGhlYWRlci5pZCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtaGVhZGVyLScgKyBoZWFkZXIuaWRcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuc2l6ZVxuICAgICAgICAgICAgICAgICAgPyBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5zaXplICsgJ3B4J1xuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbm8tcmVzaXplXT1cIlxuICAgICAgICAgICAgICAgICFoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5lbmFibGVSZXNpemluZyA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmICghaGVhZGVyLmlzUGxhY2Vob2xkZXIpIHsgQGlmIChoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSkge1xuICAgICAgICAgICAgICA8bnYtdGFibGVoZWFkZXJcbiAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NvcnREaXJlY3Rpb25dPVwiaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpIHx8ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgKHNvcnREaXJlY3Rpb25DaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICAgICAgaGFuZGxlU29ydERpcmVjdGlvbkNoYW5nZWQoJGV2ZW50LCBoZWFkZXIpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciB9fVxuICAgICAgICAgICAgICA8L252LXRhYmxlaGVhZGVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyIH19XG4gICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90aGVhZD5cblxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAocm93IG9mIHRhYmxlKCkuZ2V0Um93TW9kZWwoKS5yb3dzOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtcm93LScgKyBpXCJcbiAgICAgICAgICAgICN0YWJsZVJvd1xuICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1sYXN0XT1cIlxuICAgICAgICAgICAgICBpc0luZmluaXRlU2Nyb2xsKCkgJiYgaSA9PT0gdGFibGUoKS5nZXRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGNlbGwgb2Ygcm93LmdldFZpc2libGVDZWxscygpOyB0cmFjayBjZWxsLmlkKSB7XG4gICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2RhdGF0YWJsZS1jZWxsLScgKyBjZWxsLmNvbHVtbi5pZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKmZsZXhSZW5kZXI9XCJcbiAgICAgICAgICAgICAgICAgIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsO1xuICAgICAgICAgICAgICAgICAgcHJvcHM6IGNlbGwuZ2V0Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgICAgbGV0IGNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNlbGxDb250ZW50IH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9udi10YWJsZT5cblxuICAgIDwhLS0gUmVuZGVyIHBhZ2luYXRpb24gaWYgY29uZmlndXJlZCAtLT5cbiAgICBAaWYgKHBhZ2luYXRpb25BUEkoKSkgeyBAaWYgKHBhZ2luYXRpb25UZW1wbGF0ZSkge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHBhZ2luYXRpb25UZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHBhZ2luYXRpb25BUEkoKSB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIGlmIChtb2RlKCkgPT09ICdjbGllbnQnICYmIHBhZ2luYXRpb24oKSAmJiAhcGFnaW5hdGlvbigpPy5pbmZpbml0ZSlcbiAgICB7XG4gICAgPCEtLSBEZWZhdWx0IHBhZ2luYXRpb24gd2l0aCBudi1wYWdpbmF0aW9udGFibGUgKGNsaWVudCBtb2RlIG9ubHkpIC0tPlxuICAgIDxudi1wYWdpbmF0aW9udGFibGVcbiAgICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdGlvbkFQSSgpIS5wYWdlSW5kZXhcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25BUEkoKSEucGFnZVNpemVcIlxuICAgICAgW3BhZ2VDb3VudF09XCJwYWdpbmF0aW9uQVBJKCkhLnBhZ2VDb3VudFwiXG4gICAgICBbcm93Q291bnRdPVwicGFnaW5hdGlvbkFQSSgpIS5yb3dDb3VudFwiXG4gICAgICBbYXR0ci5sYWJlbC1wYWdlXT1cInBhZ2luYXRpb24oKT8ubGFiZWxzPy5wYWdlIHx8IG51bGxcIlxuICAgICAgW2F0dHIubGFiZWwtdG90YWxdPVwicGFnaW5hdGlvbigpPy5sYWJlbHM/LnRvdGFsIHx8IG51bGxcIlxuICAgICAgW2F0dHIubGFiZWwtcGFnZS1zaXplLW9wdGlvbl09XCJcbiAgICAgICAgcGFnaW5hdGlvbigpPy5sYWJlbHM/LnBhZ2VTaXplT3B0aW9uIHx8IG51bGxcbiAgICAgIFwiXG4gICAgICAocGFnZUluZGV4Q2hhbmdlZCk9XCJwYWdpbmF0aW9uQVBJKCkhLnNldFBhZ2VJbmRleCgkZXZlbnQuZGV0YWlsKVwiXG4gICAgICAocGFnZVNpemVDaGFuZ2VkKT1cInBhZ2luYXRpb25BUEkoKSEuc2V0UGFnZVNpemUoJGV2ZW50LmRldGFpbClcIlxuICAgID48L252LXBhZ2luYXRpb250YWJsZT5cbiAgICB9IH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTnZEYXRhdGFibGU8VD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQ29sdW1uIGRlZmluaXRpb25zICovXG4gIGNvbHVtbnMgPSBpbnB1dDxOdkRhdGF0YWJsZUNvbHVtbjxUPltdPihbXSk7XG4gIC8qKiBSb3cgZGF0YSAqL1xuICByb3dzID0gaW5wdXQ8VFtdPihbXSk7XG4gIC8qKlxuICAgKiBEYXRhIGhhbmRsaW5nIG1vZGUgZm9yIHNvcnRpbmcgYW5kIGZpbHRlcmluZyBvcGVyYXRpb25zLlxuICAgKiAtICdjbGllbnQnOiBBbGwgb3BlcmF0aW9ucyBoYW5kbGVkIGluIGJyb3dzZXIgKGRlZmF1bHQpXG4gICAqIC0gJ3NlcnZlcic6IE9wZXJhdGlvbnMgdHJpZ2dlciBjYWxsYmFja3MgZm9yIHNlcnZlci1zaWRlIGhhbmRsaW5nXG4gICAqL1xuICBtb2RlID0gaW5wdXQ8J2NsaWVudCcgfCAnc2VydmVyJz4oJ2NsaWVudCcpO1xuICAvKiogT3B0aW9uYWwgcGFnaW5hdGlvbiBjb25maWd1cmF0aW9uICovXG4gIHBhZ2luYXRpb24gPSBpbnB1dDxOdkRhdGF0YWJsZVBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBPcHRpb25hbCBzb3J0aW5nIGNvbmZpZ3VyYXRpb24gKi9cbiAgc29ydGluZyA9IGlucHV0PE52RGF0YXRhYmxlU29ydGluZ0NvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIFNob3VsZCB0aGUgaGVhZGVyIHN0aWNrIHRvIHRoZSB0b3Agb2YgdGhlIHRhYmxlIHdoZW4gc2Nyb2xsaW5nPyAqL1xuICBzdGlja3lIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIFRlbXBsYXRlIGZvciBjdXN0b20gcGFnaW5hdGlvbiBVSSAqL1xuICBAQ29udGVudENoaWxkKCdwYWdpbmF0aW9uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2luYXRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICAkaW1wbGljaXQ6IE52RGF0YXRhYmxlUmVuZGVyUGFnaW5hdGlvbkFQSTtcbiAgfT47XG5cbiAgLyoqIENlbGwgdGVtcGxhdGVzIHByb3ZpZGVkIHZpYSBudkRhdGF0YWJsZUNlbGwgZGlyZWN0aXZlICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlKVxuICBjZWxsVGVtcGxhdGVzPzogUXVlcnlMaXN0PE52RGF0YXRhYmxlQ2VsbERpcmVjdGl2ZTxULCBUW2tleW9mIFRdPj47XG5cbiAgLyoqIFNpZ25hbCB0byB0cmFjayBjZWxsIHRlbXBsYXRlcyBhcnJheSAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZXNTaWduYWwgPSBzaWduYWw8XG4gICAgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlPFQsIFRba2V5b2YgVF0+W11cbiAgPihbXSk7XG5cbiAgLyoqIE1hcCBvZiBmaWVsZCBuYW1lcyB0byBjZWxsIHRlbXBsYXRlcyAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZU1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgVGVtcGxhdGVSZWY8TnZEYXRhdGFibGVDZWxsQ29udGV4dDxULCBUW2tleW9mIFRdPj5cbiAgICA+KCk7XG4gICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsKCkuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICBtYXAuc2V0KGRpcmVjdGl2ZS5udkRhdGF0YWJsZUNlbGwsIGRpcmVjdGl2ZS50ZW1wbGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgLyoqIFBhZ2luYXRpb24gc3RhdGUgZm9yIHNlcnZlciBtb2RlICovXG4gIHByaXZhdGUgcGFnaW5hdGlvblN0YXRlID0gc2lnbmFsPFBhZ2luYXRpb25TdGF0ZT4oe1xuICAgIHBhZ2VJbmRleDogMCxcbiAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0aW9uKCk/LmluaXRpYWxQYWdlU2l6ZSB8fCAxMCxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNvcnRpbmcgc3RhdGUuIFdoZW4gc29ydGluZy5zb3J0U3RhdGUgaXMgcHJvdmlkZWQgdGhlIGNvbXBvbmVudCBpcyBjb250cm9sbGVkO1xuICAgKiBpbml0aWFsU29ydFN0YXRlIG9ubHkgc2VlZHMgdGhlIHVuY29udHJvbGxlZCBzdGF0ZSAoc2VlZGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yXG4gICAqIGVmZmVjdCBiZWxvdyDigJQgZmllbGQgaW5pdGlhbGl6ZXJzIHJ1biBiZWZvcmUgaW5wdXRzIGFyZSBib3VuZCkuXG4gICAqL1xuICBwcml2YXRlIHNvcnRpbmdTdGF0ZSA9IHNpZ25hbDxTb3J0aW5nU3RhdGU+KFtdKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRhYmxlIHJvd3MgZm9yIGluZmluaXRlIHNjcm9sbCBvYnNlcnZlciAqL1xuICBwcml2YXRlIHRhYmxlUm93cyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigndGFibGVSb3cnKTtcblxuICAvKiogSW50ZXJzZWN0aW9uIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogSGVscGVyIHRvIGNoZWNrIGlmIHVzaW5nIGluZmluaXRlIHNjcm9sbCAqL1xuICBpc0luZmluaXRlU2Nyb2xsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdpbmF0aW9uKCk/LmluZmluaXRlID09PSB0cnVlKTtcblxuICAvKiogQ29tcHV0ZWQgdGFibGUgY29sdW1ucyB3aXRoIHByb3BlciB0eXBpbmcgYW5kIGZpbHRlcmluZy4gKi9cbiAgdGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8Q29sdW1uRGVmPFQsIFRba2V5b2YgVF0+W10+KCgpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZU1hcCA9IHRoaXMuY2VsbFRlbXBsYXRlTWFwKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKClcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gIWNvbC5oaWRkZW4pXG4gICAgICAubWFwKChjb2wpID0+IHtcbiAgICAgICAgLy8gU2hhcmVkIGNlbGwgcmVuZGVyZXJcbiAgICAgICAgY29uc3QgY2VsbFJlbmRlcmVyID0gKGNvbnRleHQ6IENlbGxDb250ZXh0PFQsIFRba2V5b2YgVF0+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lID0gU3RyaW5nKGNvbC5maWVsZCk7XG4gICAgICAgICAgY29uc3QgY2VsbFRlbXBsYXRlID0gdGVtcGxhdGVNYXAuZ2V0KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgICAvLyBQcmlvcml0eTogdGVtcGxhdGUgPiByZW5kZXJDZWxsID4gZGVmYXVsdFxuICAgICAgICAgIGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFJldHVybiBUZW1wbGF0ZVJlZiBkaXJlY3RseSAtIGdldFZhbHVlKCkgcmV0dXJucyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgICAgICAgIHJldHVybiBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHJlbmRlckNlbGwgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoY29sLnJlbmRlckNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2wucmVuZGVyQ2VsbChjb250ZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEZWZhdWx0OiBqdXN0IHJldHVybiB0aGUgdmFsdWUgKGZvcm1hdHRlZCBpZiB2YWx1ZUZvcm1hdHRlciB3YXMgdXNlZClcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRWYWx1ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZjogQ29sdW1uRGVmPFQsIFRba2V5b2YgVF0+ID0ge1xuICAgICAgICAgIGFjY2Vzc29yS2V5OiBjb2wuZmllbGQsXG4gICAgICAgICAgYWNjZXNzb3JGbjogY29sLnZhbHVlRm9ybWF0dGVyXG4gICAgICAgICAgICA/IChyb3c6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJvd1tjb2wuZmllbGRdO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2wudmFsdWVGb3JtYXR0ZXIhKHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiByYXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGhlYWRlcjogY29sLmhlYWRlck5hbWUgfHwgU3RyaW5nKGNvbC5maWVsZCksXG4gICAgICAgICAgc2l6ZTogY29sLndpZHRoLFxuICAgICAgICAgIGVuYWJsZVJlc2l6aW5nOiBjb2wucmVzaXphYmxlID8/IHRydWUsXG4gICAgICAgICAgLy8gU29ydGluZyBjb25maWd1cmF0aW9uXG4gICAgICAgICAgZW5hYmxlU29ydGluZzogdGhpcy5zb3J0aW5nKCkgPyBjb2wuc29ydGFibGUgPz8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIGNlbGw6IGNlbGxSZW5kZXJlcixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgc29ydGluZyBwcm9wZXJ0aWVzIG9ubHkgaWYgZGVmaW5lZFxuICAgICAgICBpZiAoY29sLnNvcnRpbmdGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRhblN0YWNrIHR5cGluZyBpcyBzdHJpY3QgYnV0IHRoaXMgd29ya3MgYXQgcnVudGltZVxuICAgICAgICAgIGNvbHVtbkRlZi5zb3J0aW5nRm4gPSBjb2wuc29ydGluZ0ZuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2wuc29ydERlc2NGaXJzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29sdW1uRGVmLnNvcnREZXNjRmlyc3QgPSBjb2wuc29ydERlc2NGaXJzdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sLmludmVydFNvcnRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nID0gY29sLmludmVydFNvcnRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbC5zb3J0VW5kZWZpbmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2x1bW5EZWYuc29ydFVuZGVmaW5lZCA9IGNvbC5zb3J0VW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkRlZjtcbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVGFuU3RhY2sgdGFibGUgaW5zdGFuY2Ugd2l0aCBTaWduYWxzICovXG4gIHByaXZhdGUgdGFibGVJbnN0YW5jZSA9IGNyZWF0ZUFuZ3VsYXJUYWJsZSgoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGNvbnN0IHNvcnRpbmdDb25maWcgPSB0aGlzLnNvcnRpbmcoKTtcbiAgICBjb25zdCBjb21wb25lbnRNb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgY29uc3QgaXNTZXJ2ZXJNb2RlID0gY29tcG9uZW50TW9kZSA9PT0gJ3NlcnZlcic7XG4gICAgY29uc3QgaXNJbmZpbml0ZSA9IHBhZ2luYXRpb25Db25maWc/LmluZmluaXRlID09PSB0cnVlO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhc2UgdGFibGUgY29uZmlndXJhdGlvbiB3aXRoIHNvcnRpbmdcbiAgICBjb25zdCBnZXRCYXNlVGFibGVDb25maWcgPSAoKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29uZmlnID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnJvd3MoKSxcbiAgICAgICAgY29sdW1uczogdGhpcy50YWJsZUNvbHVtbnMoKSxcbiAgICAgICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICAgICAgLy8gU29ydGluZyBjb25maWd1cmF0aW9uIC0gdXNlcyB0b3AtbGV2ZWwgbW9kZVxuICAgICAgICAuLi4oc29ydGluZ0NvbmZpZyAmJiB7XG4gICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgIHNvcnRpbmc6XG4gICAgICAgICAgICAgIGlzU2VydmVyTW9kZSAmJiBzb3J0aW5nQ29uZmlnLnNvcnRTdGF0ZVxuICAgICAgICAgICAgICAgID8gc29ydGluZ0NvbmZpZy5zb3J0U3RhdGVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc29ydGluZ1N0YXRlKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblNvcnRpbmdDaGFuZ2U6IChcbiAgICAgICAgICAgIHVwZGF0ZXJPclZhbHVlOlxuICAgICAgICAgICAgICB8IFNvcnRpbmdTdGF0ZVxuICAgICAgICAgICAgICB8ICgob2xkOiBTb3J0aW5nU3RhdGUpID0+IFNvcnRpbmdTdGF0ZSksXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U29ydCA9XG4gICAgICAgICAgICAgIGlzU2VydmVyTW9kZSAmJiBzb3J0aW5nQ29uZmlnLnNvcnRTdGF0ZVxuICAgICAgICAgICAgICAgID8gc29ydGluZ0NvbmZpZy5zb3J0U3RhdGVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc29ydGluZ1N0YXRlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NvcnQgPVxuICAgICAgICAgICAgICB0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHVwZGF0ZXJPclZhbHVlKGN1cnJlbnRTb3J0KVxuICAgICAgICAgICAgICAgIDogdXBkYXRlck9yVmFsdWU7XG5cbiAgICAgICAgICAgIC8vIEFsd2F5cyB1cGRhdGUgaW50ZXJuYWwgc3RhdGUgZm9yIHJlYWN0aXZpdHlcbiAgICAgICAgICAgIHRoaXMuc29ydGluZ1N0YXRlLnNldChuZXdTb3J0KTtcblxuICAgICAgICAgICAgLy8gRm9yIHNlcnZlci1zaWRlIHNvcnRpbmcsIGFsc28gY2FsbCB0aGUgY2FsbGJhY2tcbiAgICAgICAgICAgIGlmIChpc1NlcnZlck1vZGUgJiYgc29ydGluZ0NvbmZpZy5vblNvcnRpbmdDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgc29ydGluZ0NvbmZpZy5vblNvcnRpbmdDaGFuZ2UobmV3U29ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYW51YWxTb3J0aW5nOiBpc1NlcnZlck1vZGUsXG4gICAgICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVNdWx0aVNvcnQ6IHNvcnRpbmdDb25maWcuZW5hYmxlTXVsdGlTb3J0ID8/IGZhbHNlLFxuICAgICAgICAgIGVuYWJsZVNvcnRpbmdSZW1vdmFsOiBzb3J0aW5nQ29uZmlnLmVuYWJsZVNvcnRpbmdSZW1vdmFsID8/IHRydWUsXG4gICAgICAgICAgbWF4TXVsdGlTb3J0Q29sQ291bnQ6IHNvcnRpbmdDb25maWcubWF4TXVsdGlTb3J0Q29sQ291bnQsXG4gICAgICAgICAgc29ydERlc2NGaXJzdDogc29ydGluZ0NvbmZpZy5zb3J0RGVzY0ZpcnN0ID8/IGZhbHNlLFxuICAgICAgICAgIC8vIFdoZW4gbXVsdGktc29ydCBpcyBlbmFibGVkLCB0cmVhdCBhbGwgY2xpY2tzIGFzIG11bHRpLXNvcnQgZXZlbnRzXG4gICAgICAgICAgaXNNdWx0aVNvcnRFdmVudDogc29ydGluZ0NvbmZpZy5lbmFibGVNdWx0aVNvcnRcbiAgICAgICAgICAgID8gKCkgPT4gdHJ1ZVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZ2V0U29ydGVkUm93TW9kZWw6ICFpc1NlcnZlck1vZGUgPyBnZXRTb3J0ZWRSb3dNb2RlbCgpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBiYXNlQ29uZmlnO1xuICAgIH07XG5cbiAgICAvLyBJbmZpbml0ZSBzY3JvbGwgbW9kZSAocmVxdWlyZXMgc2VydmVyIG1vZGUpXG4gICAgaWYgKGlzSW5maW5pdGUpIHtcbiAgICAgIC8vIE5vIHBhZ2luYXRpb24gcm93IG1vZGVsIGZvciBpbmZpbml0ZSBzY3JvbGwgLSBzaW1wbGUgY29uZmlnXG4gICAgICByZXR1cm4gZ2V0QmFzZVRhYmxlQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgLy8gTm8gcGFnaW5hdGlvbiBjb25maWd1cmVkXG4gICAgaWYgKCFwYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICByZXR1cm4gZ2V0QmFzZVRhYmxlQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgLy8gQ2xpZW50LXNpZGUgcGFnaW5hdGlvblxuICAgIGlmICghaXNTZXJ2ZXJNb2RlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRCYXNlVGFibGVDb25maWcoKSxcbiAgICAgICAgZ2V0UGFnaW5hdGlvblJvd01vZGVsOiBnZXRQYWdpbmF0aW9uUm93TW9kZWwoKSxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb25Db25maWcuaW5pdGlhbFBhZ2VTaXplIHx8IDEwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFNlcnZlci1zaWRlIHBhZ2luYXRpb24gLSBtYW51YWwgcGFnaW5hdGlvbiB3aXRoIHJlYWN0aXZlIHN0YXRlXG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IGdldEJhc2VUYWJsZUNvbmZpZygpO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUoKS5wYWdlU2l6ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZUNvbmZpZyxcbiAgICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgICBwYWdlQ291bnQ6XG4gICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxQYWdlQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VDb3VudFxuICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJvd0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IE1hdGguY2VpbChwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUm93Q291bnQgLyBwYWdlU2l6ZSlcbiAgICAgICAgICA6IC0xLFxuICAgICAgc3RhdGU6IHtcbiAgICAgICAgcGFnaW5hdGlvbjogdGhpcy5wYWdpbmF0aW9uU3RhdGUoKSxcbiAgICAgICAgLi4uKGJhc2VDb25maWcuc3RhdGUgJiYgeyBzb3J0aW5nOiBiYXNlQ29uZmlnLnN0YXRlLnNvcnRpbmcgfSksXG4gICAgICB9LFxuICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlOiAoXG4gICAgICAgIHVwZGF0ZXJPclZhbHVlOlxuICAgICAgICAgIHwgUGFnaW5hdGlvblN0YXRlXG4gICAgICAgICAgfCAoKG9sZDogUGFnaW5hdGlvblN0YXRlKSA9PiBQYWdpbmF0aW9uU3RhdGUpLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID1cbiAgICAgICAgICB0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gdXBkYXRlck9yVmFsdWUodGhpcy5wYWdpbmF0aW9uU3RhdGUoKSlcbiAgICAgICAgICAgIDogdXBkYXRlck9yVmFsdWU7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUuc2V0KG5ld1N0YXRlKTtcblxuICAgICAgICAvLyBDYWxsIHVzZXIncyBjYWxsYmFjayBmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvblxuICAgICAgICBpZiAocGFnaW5hdGlvbkNvbmZpZy5vblBhZ2luYXRpb25DaGFuZ2UpIHtcbiAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uUGFnaW5hdGlvbkNoYW5nZSh7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcblxuICAvKiogUHVibGljIGdldHRlciBmb3IgdGFibGUgaW5zdGFuY2UuICovXG4gIHRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSW5zdGFuY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgc29ydCBkaXJlY3Rpb24gY2hhbmdlIGZyb20gdGFibGUgaGVhZGVyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IFRoZSBzb3J0IGRpcmVjdGlvbiBjaGFuZ2UgZXZlbnQgb3IgZGlyZWN0aW9uIHN0cmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gaGVhZGVyIFRoZSB0YWJsZSBoZWFkZXIgb2JqZWN0XG4gICAqL1xuICBoYW5kbGVTb3J0RGlyZWN0aW9uQ2hhbmdlZChcbiAgICBldmVudDogRXZlbnQgfCBDdXN0b21FdmVudDxzdHJpbmc+IHwgc3RyaW5nLFxuICAgIGhlYWRlcjoge1xuICAgICAgY29sdW1uOiB7XG4gICAgICAgIGNsZWFyU29ydGluZzogKCkgPT4gdm9pZDtcbiAgICAgICAgdG9nZ2xlU29ydGluZzogKGRlc2M/OiBib29sZWFuLCBtdWx0aT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgICB9O1xuICAgIH0sXG4gICkge1xuICAgIC8vIEV4dHJhY3QgZGlyZWN0aW9uIGZyb20gZXZlbnQgb3IgdXNlIGRpcmVjdGx5IGlmIHN0cmluZ1xuICAgIGxldCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuXG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50IGFzICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAoJ2RldGFpbCcgaW4gZXZlbnQgJiYgdHlwZW9mIGV2ZW50LmRldGFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50LmRldGFpbCBhcyAnYXNjJyB8ICdkZXNjJyB8ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgLSBzaG91bGRuJ3QgaGFwcGVuIGJ1dCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVW5leHBlY3RlZCBldmVudCB0eXBlIGluIGhhbmRsZVNvcnREaXJlY3Rpb25DaGFuZ2VkOicsXG4gICAgICAgIGV2ZW50LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0aW5nQ29uZmlnID0gdGhpcy5zb3J0aW5nKCk7XG5cbiAgICAvLyBDaGVjayBpZiBtdWx0aS1zb3J0IGlzIGVuYWJsZWRcbiAgICBjb25zdCBpc011bHRpU29ydCA9IHNvcnRpbmdDb25maWc/LmVuYWJsZU11bHRpU29ydCA/PyBmYWxzZTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdub25lJykge1xuICAgICAgLy8gQ2xlYXIgdGhpcyBjb2x1bW4ncyBzb3J0XG4gICAgICBoZWFkZXIuY29sdW1uLmNsZWFyU29ydGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb2dnbGUgc29ydCAtIFRhblN0YWNrIHdpbGwgaGFuZGxlIHRoZSBsb2dpYyBpbnRlcm5hbGx5XG4gICAgICBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoZGlyZWN0aW9uID09PSAnZGVzYycsIGlzTXVsdGlTb3J0KTtcbiAgICB9XG4gIH1cblxuICAvKiogQnVpbGQgcGFnaW5hdGlvbiBBUEkgZm9yIHRlbXBsYXRlICovXG4gIHBhZ2luYXRpb25BUEkgPSBjb21wdXRlZDxOdkRhdGF0YWJsZVJlbmRlclBhZ2luYXRpb25BUEkgfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGlmICghcGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50TW9kZSA9IHRoaXMubW9kZSgpO1xuICAgIGNvbnN0IGlzU2VydmVyTW9kZSA9IGNvbXBvbmVudE1vZGUgPT09ICdzZXJ2ZXInO1xuICAgIGNvbnN0IGlzSW5maW5pdGUgPSBwYWdpbmF0aW9uQ29uZmlnLmluZmluaXRlID09PSB0cnVlO1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZSgpO1xuICAgIGNvbnN0IHRhYmxlUGFnaW5hdGlvblN0YXRlID0gdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uO1xuICAgIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuICAgIGNvbnN0IHJvd0NvdW50ID0gaXNTZXJ2ZXJNb2RlXG4gICAgICA/IHBhZ2luYXRpb25Db25maWcudG90YWxSb3dDb3VudCB8fCB0aGlzLnJvd3MoKS5sZW5ndGhcbiAgICAgIDogdGhpcy5yb3dzKCkubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VJbmRleDogdGFibGVQYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4LFxuICAgICAgcGFnZVNpemU6IHRhYmxlUGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplLFxuICAgICAgcGFnZUNvdW50LFxuICAgICAgcm93Q291bnQsXG4gICAgICBmaXJzdFBhZ2U6ICgpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKSxcbiAgICAgIHByZXZpb3VzUGFnZTogKCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCksXG4gICAgICBuZXh0UGFnZTogKCkgPT4gdGFibGUubmV4dFBhZ2UoKSxcbiAgICAgIGxhc3RQYWdlOiAoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSksXG4gICAgICBzZXRQYWdlSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoaW5kZXgpLFxuICAgICAgc2V0UGFnZVNpemU6IChzaXplOiBudW1iZXIpID0+IHRhYmxlLnNldFBhZ2VTaXplKHNpemUpLFxuICAgICAgY2FuUHJldmlvdXNQYWdlOiB0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKSxcbiAgICAgIGNhbk5leHRQYWdlOiB0YWJsZS5nZXRDYW5OZXh0UGFnZSgpLFxuICAgICAgaXNMb2FkaW5nOiBpc0luZmluaXRlID8gcGFnaW5hdGlvbkNvbmZpZy5pc0xvYWRpbmcgOiB1bmRlZmluZWQsXG4gICAgICBoYXNNb3JlOiBpc0luZmluaXRlID8gcGFnaW5hdGlvbkNvbmZpZy5oYXNNb3JlIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNlZWQgc29ydGluZ1N0YXRlIGZyb20gc29ydFN0YXRlIC8gaW5pdGlhbFNvcnRTdGF0ZSBvbmNlIHRoZSBzb3J0aW5nIGlucHV0XG4gICAgLy8gaXMgYm91bmQuIEZpZWxkIGluaXRpYWxpemVycyBydW4gYmVmb3JlIGlucHV0cyBhcmUgc2V0LCBzbyB3ZSBjYW4ndCBkbyB0aGlzXG4gICAgLy8gaW5saW5lIGluIHRoZSBzaWduYWwgZGVmaW5pdGlvbi5cbiAgICBsZXQgc29ydGluZ1NlZWRlZCA9IGZhbHNlO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHNvcnRpbmdTZWVkZWQpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc29ydGluZyA9IHRoaXMuc29ydGluZygpO1xuICAgICAgICBpZiAoc29ydGluZyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIHNvcnRpbmdTZWVkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBzZWVkID0gc29ydGluZy5zb3J0U3RhdGUgPz8gc29ydGluZy5pbml0aWFsU29ydFN0YXRlO1xuICAgICAgICBpZiAoc2VlZCAmJiBzZWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNvcnRpbmdTdGF0ZS5zZXQoc2VlZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIFZhbGlkYXRlIGluZmluaXRlIHNjcm9sbCByZXF1aXJlcyBzZXJ2ZXIgbW9kZVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgICBjb25zdCBjb21wb25lbnRNb2RlID0gdGhpcy5tb2RlKCk7XG5cbiAgICAgIGlmIChwYWdpbmF0aW9uQ29uZmlnPy5pbmZpbml0ZSA9PT0gdHJ1ZSAmJiBjb21wb25lbnRNb2RlICE9PSAnc2VydmVyJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1tOdkRhdGF0YWJsZV0gcGFnaW5hdGlvbi5pbmZpbml0ZT10cnVlIHJlcXVpcmVzIG1vZGU9XCJzZXJ2ZXJcIi4gJyArXG4gICAgICAgICAgICAnSW5maW5pdGUgc2Nyb2xsIHJlbGllcyBvbiBzZXJ2ZXItc2lkZSBkYXRhIGxvYWRpbmcuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNldCB1cCBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZm9yIGluZmluaXRlIHNjcm9sbFxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7IC8vIFRyYWNrIHJvd3MgY2hhbmdlc1xuICAgICAgICBjb25zdCBpc0luZmluaXRlID0gcGFnaW5hdGlvbkNvbmZpZz8uaW5maW5pdGUgPT09IHRydWU7XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3Rpbmcgb2JzZXJ2ZXJcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHVwIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgbW9kZVxuICAgICAgICBpZiAoIWlzSW5maW5pdGUgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBlbnN1cmUgRE9NIGlzIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGhyZXNob2xkID0gcGFnaW5hdGlvbkNvbmZpZy5sb2FkTW9yZVRocmVzaG9sZCB8fCA1MDA7XG5cbiAgICAgICAgICAvLyBGaW5kIHRoZSBsYXN0IHJvdyBlbGVtZW50XG4gICAgICAgICAgY29uc3QgdGFibGVSb3dFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAnW2RhdGEtaXMtbGFzdD1cInRydWVcIl0nLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbGFzdFJvd0VsZW1lbnQgPSB0YWJsZVJvd0VsZW1lbnRzW3RhYmxlUm93RWxlbWVudHMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICBpZiAoIWxhc3RSb3dFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5oYXNNb3JlICYmXG4gICAgICAgICAgICAgICAgIXBhZ2luYXRpb25Db25maWcuaXNMb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5vbkxvYWRNb3JlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcub25Mb2FkTW9yZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByb290TWFyZ2luOiBgJHt0aHJlc2hvbGR9cHhgLFxuICAgICAgICAgICAgICByb290OiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGxhc3RSb3dFbGVtZW50KTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gU3luYyBjZWxsIHRlbXBsYXRlcyBRdWVyeUxpc3QgdG8gc2lnbmFsXG4gICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlcykge1xuICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsLnNldCh0aGlzLmNlbGxUZW1wbGF0ZXMudG9BcnJheSgpKTtcblxuICAgICAgLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gdGhlIFF1ZXJ5TGlzdFxuICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlcykge1xuICAgICAgICAgIHRoaXMuY2VsbFRlbXBsYXRlc1NpZ25hbC5zZXQodGhpcy5jZWxsVGVtcGxhdGVzLnRvQXJyYXkoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFVUSUxTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJvbmdseS10eXBlZCBjb2x1bW4gZmFjdG9yeSBmb3IgYSBnaXZlbiByb3cgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgUm93IFRoZSByb3cgZGF0YSB0eXBlIChlLmcuLCBgUHJvZHVjdGApXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNvbHVtbiBkZWZpbml0aW9uIGFuZCBpbmZlcnM6XG4gKiAtIGBLYCBhcyB0aGUgZmllbGQga2V5IChga2V5b2YgUm93YClcbiAqIC0gYEZgIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBgdmFsdWVGb3JtYXR0ZXJgIChkZWZhdWx0cyB0byBgUm93W0tdYClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIERlZmluZSB5b3VyIHJvdyB0eXBlXG4gKiBpbnRlcmZhY2UgUHJvZHVjdCB7XG4gKiAgIG5hbWU6IHN0cmluZztcbiAqICAgcHJpY2U6IG51bWJlcjtcbiAqIH1cbiAqXG4gKiBjb25zdCBjb2wgPSBtYWtlQ29sdW1uPFByb2R1Y3Q+KCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29sdW1uPFJvdz4oKSB7XG4gIHJldHVybiBmdW5jdGlvbiBkZWZpbmU8SyBleHRlbmRzIGtleW9mIFJvdywgRiA9IFJvd1tLXT4oXG4gICAgY29sOiBOdkRhdGF0YWJsZUNvbHVtbjxSb3csIEssIEY+LFxuICApIHtcbiAgICByZXR1cm4gY29sIGFzIHVua25vd24gYXMgTnZEYXRhdGFibGVDb2x1bW48Um93PjtcbiAgfTtcbn1cblxuZXhwb3J0IHsgZmxleFJlbmRlckNvbXBvbmVudCBhcyBudkRhdGF0YWJsZVJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0YXRhYmxlLnV0aWxzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUWVBFUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmV4cG9ydCB0eXBlIHsgQ2VsbENvbnRleHQgYXMgTnZEYXRhdGFibGVDZWxsQ29udGV4dCB9O1xuXG4vKiogQ29sdW1uIGRlZmluaXRpb24gZm9yIE52RGF0YXRhYmxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZUNvbHVtbjxcbiAgUm93LFxuICBLIGV4dGVuZHMga2V5b2YgUm93ID0ga2V5b2YgUm93LFxuICBGID0gUm93W0tdLFxuPiB7XG4gIC8qKiBGaWVsZCBuYW1lIGZyb20gcm93IGRhdGEgKi9cbiAgZmllbGQ6IEs7XG4gIC8qKiBEaXNwbGF5IG5hbWUgZm9yIGNvbHVtbiBoZWFkZXIgKi9cbiAgaGVhZGVyTmFtZT86IHN0cmluZztcbiAgLyoqIENvbHVtbiB3aWR0aCBpbiBwaXhlbHMgKi9cbiAgd2lkdGg/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIGNvbHVtbiBpcyByZXNpemFibGUgKi9cbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgY29sdW1uIGlzIGhpZGRlbiAqL1xuICBoaWRkZW4/OiBib29sZWFuO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRoZSByYXcgdmFsdWUgYmVmb3JlIHJlbmRlcmluZy4gUmVjZWl2ZXMgdGhlIGNlbGwgdmFsdWUgYW5kIGZ1bGwgcm93IG9iamVjdC5cbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGZvcm1hdHRpbmcgZGF0ZXMsIGNvbnZlcnRpbmcgYXJyYXlzIHRvIHN0cmluZ3MsIGFjY2Vzc2luZyBuZXN0ZWQgb2JqZWN0cywgZXRjLlxuICAgKiBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgaXMgdGhlbiBwYXNzZWQgdG8gcmVuZGVyQ2VsbCBvciB0ZW1wbGF0ZXMuXG4gICAqL1xuICB2YWx1ZUZvcm1hdHRlcj86IChwYXJhbXM6IE52VGFibGVWYWx1ZUZvcm1hdHRlclBhcmFtczxSb3csIFJvd1tLXSwgSz4pID0+IEY7XG4gIC8qKlxuICAgKiBDdXN0b20gY2VsbCByZW5kZXJlciBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gZWl0aGVyIGEgc3RyaW5nIG9yIEFuZ3VsYXIgVGVtcGxhdGVSZWYuXG4gICAqIFVzZSBgJGltcGxpY2l0YCBpbiB5b3VyIHRlbXBsYXRlIHRvIHJlY2VpdmUgdGhlIENlbGxDb250ZXh0LlxuICAgKiBOb3RlOiBJZiB2YWx1ZUZvcm1hdHRlciBpcyBwcm92aWRlZCwgcmVuZGVyQ2VsbCByZWNlaXZlcyB0aGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgKi9cbiAgcmVuZGVyQ2VsbD86IChjb250ZXh0OiBDZWxsQ29udGV4dDxSb3csIEY+KSA9PlxuICAgIHwgc3RyaW5nXG4gICAgfCBGbGV4UmVuZGVyQ29tcG9uZW50XG4gICAgfCBUZW1wbGF0ZVJlZjx7XG4gICAgICAgICRpbXBsaWNpdDogQ2VsbENvbnRleHQ8Um93LCBGPjtcbiAgICAgIH0+O1xuICAvKiogRW5hYmxlL2Rpc2FibGUgc29ydGluZyBmb3IgdGhpcyBjb2x1bW4gKi9cbiAgc29ydGFibGU/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIHNvcnRpbmcgZnVuY3Rpb24gb3IgYnVpbHQtaW4gZnVuY3Rpb24gbmFtZSAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBzb3J0aW5nRm4/OiAoKHJvd0E6IGFueSwgcm93QjogYW55LCBjb2x1bW5JZDogc3RyaW5nKSA9PiBudW1iZXIpIHwgc3RyaW5nO1xuICAvKiogU3RhcnQgd2l0aCBkZXNjZW5kaW5nIHNvcnQgZm9yIHRoaXMgY29sdW1uICovXG4gIHNvcnREZXNjRmlyc3Q/OiBib29sZWFuO1xuICAvKiogSW52ZXJ0IHRoZSBzb3J0IG9yZGVyICh1c2VmdWwgZm9yIHJhbmtpbmdzKSAqL1xuICBpbnZlcnRTb3J0aW5nPzogYm9vbGVhbjtcbiAgLyoqIFdoZXJlIHRvIHBsYWNlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gc29ydCAqL1xuICBzb3J0VW5kZWZpbmVkPzogJ2ZpcnN0JyB8ICdsYXN0JyB8IGZhbHNlIHwgLTEgfCAxO1xufVxuXG4vKiogUGFyYW1ldGVycyBmb3IgY3VzdG9tIGNlbGwgcmVuZGVyaW5nIGZ1bmN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdlRhYmxlUmVuZGVyQ2VsbFBhcmFtczxSb3csIFZhbHVlLCBGaWVsZD4ge1xuICAvKiogQ2VsbCB2YWx1ZSAqL1xuICB2YWx1ZTogVmFsdWUgfCBOb0luZmVyPFZhbHVlPjtcbiAgLyoqIFJvdyBkYXRhICovXG4gIHJvdzogUm93O1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBmaWVsZDogRmllbGQ7XG4gIC8qKiBSb3cgaW5kZXggKi9cbiAgcm93SW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB2YWx1ZUZvcm1hdHRlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdlRhYmxlVmFsdWVGb3JtYXR0ZXJQYXJhbXM8Um93LCBWYWx1ZSwgRmllbGQ+IHtcbiAgLyoqIENlbGwgb3JpZ2luYWwgdmFsdWUgKi9cbiAgdmFsdWU6IFZhbHVlO1xuICAvKiogUm93IGRhdGEgKi9cbiAgcm93OiBSb3c7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIGZpZWxkOiBGaWVsZDtcbn1cblxuLyoqXG4gKiBQYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIE52RGF0YXRhYmxlLlxuICogVGhlIHBhZ2luYXRpb24gYmVoYXZpb3IgKGNsaWVudCB2cyBzZXJ2ZXIpIGlzIGRlcml2ZWQgZnJvbSB0aGUgdG9wLWxldmVsIGBtb2RlYCBwcm9wLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE52RGF0YXRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBFbmFibGUgaW5maW5pdGUgc2Nyb2xsIG1vZGUuXG4gICAqIFdoZW4gdHJ1ZSwgcmVxdWlyZXMgdGhlIGNvbXBvbmVudCdzIHRvcC1sZXZlbCBgbW9kZWAgdG8gYmUgc2V0IHRvICdzZXJ2ZXInLlxuICAgKiBEYXRhIGlzIGxvYWRlZCBpbmNyZW1lbnRhbGx5IGFzIHRoZSB1c2VyIHNjcm9sbHMuXG4gICAqL1xuICBpbmZpbml0ZT86IGJvb2xlYW47XG4gIC8qKiBJbml0aWFsIHBhZ2Ugc2l6ZSAoZGVmYXVsdDogMTApICovXG4gIGluaXRpYWxQYWdlU2l6ZT86IG51bWJlcjtcbiAgLyoqIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9ucyAoZGVmYXVsdDogWzEwLCAyMCwgNTAsIDEwMF0pICovXG4gIHBhZ2VTaXplT3B0aW9ucz86IG51bWJlcltdO1xuICAvKiogQ3VzdG9tIGxhYmVscyBmb3IgcGFnaW5hdGlvbiBjb21wb25lbnQgKGkxOG4gc3VwcG9ydCkgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKiBMYWJlbCB0ZW1wbGF0ZSBmb3IgdGhlIHBhZ2UgaW5kaWNhdG9yLiBTdXBwb3J0cyBwbGFjZWhvbGRlcnM6IHtwYWdlSW5kZXh9LCB7cGFnZUNvdW50fSAqL1xuICAgIHBhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIExhYmVsIHRlbXBsYXRlIGZvciB0aGUgdG90YWwgcm93IGNvdW50IGRpc3BsYXkuIFN1cHBvcnRzIHBsYWNlaG9sZGVyOiB7cm93Q291bnR9ICovXG4gICAgdG90YWw/OiBzdHJpbmc7XG4gICAgLyoqIExhYmVsIHRlbXBsYXRlIGZvciB0aGUgcGFnZSBzaXplIGRyb3Bkb3duIG9wdGlvbnMuIFN1cHBvcnRzIHBsYWNlaG9sZGVyOiB7cGFnZVNpemV9ICovXG4gICAgcGFnZVNpemVPcHRpb24/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gU2VydmVyLXNpZGUgKGJ1dHRvbnMpIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIFRvdGFsIG51bWJlciBvZiByb3dzIChmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvbikgKi9cbiAgdG90YWxSb3dDb3VudD86IG51bWJlcjtcbiAgLyoqIFRvdGFsIG51bWJlciBvZiBwYWdlcyAoZm9yIHNlcnZlci1zaWRlIHBhZ2luYXRpb24pICovXG4gIHRvdGFsUGFnZUNvdW50PzogbnVtYmVyO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBwYWdpbmF0aW9uIHN0YXRlIGNoYW5nZXMgKGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKSAqL1xuICBvblBhZ2luYXRpb25DaGFuZ2U/OiAoc3RhdGU6IHtcbiAgICAvKiogQ3VycmVudCBwYWdlIGluZGV4ICovXG4gICAgcGFnZUluZGV4OiBudW1iZXI7XG4gICAgLyoqIEN1cnJlbnQgcGFnZSBzaXplICovXG4gICAgcGFnZVNpemU6IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcblxuICAvLyBJbmZpbml0ZSBzY3JvbGwgc3BlY2lmaWMgcHJvcGVydGllcyAodXNlZCB3aGVuIGluZmluaXRlOiB0cnVlKVxuICAvKiogV2hldGhlciB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBsb2FkIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgZGF0YSBpcyBjdXJyZW50bHkgbG9hZGluZyAoZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIERpc3RhbmNlIGZyb20gYm90dG9tIGluIHBpeGVscyB0byB0cmlnZ2VyIGxvYWQgKGRlZmF1bHQ6IDUwMCkgKi9cbiAgbG9hZE1vcmVUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBDYWxsYmFjayB0byBsb2FkIG1vcmUgZGF0YSAoZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgb25Mb2FkTW9yZT86ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQVBJIGV4cG9zZWQgdG8gcGFnaW5hdGlvbiB0ZW1wbGF0ZSBmb3IgYnVpbGRpbmcgY3VzdG9tIHBhZ2luYXRpb24gVUkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnZEYXRhdGFibGVSZW5kZXJQYWdpbmF0aW9uQVBJIHtcbiAgLyoqIEN1cnJlbnQgcGFnZSBpbmRleCAoemVyby1iYXNlZCkgKi9cbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IHBhZ2Ugc2l6ZSAqL1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHBhZ2VzICovXG4gIHBhZ2VDb3VudDogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHJvd3MgKi9cbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgLyoqIE5hdmlnYXRlIHRvIGZpcnN0IHBhZ2UgKi9cbiAgZmlyc3RQYWdlOiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZSAqL1xuICBwcmV2aW91c1BhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2UgKi9cbiAgbmV4dFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBsYXN0IHBhZ2UgKi9cbiAgbGFzdFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBzcGVjaWZpYyBwYWdlIGJ5IGluZGV4ICovXG4gIHNldFBhZ2VJbmRleDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIC8qKiBDaGFuZ2UgcGFnZSBzaXplICovXG4gIHNldFBhZ2VTaXplOiAoc2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAvKiogV2hldGhlciBwcmV2aW91cyBwYWdlIGlzIGF2YWlsYWJsZSAqL1xuICBjYW5QcmV2aW91c1BhZ2U6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIG5leHQgcGFnZSBpcyBhdmFpbGFibGUgKi9cbiAgY2FuTmV4dFBhZ2U6IGJvb2xlYW47XG4gIC8qKiBMb2FkaW5nIHN0YXRlIChvbmx5IGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIG1vcmUgaXRlbXMgYXJlIGF2YWlsYWJsZSAob25seSBmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTb3J0aW5nIGNvbmZpZ3VyYXRpb24gZm9yIE52RGF0YXRhYmxlLlxuICogVGhlIHNvcnRpbmcgbW9kZSAoY2xpZW50IHZzIHNlcnZlcikgaXMgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnQncyB0b3AtbGV2ZWwgYG1vZGVgIHByb3AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnZEYXRhdGFibGVTb3J0aW5nQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBtdWx0aS1jb2x1bW4gc29ydGluZyB3aXRoIFNoaWZ0K0NsaWNrICovXG4gIGVuYWJsZU11bHRpU29ydD86IGJvb2xlYW47XG4gIC8qKiBBbGxvdyBjeWNsaW5nIHRocm91Z2ggdG8gXCJubyBzb3J0XCIgc3RhdGUgKi9cbiAgZW5hYmxlU29ydGluZ1JlbW92YWw/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBmb3IgbXVsdGktc29ydCAqL1xuICBtYXhNdWx0aVNvcnRDb2xDb3VudD86IG51bWJlcjtcbiAgLyoqIFN0YXJ0IHdpdGggZGVzY2VuZGluZyBzb3J0IGFzIGZpcnN0IHRvZ2dsZSBzdGF0ZSAqL1xuICBzb3J0RGVzY0ZpcnN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgc29ydCBzdGF0ZSAodW5jb250cm9sbGVkKS4gQXBwbGllZCBvbiBmaXJzdCByZW5kZXIgb25seTsgdGhlIHVzZXIgY2FuIHRoZW5cbiAgICogZnJlZWx5IGNoYW5nZSBzb3J0aW5nIHZpYSBoZWFkZXIgY2xpY2tzLiBJZ25vcmVkIHdoZW4gYHNvcnRTdGF0ZWAgaXMgYWxzbyBwcm92aWRlZC5cbiAgICovXG4gIGluaXRpYWxTb3J0U3RhdGU/OiBTb3J0aW5nU3RhdGU7XG4gIC8qKiBDb250cm9sbGVkIHNvcnQgc3RhdGUgKGZvciBzZXJ2ZXItc2lkZSBzb3J0aW5nKSAqL1xuICBzb3J0U3RhdGU/OiBTb3J0aW5nU3RhdGU7XG4gIC8qKiBDYWxsYmFjayB3aGVuIHNvcnRpbmcgY2hhbmdlcyAoZm9yIHNlcnZlci1zaWRlIHNvcnRpbmcpICovXG4gIG9uU29ydGluZ0NoYW5nZT86IChzb3J0aW5nOiBTb3J0aW5nU3RhdGUpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogU29ydGluZyBzdGF0ZSB0eXBlIC0gYXJyYXkgb2Ygc29ydCBkZXNjcmlwdG9yc1xuICovXG5leHBvcnQgdHlwZSBOdkRhdGFUYWJsZVNvcnRpbmdTdGF0ZSA9IFNvcnRpbmdTdGF0ZTtcbiJdfQ==
|
|
601
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnYtZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnYtZGF0YXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsMENBQTBDO0FBQzFDLHdDQUF3QztBQUV4QyxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osZUFBZSxFQUVmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsZ0hBQWdIO0FBQ2hILE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBT3BCLE1BQU0sbUJBQW1CLENBQUM7OztBQUUzQjs7O0dBR0c7QUFzR0gsTUFBTSxPQUFPLFdBQVc7SUFtUXRCLHdDQUF3QztJQUN4QyxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEIsQ0FDeEIsS0FBMkMsRUFDM0MsTUFLQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFNBQWtDLENBQUM7UUFFdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixTQUFTLEdBQUcsS0FBZ0MsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqRSxT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bUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtcmV0dXJucyAqL1xuLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1wYXJhbSAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBFbGVtZW50UmVmLFxuICB2aWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlLFxuICB0eXBlIE52RGF0YXRhYmxlQ2VsbENvbnRleHQsXG59IGZyb20gJy4vbnYtZGF0YXRhYmxlLWNlbGwuZGlyZWN0aXZlJztcblxuLy8gbG9jYWwgY29weSBvZiBAdGFuc3RhY2svYW5ndWxhci10YWJsZSAocmVxdWlyZWQgZm9yIG11bHRpIGFuZ3VsYXIgdmVyc2lvbnMsIHRoZSBidWlsdCB2ZXJzaW9uIGlzIG5vdCB3b3JraW5nKVxuaW1wb3J0IHtcbiAgY3JlYXRlQW5ndWxhclRhYmxlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIGdldFBhZ2luYXRpb25Sb3dNb2RlbCxcbiAgZ2V0U29ydGVkUm93TW9kZWwsXG4gIEZsZXhSZW5kZXJEaXJlY3RpdmUsXG4gIHR5cGUgRmxleFJlbmRlckNvbXBvbmVudCxcbiAgdHlwZSBDb2x1bW5EZWYsXG4gIHR5cGUgQ2VsbENvbnRleHQsXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBOb0luZmVyLFxufSBmcm9tICcuL2RhdGF0YWJsZS51dGlscyc7XG5cbi8qKlxuICogQSBwb3dlcmZ1bCwgZmxleGlibGUgZGF0YXRhYmxlIGNvbXBvbmVudCBidWlsdCBvbiBUYW5TdGFjayBUYWJsZS5cbiAqIFN1cHBvcnRzIGN1c3RvbSBjZWxsIHJlbmRlcmluZywgY29sdW1uIGNvbmZpZ3VyYXRpb24sIHBhZ2luYXRpb24sIGFuZCBmdWxsIFR5cGVTY3JpcHQgdHlwaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kYXRhdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGbGV4UmVuZGVyRGlyZWN0aXZlXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxudi10YWJsZT5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkIFthdHRyLmRhdGEtc3RpY2t5LXRvcF09XCJzdGlja3lIZWFkZXIoKSA/ICd0cnVlJyA6IG51bGxcIj5cbiAgICAgICAgICBAZm9yIChoZWFkZXJHcm91cCBvZiB0YWJsZSgpLmdldEhlYWRlckdyb3VwcygpOyB0cmFjayBoZWFkZXJHcm91cC5pZClcbiAgICAgICAgICB7XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoaGVhZGVyIG9mIGhlYWRlckdyb3VwLmhlYWRlcnM7IHRyYWNrIGhlYWRlci5pZCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtaGVhZGVyLScgKyBoZWFkZXIuaWRcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuc2l6ZVxuICAgICAgICAgICAgICAgICAgPyBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5zaXplICsgJ3B4J1xuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbm8tcmVzaXplXT1cIlxuICAgICAgICAgICAgICAgICFoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5lbmFibGVSZXNpemluZyA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmICghaGVhZGVyLmlzUGxhY2Vob2xkZXIpIHsgQGlmIChoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSkge1xuICAgICAgICAgICAgICA8bnYtdGFibGVoZWFkZXJcbiAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NvcnREaXJlY3Rpb25dPVwiaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpIHx8ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgKHNvcnREaXJlY3Rpb25DaGFuZ2VkKT1cIlxuICAgICAgICAgICAgICAgICAgaGFuZGxlU29ydERpcmVjdGlvbkNoYW5nZWQoJGV2ZW50LCBoZWFkZXIpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciB9fVxuICAgICAgICAgICAgICA8L252LXRhYmxlaGVhZGVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyIH19XG4gICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90aGVhZD5cblxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAocm93IG9mIHRhYmxlKCkuZ2V0Um93TW9kZWwoKS5yb3dzOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtcm93LScgKyBpXCJcbiAgICAgICAgICAgICN0YWJsZVJvd1xuICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1sYXN0XT1cIlxuICAgICAgICAgICAgICBpc0luZmluaXRlU2Nyb2xsKCkgJiYgaSA9PT0gdGFibGUoKS5nZXRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGNlbGwgb2Ygcm93LmdldFZpc2libGVDZWxscygpOyB0cmFjayBjZWxsLmlkKSB7XG4gICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2RhdGF0YWJsZS1jZWxsLScgKyBjZWxsLmNvbHVtbi5pZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKmZsZXhSZW5kZXI9XCJcbiAgICAgICAgICAgICAgICAgIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsO1xuICAgICAgICAgICAgICAgICAgcHJvcHM6IGNlbGwuZ2V0Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgICAgbGV0IGNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNlbGxDb250ZW50IH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9udi10YWJsZT5cblxuICAgIDwhLS0gUmVuZGVyIHBhZ2luYXRpb24gaWYgY29uZmlndXJlZCAtLT5cbiAgICBAaWYgKHBhZ2luYXRpb25BUEkoKSkgeyBAaWYgKHBhZ2luYXRpb25UZW1wbGF0ZSkge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHBhZ2luYXRpb25UZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHBhZ2luYXRpb25BUEkoKSB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIGlmIChtb2RlKCkgPT09ICdjbGllbnQnICYmIHBhZ2luYXRpb24oKSAmJiAhcGFnaW5hdGlvbigpPy5pbmZpbml0ZSlcbiAgICB7XG4gICAgPCEtLSBEZWZhdWx0IHBhZ2luYXRpb24gd2l0aCBudi1wYWdpbmF0aW9udGFibGUgKGNsaWVudCBtb2RlIG9ubHkpIC0tPlxuICAgIDxudi1wYWdpbmF0aW9udGFibGVcbiAgICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdGlvbkFQSSgpIS5wYWdlSW5kZXhcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25BUEkoKSEucGFnZVNpemVcIlxuICAgICAgW3BhZ2VDb3VudF09XCJwYWdpbmF0aW9uQVBJKCkhLnBhZ2VDb3VudFwiXG4gICAgICBbcm93Q291bnRdPVwicGFnaW5hdGlvbkFQSSgpIS5yb3dDb3VudFwiXG4gICAgICBbYXR0ci5sYWJlbC1wYWdlXT1cInBhZ2luYXRpb24oKT8ubGFiZWxzPy5wYWdlIHx8IG51bGxcIlxuICAgICAgW2F0dHIubGFiZWwtdG90YWxdPVwicGFnaW5hdGlvbigpPy5sYWJlbHM/LnRvdGFsIHx8IG51bGxcIlxuICAgICAgW2F0dHIubGFiZWwtcGFnZS1zaXplLW9wdGlvbl09XCJcbiAgICAgICAgcGFnaW5hdGlvbigpPy5sYWJlbHM/LnBhZ2VTaXplT3B0aW9uIHx8IG51bGxcbiAgICAgIFwiXG4gICAgICAocGFnZUluZGV4Q2hhbmdlZCk9XCJwYWdpbmF0aW9uQVBJKCkhLnNldFBhZ2VJbmRleCgkZXZlbnQuZGV0YWlsKVwiXG4gICAgICAocGFnZVNpemVDaGFuZ2VkKT1cInBhZ2luYXRpb25BUEkoKSEuc2V0UGFnZVNpemUoJGV2ZW50LmRldGFpbClcIlxuICAgID48L252LXBhZ2luYXRpb250YWJsZT5cbiAgICB9IH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTnZEYXRhdGFibGU8VD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQ29sdW1uIGRlZmluaXRpb25zICovXG4gIGNvbHVtbnMgPSBpbnB1dDxOdkRhdGF0YWJsZUNvbHVtbjxUPltdPihbXSk7XG4gIC8qKiBSb3cgZGF0YSAqL1xuICByb3dzID0gaW5wdXQ8VFtdPihbXSk7XG4gIC8qKlxuICAgKiBEYXRhIGhhbmRsaW5nIG1vZGUgZm9yIHNvcnRpbmcgYW5kIGZpbHRlcmluZyBvcGVyYXRpb25zLlxuICAgKiAtICdjbGllbnQnOiBBbGwgb3BlcmF0aW9ucyBoYW5kbGVkIGluIGJyb3dzZXIgKGRlZmF1bHQpXG4gICAqIC0gJ3NlcnZlcic6IE9wZXJhdGlvbnMgdHJpZ2dlciBjYWxsYmFja3MgZm9yIHNlcnZlci1zaWRlIGhhbmRsaW5nXG4gICAqL1xuICBtb2RlID0gaW5wdXQ8J2NsaWVudCcgfCAnc2VydmVyJz4oJ2NsaWVudCcpO1xuICAvKiogT3B0aW9uYWwgcGFnaW5hdGlvbiBjb25maWd1cmF0aW9uICovXG4gIHBhZ2luYXRpb24gPSBpbnB1dDxOdkRhdGF0YWJsZVBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBPcHRpb25hbCBzb3J0aW5nIGNvbmZpZ3VyYXRpb24gKi9cbiAgc29ydGluZyA9IGlucHV0PE52RGF0YXRhYmxlU29ydGluZ0NvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIFNob3VsZCB0aGUgaGVhZGVyIHN0aWNrIHRvIHRoZSB0b3Agb2YgdGhlIHRhYmxlIHdoZW4gc2Nyb2xsaW5nPyAqL1xuICBzdGlja3lIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIFRlbXBsYXRlIGZvciBjdXN0b20gcGFnaW5hdGlvbiBVSSAqL1xuICBAQ29udGVudENoaWxkKCdwYWdpbmF0aW9uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2luYXRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICAkaW1wbGljaXQ6IE52RGF0YXRhYmxlUmVuZGVyUGFnaW5hdGlvbkFQSTtcbiAgfT47XG5cbiAgLyoqIENlbGwgdGVtcGxhdGVzIHByb3ZpZGVkIHZpYSBudkRhdGF0YWJsZUNlbGwgZGlyZWN0aXZlICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlKVxuICBjZWxsVGVtcGxhdGVzPzogUXVlcnlMaXN0PE52RGF0YXRhYmxlQ2VsbERpcmVjdGl2ZTxULCBUW2tleW9mIFRdPj47XG5cbiAgLyoqIFNpZ25hbCB0byB0cmFjayBjZWxsIHRlbXBsYXRlcyBhcnJheSAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZXNTaWduYWwgPSBzaWduYWw8XG4gICAgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlPFQsIFRba2V5b2YgVF0+W11cbiAgPihbXSk7XG5cbiAgLyoqIE1hcCBvZiBmaWVsZCBuYW1lcyB0byBjZWxsIHRlbXBsYXRlcyAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZU1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgVGVtcGxhdGVSZWY8TnZEYXRhdGFibGVDZWxsQ29udGV4dDxULCBUW2tleW9mIFRdPj5cbiAgICA+KCk7XG4gICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsKCkuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICBtYXAuc2V0KGRpcmVjdGl2ZS5udkRhdGF0YWJsZUNlbGwsIGRpcmVjdGl2ZS50ZW1wbGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgLyoqIFBhZ2luYXRpb24gc3RhdGUgZm9yIHNlcnZlciBtb2RlICovXG4gIHByaXZhdGUgcGFnaW5hdGlvblN0YXRlID0gc2lnbmFsPFBhZ2luYXRpb25TdGF0ZT4oe1xuICAgIHBhZ2VJbmRleDogMCxcbiAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0aW9uKCk/LmluaXRpYWxQYWdlU2l6ZSB8fCAxMCxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNvcnRpbmcgc3RhdGUuIFdoZW4gc29ydGluZy5zb3J0U3RhdGUgaXMgcHJvdmlkZWQgdGhlIGNvbXBvbmVudCBpcyBjb250cm9sbGVkO1xuICAgKiBpbml0aWFsU29ydFN0YXRlIG9ubHkgc2VlZHMgdGhlIHVuY29udHJvbGxlZCBzdGF0ZSAoc2VlZGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yXG4gICAqIGVmZmVjdCBiZWxvdyDigJQgZmllbGQgaW5pdGlhbGl6ZXJzIHJ1biBiZWZvcmUgaW5wdXRzIGFyZSBib3VuZCkuXG4gICAqL1xuICBwcml2YXRlIHNvcnRpbmdTdGF0ZSA9IHNpZ25hbDxTb3J0aW5nU3RhdGU+KFtdKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRhYmxlIHJvd3MgZm9yIGluZmluaXRlIHNjcm9sbCBvYnNlcnZlciAqL1xuICBwcml2YXRlIHRhYmxlUm93cyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigndGFibGVSb3cnKTtcblxuICAvKiogSW50ZXJzZWN0aW9uIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogSGVscGVyIHRvIGNoZWNrIGlmIHVzaW5nIGluZmluaXRlIHNjcm9sbCAqL1xuICBpc0luZmluaXRlU2Nyb2xsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdpbmF0aW9uKCk/LmluZmluaXRlID09PSB0cnVlKTtcblxuICAvKiogQ29tcHV0ZWQgdGFibGUgY29sdW1ucyB3aXRoIHByb3BlciB0eXBpbmcgYW5kIGZpbHRlcmluZy4gKi9cbiAgdGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8Q29sdW1uRGVmPFQsIFRba2V5b2YgVF0+W10+KCgpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZU1hcCA9IHRoaXMuY2VsbFRlbXBsYXRlTWFwKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKClcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gIWNvbC5oaWRkZW4pXG4gICAgICAubWFwKChjb2wpID0+IHtcbiAgICAgICAgLy8gU2hhcmVkIGNlbGwgcmVuZGVyZXJcbiAgICAgICAgY29uc3QgY2VsbFJlbmRlcmVyID0gKGNvbnRleHQ6IENlbGxDb250ZXh0PFQsIFRba2V5b2YgVF0+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lID0gU3RyaW5nKGNvbC5maWVsZCk7XG4gICAgICAgICAgY29uc3QgY2VsbFRlbXBsYXRlID0gdGVtcGxhdGVNYXAuZ2V0KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgICAvLyBQcmlvcml0eTogdGVtcGxhdGUgPiByZW5kZXJDZWxsID4gZGVmYXVsdFxuICAgICAgICAgIGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFJldHVybiBUZW1wbGF0ZVJlZiBkaXJlY3RseSAtIGdldFZhbHVlKCkgcmV0dXJucyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgICAgICAgIHJldHVybiBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHJlbmRlckNlbGwgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoY29sLnJlbmRlckNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2wucmVuZGVyQ2VsbChjb250ZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEZWZhdWx0OiBqdXN0IHJldHVybiB0aGUgdmFsdWUgKGZvcm1hdHRlZCBpZiB2YWx1ZUZvcm1hdHRlciB3YXMgdXNlZClcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRWYWx1ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZjogQ29sdW1uRGVmPFQsIFRba2V5b2YgVF0+ID0ge1xuICAgICAgICAgIGFjY2Vzc29yS2V5OiBjb2wuZmllbGQsXG4gICAgICAgICAgYWNjZXNzb3JGbjogY29sLnZhbHVlRm9ybWF0dGVyXG4gICAgICAgICAgICA/IChyb3c6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJvd1tjb2wuZmllbGRdO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2wudmFsdWVGb3JtYXR0ZXIhKHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiByYXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGhlYWRlcjogY29sLmhlYWRlck5hbWUgfHwgU3RyaW5nKGNvbC5maWVsZCksXG4gICAgICAgICAgc2l6ZTogY29sLndpZHRoLFxuICAgICAgICAgIGVuYWJsZVJlc2l6aW5nOiBjb2wucmVzaXphYmxlID8/IHRydWUsXG4gICAgICAgICAgLy8gU29ydGluZyBjb25maWd1cmF0aW9uXG4gICAgICAgICAgZW5hYmxlU29ydGluZzogdGhpcy5zb3J0aW5nKCkgPyBjb2wuc29ydGFibGUgPz8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIGNlbGw6IGNlbGxSZW5kZXJlcixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgc29ydGluZyBwcm9wZXJ0aWVzIG9ubHkgaWYgZGVmaW5lZFxuICAgICAgICBpZiAoY29sLnNvcnRpbmdGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRhblN0YWNrIHR5cGluZyBpcyBzdHJpY3QgYnV0IHRoaXMgd29ya3MgYXQgcnVudGltZVxuICAgICAgICAgIGNvbHVtbkRlZi5zb3J0aW5nRm4gPSBjb2wuc29ydGluZ0ZuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2wuc29ydERlc2NGaXJzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29sdW1uRGVmLnNvcnREZXNjRmlyc3QgPSBjb2wuc29ydERlc2NGaXJzdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sLmludmVydFNvcnRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nID0gY29sLmludmVydFNvcnRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbC5zb3J0VW5kZWZpbmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2x1bW5EZWYuc29ydFVuZGVmaW5lZCA9IGNvbC5zb3J0VW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkRlZjtcbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVGFuU3RhY2sgdGFibGUgaW5zdGFuY2Ugd2l0aCBTaWduYWxzICovXG4gIHByaXZhdGUgdGFibGVJbnN0YW5jZSA9IGNyZWF0ZUFuZ3VsYXJUYWJsZSgoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGNvbnN0IHNvcnRpbmdDb25maWcgPSB0aGlzLnNvcnRpbmcoKTtcbiAgICBjb25zdCBjb21wb25lbnRNb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgY29uc3QgaXNTZXJ2ZXJNb2RlID0gY29tcG9uZW50TW9kZSA9PT0gJ3NlcnZlcic7XG4gICAgY29uc3QgaXNJbmZpbml0ZSA9IHBhZ2luYXRpb25Db25maWc/LmluZmluaXRlID09PSB0cnVlO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhc2UgdGFibGUgY29uZmlndXJhdGlvbiB3aXRoIHNvcnRpbmdcbiAgICBjb25zdCBnZXRCYXNlVGFibGVDb25maWcgPSAoKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29uZmlnID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnJvd3MoKSxcbiAgICAgICAgY29sdW1uczogdGhpcy50YWJsZUNvbHVtbnMoKSxcbiAgICAgICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICAgICAgLy8gU29ydGluZyBjb25maWd1cmF0aW9uIC0gdXNlcyB0b3AtbGV2ZWwgbW9kZVxuICAgICAgICAuLi4oc29ydGluZ0NvbmZpZyAmJiB7XG4gICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgIHNvcnRpbmc6XG4gICAgICAgICAgICAgIGlzU2VydmVyTW9kZSAmJiBzb3J0aW5nQ29uZmlnLnNvcnRTdGF0ZVxuICAgICAgICAgICAgICAgID8gc29ydGluZ0NvbmZpZy5zb3J0U3RhdGVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc29ydGluZ1N0YXRlKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblNvcnRpbmdDaGFuZ2U6IChcbiAgICAgICAgICAgIHVwZGF0ZXJPclZhbHVlOlxuICAgICAgICAgICAgICB8IFNvcnRpbmdTdGF0ZVxuICAgICAgICAgICAgICB8ICgob2xkOiBTb3J0aW5nU3RhdGUpID0+IFNvcnRpbmdTdGF0ZSksXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U29ydCA9XG4gICAgICAgICAgICAgIGlzU2VydmVyTW9kZSAmJiBzb3J0aW5nQ29uZmlnLnNvcnRTdGF0ZVxuICAgICAgICAgICAgICAgID8gc29ydGluZ0NvbmZpZy5zb3J0U3RhdGVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc29ydGluZ1N0YXRlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NvcnQgPVxuICAgICAgICAgICAgICB0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHVwZGF0ZXJPclZhbHVlKGN1cnJlbnRTb3J0KVxuICAgICAgICAgICAgICAgIDogdXBkYXRlck9yVmFsdWU7XG5cbiAgICAgICAgICAgIC8vIEFsd2F5cyB1cGRhdGUgaW50ZXJuYWwgc3RhdGUgZm9yIHJlYWN0aXZpdHlcbiAgICAgICAgICAgIHRoaXMuc29ydGluZ1N0YXRlLnNldChuZXdTb3J0KTtcblxuICAgICAgICAgICAgLy8gRm9yIHNlcnZlci1zaWRlIHNvcnRpbmcsIGFsc28gY2FsbCB0aGUgY2FsbGJhY2tcbiAgICAgICAgICAgIGlmIChpc1NlcnZlck1vZGUgJiYgc29ydGluZ0NvbmZpZy5vblNvcnRpbmdDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgc29ydGluZ0NvbmZpZy5vblNvcnRpbmdDaGFuZ2UobmV3U29ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYW51YWxTb3J0aW5nOiBpc1NlcnZlck1vZGUsXG4gICAgICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVNdWx0aVNvcnQ6IHNvcnRpbmdDb25maWcuZW5hYmxlTXVsdGlTb3J0ID8/IGZhbHNlLFxuICAgICAgICAgIGVuYWJsZVNvcnRpbmdSZW1vdmFsOiBzb3J0aW5nQ29uZmlnLmVuYWJsZVNvcnRpbmdSZW1vdmFsID8/IHRydWUsXG4gICAgICAgICAgbWF4TXVsdGlTb3J0Q29sQ291bnQ6IHNvcnRpbmdDb25maWcubWF4TXVsdGlTb3J0Q29sQ291bnQsXG4gICAgICAgICAgc29ydERlc2NGaXJzdDogc29ydGluZ0NvbmZpZy5zb3J0RGVzY0ZpcnN0ID8/IGZhbHNlLFxuICAgICAgICAgIC8vIFdoZW4gbXVsdGktc29ydCBpcyBlbmFibGVkLCB0cmVhdCBhbGwgY2xpY2tzIGFzIG11bHRpLXNvcnQgZXZlbnRzXG4gICAgICAgICAgaXNNdWx0aVNvcnRFdmVudDogc29ydGluZ0NvbmZpZy5lbmFibGVNdWx0aVNvcnRcbiAgICAgICAgICAgID8gKCkgPT4gdHJ1ZVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZ2V0U29ydGVkUm93TW9kZWw6ICFpc1NlcnZlck1vZGUgPyBnZXRTb3J0ZWRSb3dNb2RlbCgpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBiYXNlQ29uZmlnO1xuICAgIH07XG5cbiAgICAvLyBJbmZpbml0ZSBzY3JvbGwgbW9kZSAocmVxdWlyZXMgc2VydmVyIG1vZGUpXG4gICAgaWYgKGlzSW5maW5pdGUpIHtcbiAgICAgIC8vIE5vIHBhZ2luYXRpb24gcm93IG1vZGVsIGZvciBpbmZpbml0ZSBzY3JvbGwgLSBzaW1wbGUgY29uZmlnXG4gICAgICByZXR1cm4gZ2V0QmFzZVRhYmxlQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgLy8gTm8gcGFnaW5hdGlvbiBjb25maWd1cmVkXG4gICAgaWYgKCFwYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICByZXR1cm4gZ2V0QmFzZVRhYmxlQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgLy8gQ2xpZW50LXNpZGUgcGFnaW5hdGlvblxuICAgIGlmICghaXNTZXJ2ZXJNb2RlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nZXRCYXNlVGFibGVDb25maWcoKSxcbiAgICAgICAgZ2V0UGFnaW5hdGlvblJvd01vZGVsOiBnZXRQYWdpbmF0aW9uUm93TW9kZWwoKSxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb25Db25maWcuaW5pdGlhbFBhZ2VTaXplIHx8IDEwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFNlcnZlci1zaWRlIHBhZ2luYXRpb24gLSBtYW51YWwgcGFnaW5hdGlvbiB3aXRoIHJlYWN0aXZlIHN0YXRlXG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IGdldEJhc2VUYWJsZUNvbmZpZygpO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUoKS5wYWdlU2l6ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZUNvbmZpZyxcbiAgICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgICBwYWdlQ291bnQ6XG4gICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxQYWdlQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VDb3VudFxuICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJvd0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IE1hdGguY2VpbChwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUm93Q291bnQgLyBwYWdlU2l6ZSlcbiAgICAgICAgICA6IC0xLFxuICAgICAgc3RhdGU6IHtcbiAgICAgICAgcGFnaW5hdGlvbjogdGhpcy5wYWdpbmF0aW9uU3RhdGUoKSxcbiAgICAgICAgLi4uKGJhc2VDb25maWcuc3RhdGUgJiYgeyBzb3J0aW5nOiBiYXNlQ29uZmlnLnN0YXRlLnNvcnRpbmcgfSksXG4gICAgICB9LFxuICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlOiAoXG4gICAgICAgIHVwZGF0ZXJPclZhbHVlOlxuICAgICAgICAgIHwgUGFnaW5hdGlvblN0YXRlXG4gICAgICAgICAgfCAoKG9sZDogUGFnaW5hdGlvblN0YXRlKSA9PiBQYWdpbmF0aW9uU3RhdGUpLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID1cbiAgICAgICAgICB0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gdXBkYXRlck9yVmFsdWUodGhpcy5wYWdpbmF0aW9uU3RhdGUoKSlcbiAgICAgICAgICAgIDogdXBkYXRlck9yVmFsdWU7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU3RhdGUuc2V0KG5ld1N0YXRlKTtcblxuICAgICAgICAvLyBDYWxsIHVzZXIncyBjYWxsYmFjayBmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvblxuICAgICAgICBpZiAocGFnaW5hdGlvbkNvbmZpZy5vblBhZ2luYXRpb25DaGFuZ2UpIHtcbiAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uUGFnaW5hdGlvbkNoYW5nZSh7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcblxuICAvKiogUHVibGljIGdldHRlciBmb3IgdGFibGUgaW5zdGFuY2UuICovXG4gIHRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSW5zdGFuY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgc29ydCBkaXJlY3Rpb24gY2hhbmdlIGZyb20gdGFibGUgaGVhZGVyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IFRoZSBzb3J0IGRpcmVjdGlvbiBjaGFuZ2UgZXZlbnQgb3IgZGlyZWN0aW9uIHN0cmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gaGVhZGVyIFRoZSB0YWJsZSBoZWFkZXIgb2JqZWN0XG4gICAqL1xuICBoYW5kbGVTb3J0RGlyZWN0aW9uQ2hhbmdlZChcbiAgICBldmVudDogRXZlbnQgfCBDdXN0b21FdmVudDxzdHJpbmc+IHwgc3RyaW5nLFxuICAgIGhlYWRlcjoge1xuICAgICAgY29sdW1uOiB7XG4gICAgICAgIGNsZWFyU29ydGluZzogKCkgPT4gdm9pZDtcbiAgICAgICAgdG9nZ2xlU29ydGluZzogKGRlc2M/OiBib29sZWFuLCBtdWx0aT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgICB9O1xuICAgIH0sXG4gICkge1xuICAgIC8vIEV4dHJhY3QgZGlyZWN0aW9uIGZyb20gZXZlbnQgb3IgdXNlIGRpcmVjdGx5IGlmIHN0cmluZ1xuICAgIGxldCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuXG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50IGFzICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAoJ2RldGFpbCcgaW4gZXZlbnQgJiYgdHlwZW9mIGV2ZW50LmRldGFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50LmRldGFpbCBhcyAnYXNjJyB8ICdkZXNjJyB8ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgLSBzaG91bGRuJ3QgaGFwcGVuIGJ1dCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVW5leHBlY3RlZCBldmVudCB0eXBlIGluIGhhbmRsZVNvcnREaXJlY3Rpb25DaGFuZ2VkOicsXG4gICAgICAgIGV2ZW50LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0aW5nQ29uZmlnID0gdGhpcy5zb3J0aW5nKCk7XG5cbiAgICAvLyBDaGVjayBpZiBtdWx0aS1zb3J0IGlzIGVuYWJsZWRcbiAgICBjb25zdCBpc011bHRpU29ydCA9IHNvcnRpbmdDb25maWc/LmVuYWJsZU11bHRpU29ydCA/PyBmYWxzZTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdub25lJykge1xuICAgICAgLy8gQ2xlYXIgdGhpcyBjb2x1bW4ncyBzb3J0XG4gICAgICBoZWFkZXIuY29sdW1uLmNsZWFyU29ydGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb2dnbGUgc29ydCAtIFRhblN0YWNrIHdpbGwgaGFuZGxlIHRoZSBsb2dpYyBpbnRlcm5hbGx5XG4gICAgICBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoZGlyZWN0aW9uID09PSAnZGVzYycsIGlzTXVsdGlTb3J0KTtcbiAgICB9XG4gIH1cblxuICAvKiogQnVpbGQgcGFnaW5hdGlvbiBBUEkgZm9yIHRlbXBsYXRlICovXG4gIHBhZ2luYXRpb25BUEkgPSBjb21wdXRlZDxOdkRhdGF0YWJsZVJlbmRlclBhZ2luYXRpb25BUEkgfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGlmICghcGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50TW9kZSA9IHRoaXMubW9kZSgpO1xuICAgIGNvbnN0IGlzU2VydmVyTW9kZSA9IGNvbXBvbmVudE1vZGUgPT09ICdzZXJ2ZXInO1xuICAgIGNvbnN0IGlzSW5maW5pdGUgPSBwYWdpbmF0aW9uQ29uZmlnLmluZmluaXRlID09PSB0cnVlO1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZSgpO1xuICAgIGNvbnN0IHRhYmxlUGFnaW5hdGlvblN0YXRlID0gdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uO1xuICAgIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuICAgIGNvbnN0IHJvd0NvdW50ID0gaXNTZXJ2ZXJNb2RlXG4gICAgICA/IHBhZ2luYXRpb25Db25maWcudG90YWxSb3dDb3VudCB8fCB0aGlzLnJvd3MoKS5sZW5ndGhcbiAgICAgIDogdGhpcy5yb3dzKCkubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VJbmRleDogdGFibGVQYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4LFxuICAgICAgcGFnZVNpemU6IHRhYmxlUGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplLFxuICAgICAgcGFnZUNvdW50LFxuICAgICAgcm93Q291bnQsXG4gICAgICBmaXJzdFBhZ2U6ICgpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKSxcbiAgICAgIHByZXZpb3VzUGFnZTogKCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCksXG4gICAgICBuZXh0UGFnZTogKCkgPT4gdGFibGUubmV4dFBhZ2UoKSxcbiAgICAgIGxhc3RQYWdlOiAoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSksXG4gICAgICBzZXRQYWdlSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoaW5kZXgpLFxuICAgICAgc2V0UGFnZVNpemU6IChzaXplOiBudW1iZXIpID0+IHRhYmxlLnNldFBhZ2VTaXplKHNpemUpLFxuICAgICAgY2FuUHJldmlvdXNQYWdlOiB0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKSxcbiAgICAgIGNhbk5leHRQYWdlOiB0YWJsZS5nZXRDYW5OZXh0UGFnZSgpLFxuICAgICAgaXNMb2FkaW5nOiBpc0luZmluaXRlID8gcGFnaW5hdGlvbkNvbmZpZy5pc0xvYWRpbmcgOiB1bmRlZmluZWQsXG4gICAgICBoYXNNb3JlOiBpc0luZmluaXRlID8gcGFnaW5hdGlvbkNvbmZpZy5oYXNNb3JlIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNlZWQgc29ydGluZ1N0YXRlIGZyb20gc29ydFN0YXRlIC8gaW5pdGlhbFNvcnRTdGF0ZSBvbmNlIHRoZSBzb3J0aW5nIGlucHV0XG4gICAgLy8gaXMgYm91bmQuIEZpZWxkIGluaXRpYWxpemVycyBydW4gYmVmb3JlIGlucHV0cyBhcmUgc2V0LCBzbyB3ZSBjYW4ndCBkbyB0aGlzXG4gICAgLy8gaW5saW5lIGluIHRoZSBzaWduYWwgZGVmaW5pdGlvbi5cbiAgICBsZXQgc29ydGluZ1NlZWRlZCA9IGZhbHNlO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHNvcnRpbmdTZWVkZWQpIHJldHVybjtcbiAgICAgICAgY29uc3Qgc29ydGluZyA9IHRoaXMuc29ydGluZygpO1xuICAgICAgICBpZiAoc29ydGluZyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIHNvcnRpbmdTZWVkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBzZWVkID0gc29ydGluZy5zb3J0U3RhdGUgPz8gc29ydGluZy5pbml0aWFsU29ydFN0YXRlO1xuICAgICAgICBpZiAoc2VlZCAmJiBzZWVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNvcnRpbmdTdGF0ZS5zZXQoc2VlZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIFZhbGlkYXRlIGluZmluaXRlIHNjcm9sbCByZXF1aXJlcyBzZXJ2ZXIgbW9kZVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgICBjb25zdCBjb21wb25lbnRNb2RlID0gdGhpcy5tb2RlKCk7XG5cbiAgICAgIGlmIChwYWdpbmF0aW9uQ29uZmlnPy5pbmZpbml0ZSA9PT0gdHJ1ZSAmJiBjb21wb25lbnRNb2RlICE9PSAnc2VydmVyJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1tOdkRhdGF0YWJsZV0gcGFnaW5hdGlvbi5pbmZpbml0ZT10cnVlIHJlcXVpcmVzIG1vZGU9XCJzZXJ2ZXJcIi4gJyArXG4gICAgICAgICAgICAnSW5maW5pdGUgc2Nyb2xsIHJlbGllcyBvbiBzZXJ2ZXItc2lkZSBkYXRhIGxvYWRpbmcuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNldCB1cCBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZm9yIGluZmluaXRlIHNjcm9sbFxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7IC8vIFRyYWNrIHJvd3MgY2hhbmdlc1xuICAgICAgICBjb25zdCBpc0luZmluaXRlID0gcGFnaW5hdGlvbkNvbmZpZz8uaW5maW5pdGUgPT09IHRydWU7XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3Rpbmcgb2JzZXJ2ZXJcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHVwIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgbW9kZVxuICAgICAgICBpZiAoIWlzSW5maW5pdGUgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBlbnN1cmUgRE9NIGlzIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGhyZXNob2xkID0gcGFnaW5hdGlvbkNvbmZpZy5sb2FkTW9yZVRocmVzaG9sZCB8fCA1MDA7XG5cbiAgICAgICAgICAvLyBGaW5kIHRoZSBsYXN0IHJvdyBlbGVtZW50XG4gICAgICAgICAgY29uc3QgdGFibGVSb3dFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAnW2RhdGEtaXMtbGFzdD1cInRydWVcIl0nLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbGFzdFJvd0VsZW1lbnQgPSB0YWJsZVJvd0VsZW1lbnRzW3RhYmxlUm93RWxlbWVudHMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICBpZiAoIWxhc3RSb3dFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5oYXNNb3JlICYmXG4gICAgICAgICAgICAgICAgIXBhZ2luYXRpb25Db25maWcuaXNMb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5vbkxvYWRNb3JlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcub25Mb2FkTW9yZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByb290TWFyZ2luOiBgJHt0aHJlc2hvbGR9cHhgLFxuICAgICAgICAgICAgICByb290OiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGxhc3RSb3dFbGVtZW50KTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gU3luYyBjZWxsIHRlbXBsYXRlcyBRdWVyeUxpc3QgdG8gc2lnbmFsXG4gICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlcykge1xuICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsLnNldCh0aGlzLmNlbGxUZW1wbGF0ZXMudG9BcnJheSgpKTtcblxuICAgICAgLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gdGhlIFF1ZXJ5TGlzdFxuICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2VsbFRlbXBsYXRlcykge1xuICAgICAgICAgIHRoaXMuY2VsbFRlbXBsYXRlc1NpZ25hbC5zZXQodGhpcy5jZWxsVGVtcGxhdGVzLnRvQXJyYXkoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFVUSUxTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJvbmdseS10eXBlZCBjb2x1bW4gZmFjdG9yeSBmb3IgYSBnaXZlbiByb3cgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgUm93IFRoZSByb3cgZGF0YSB0eXBlIChlLmcuLCBgUHJvZHVjdGApXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNvbHVtbiBkZWZpbml0aW9uIGFuZCBpbmZlcnM6XG4gKiAtIGBLYCBhcyB0aGUgZmllbGQga2V5IChga2V5b2YgUm93YClcbiAqIC0gYEZgIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBgdmFsdWVGb3JtYXR0ZXJgIChkZWZhdWx0cyB0byBgUm93W0tdYClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIERlZmluZSB5b3VyIHJvdyB0eXBlXG4gKiBpbnRlcmZhY2UgUHJvZHVjdCB7XG4gKiAgIG5hbWU6IHN0cmluZztcbiAqICAgcHJpY2U6IG51bWJlcjtcbiAqIH1cbiAqXG4gKiBjb25zdCBjb2wgPSBtYWtlQ29sdW1uPFByb2R1Y3Q+KCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29sdW1uPFJvdz4oKSB7XG4gIHJldHVybiBmdW5jdGlvbiBkZWZpbmU8SyBleHRlbmRzIGtleW9mIFJvdywgRiA9IFJvd1tLXT4oXG4gICAgY29sOiBOdkRhdGF0YWJsZUNvbHVtbjxSb3csIEssIEY+LFxuICApIHtcbiAgICByZXR1cm4gY29sIGFzIHVua25vd24gYXMgTnZEYXRhdGFibGVDb2x1bW48Um93PjtcbiAgfTtcbn1cblxuZXhwb3J0IHsgZmxleFJlbmRlckNvbXBvbmVudCBhcyBudkRhdGF0YWJsZVJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0YXRhYmxlLnV0aWxzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUWVBFUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmV4cG9ydCB0eXBlIHsgQ2VsbENvbnRleHQgYXMgTnZEYXRhdGFibGVDZWxsQ29udGV4dCB9O1xuXG4vKiogQ29sdW1uIGRlZmluaXRpb24gZm9yIE52RGF0YXRhYmxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZUNvbHVtbjxcbiAgUm93LFxuICBLIGV4dGVuZHMga2V5b2YgUm93ID0ga2V5b2YgUm93LFxuICBGID0gUm93W0tdLFxuPiB7XG4gIC8qKiBGaWVsZCBuYW1lIGZyb20gcm93IGRhdGEgKi9cbiAgZmllbGQ6IEs7XG4gIC8qKiBEaXNwbGF5IG5hbWUgZm9yIGNvbHVtbiBoZWFkZXIgKi9cbiAgaGVhZGVyTmFtZT86IHN0cmluZztcbiAgLyoqIENvbHVtbiB3aWR0aCBpbiBwaXhlbHMgKi9cbiAgd2lkdGg/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIGNvbHVtbiBpcyByZXNpemFibGUgKi9cbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgY29sdW1uIGlzIGhpZGRlbiAqL1xuICBoaWRkZW4/OiBib29sZWFuO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRoZSByYXcgdmFsdWUgYmVmb3JlIHJlbmRlcmluZy4gUmVjZWl2ZXMgdGhlIGNlbGwgdmFsdWUgYW5kIGZ1bGwgcm93IG9iamVjdC5cbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGZvcm1hdHRpbmcgZGF0ZXMsIGNvbnZlcnRpbmcgYXJyYXlzIHRvIHN0cmluZ3MsIGFjY2Vzc2luZyBuZXN0ZWQgb2JqZWN0cywgZXRjLlxuICAgKiBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgaXMgdGhlbiBwYXNzZWQgdG8gcmVuZGVyQ2VsbCBvciB0ZW1wbGF0ZXMuXG4gICAqL1xuICB2YWx1ZUZvcm1hdHRlcj86IChwYXJhbXM6IE52VGFibGVWYWx1ZUZvcm1hdHRlclBhcmFtczxSb3csIFJvd1tLXSwgSz4pID0+IEY7XG4gIC8qKlxuICAgKiBDdXN0b20gY2VsbCByZW5kZXJlciBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gZWl0aGVyIGEgc3RyaW5nIG9yIEFuZ3VsYXIgVGVtcGxhdGVSZWYuXG4gICAqIFVzZSBgJGltcGxpY2l0YCBpbiB5b3VyIHRlbXBsYXRlIHRvIHJlY2VpdmUgdGhlIENlbGxDb250ZXh0LlxuICAgKiBOb3RlOiBJZiB2YWx1ZUZvcm1hdHRlciBpcyBwcm92aWRlZCwgcmVuZGVyQ2VsbCByZWNlaXZlcyB0aGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgKi9cbiAgcmVuZGVyQ2VsbD86IChjb250ZXh0OiBDZWxsQ29udGV4dDxSb3csIEY+KSA9PlxuICAgIHwgc3RyaW5nXG4gICAgfCBGbGV4UmVuZGVyQ29tcG9uZW50XG4gICAgfCBUZW1wbGF0ZVJlZjx7XG4gICAgICAgICRpbXBsaWNpdDogQ2VsbENvbnRleHQ8Um93LCBGPjtcbiAgICAgIH0+O1xuICAvKiogRW5hYmxlL2Rpc2FibGUgc29ydGluZyBmb3IgdGhpcyBjb2x1bW4gKi9cbiAgc29ydGFibGU/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIHNvcnRpbmcgZnVuY3Rpb24gb3IgYnVpbHQtaW4gZnVuY3Rpb24gbmFtZSAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBzb3J0aW5nRm4/OiAoKHJvd0E6IGFueSwgcm93QjogYW55LCBjb2x1bW5JZDogc3RyaW5nKSA9PiBudW1iZXIpIHwgc3RyaW5nO1xuICAvKiogU3RhcnQgd2l0aCBkZXNjZW5kaW5nIHNvcnQgZm9yIHRoaXMgY29sdW1uICovXG4gIHNvcnREZXNjRmlyc3Q/OiBib29sZWFuO1xuICAvKiogSW52ZXJ0IHRoZSBzb3J0IG9yZGVyICh1c2VmdWwgZm9yIHJhbmtpbmdzKSAqL1xuICBpbnZlcnRTb3J0aW5nPzogYm9vbGVhbjtcbiAgLyoqIFdoZXJlIHRvIHBsYWNlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gc29ydCAqL1xuICBzb3J0VW5kZWZpbmVkPzogJ2ZpcnN0JyB8ICdsYXN0JyB8IGZhbHNlIHwgLTEgfCAxO1xufVxuXG4vKiogUGFyYW1ldGVycyBmb3IgY3VzdG9tIGNlbGwgcmVuZGVyaW5nIGZ1bmN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdlRhYmxlUmVuZGVyQ2VsbFBhcmFtczxSb3csIFZhbHVlLCBGaWVsZD4ge1xuICAvKiogQ2VsbCB2YWx1ZSAqL1xuICB2YWx1ZTogVmFsdWUgfCBOb0luZmVyPFZhbHVlPjtcbiAgLyoqIFJvdyBkYXRhICovXG4gIHJvdzogUm93O1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBmaWVsZDogRmllbGQ7XG4gIC8qKiBSb3cgaW5kZXggKi9cbiAgcm93SW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB2YWx1ZUZvcm1hdHRlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdlRhYmxlVmFsdWVGb3JtYXR0ZXJQYXJhbXM8Um93LCBWYWx1ZSwgRmllbGQ+IHtcbiAgLyoqIENlbGwgb3JpZ2luYWwgdmFsdWUgKi9cbiAgdmFsdWU6IFZhbHVlO1xuICAvKiogUm93IGRhdGEgKi9cbiAgcm93OiBSb3c7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIGZpZWxkOiBGaWVsZDtcbn1cblxuLyoqXG4gKiBQYWdpbmF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIE52RGF0YXRhYmxlLlxuICogVGhlIHBhZ2luYXRpb24gYmVoYXZpb3IgKGNsaWVudCB2cyBzZXJ2ZXIpIGlzIGRlcml2ZWQgZnJvbSB0aGUgdG9wLWxldmVsIGBtb2RlYCBwcm9wLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE52RGF0YXRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBFbmFibGUgaW5maW5pdGUgc2Nyb2xsIG1vZGUuXG4gICAqIFdoZW4gdHJ1ZSwgcmVxdWlyZXMgdGhlIGNvbXBvbmVudCdzIHRvcC1sZXZlbCBgbW9kZWAgdG8gYmUgc2V0IHRvICdzZXJ2ZXInLlxuICAgKiBEYXRhIGlzIGxvYWRlZCBpbmNyZW1lbnRhbGx5IGFzIHRoZSB1c2VyIHNjcm9sbHMuXG4gICAqL1xuICBpbmZpbml0ZT86IGJvb2xlYW47XG4gIC8qKiBJbml0aWFsIHBhZ2Ugc2l6ZSAoZGVmYXVsdDogMTApICovXG4gIGluaXRpYWxQYWdlU2l6ZT86IG51bWJlcjtcbiAgLyoqIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9ucyAoZGVmYXVsdDogWzEwLCAyMCwgNTAsIDEwMF0pICovXG4gIHBhZ2VTaXplT3B0aW9ucz86IG51bWJlcltdO1xuICAvKiogQ3VzdG9tIGxhYmVscyBmb3IgcGFnaW5hdGlvbiBjb21wb25lbnQgKGkxOG4gc3VwcG9ydCkgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKiBMYWJlbCB0ZW1wbGF0ZSBmb3IgdGhlIHBhZ2UgaW5kaWNhdG9yLiBTdXBwb3J0cyBwbGFjZWhvbGRlcnM6IHtwYWdlSW5kZXh9LCB7cGFnZUNvdW50fSAqL1xuICAgIHBhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIExhYmVsIHRlbXBsYXRlIGZvciB0aGUgdG90YWwgcm93IGNvdW50IGRpc3BsYXkuIFN1cHBvcnRzIHBsYWNlaG9sZGVyOiB7cm93Q291bnR9ICovXG4gICAgdG90YWw/OiBzdHJpbmc7XG4gICAgLyoqIExhYmVsIHRlbXBsYXRlIGZvciB0aGUgcGFnZSBzaXplIGRyb3Bkb3duIG9wdGlvbnMuIFN1cHBvcnRzIHBsYWNlaG9sZGVyOiB7cGFnZVNpemV9ICovXG4gICAgcGFnZVNpemVPcHRpb24/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gU2VydmVyLXNpZGUgKGJ1dHRvbnMpIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIFRvdGFsIG51bWJlciBvZiByb3dzIChmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvbikgKi9cbiAgdG90YWxSb3dDb3VudD86IG51bWJlcjtcbiAgLyoqIFRvdGFsIG51bWJlciBvZiBwYWdlcyAoZm9yIHNlcnZlci1zaWRlIHBhZ2luYXRpb24pICovXG4gIHRvdGFsUGFnZUNvdW50PzogbnVtYmVyO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBwYWdpbmF0aW9uIHN0YXRlIGNoYW5nZXMgKGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKSAqL1xuICBvblBhZ2luYXRpb25DaGFuZ2U/OiAoc3RhdGU6IHtcbiAgICAvKiogQ3VycmVudCBwYWdlIGluZGV4ICovXG4gICAgcGFnZUluZGV4OiBudW1iZXI7XG4gICAgLyoqIEN1cnJlbnQgcGFnZSBzaXplICovXG4gICAgcGFnZVNpemU6IG51bWJlcjtcbiAgfSkgPT4gdm9pZDtcblxuICAvLyBJbmZpbml0ZSBzY3JvbGwgc3BlY2lmaWMgcHJvcGVydGllcyAodXNlZCB3aGVuIGluZmluaXRlOiB0cnVlKVxuICAvKiogV2hldGhlciB0aGVyZSBhcmUgbW9yZSBpdGVtcyB0byBsb2FkIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgZGF0YSBpcyBjdXJyZW50bHkgbG9hZGluZyAoZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIERpc3RhbmNlIGZyb20gYm90dG9tIGluIHBpeGVscyB0byB0cmlnZ2VyIGxvYWQgKGRlZmF1bHQ6IDUwMCkgKi9cbiAgbG9hZE1vcmVUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBDYWxsYmFjayB0byBsb2FkIG1vcmUgZGF0YSAoZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgb25Mb2FkTW9yZT86ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQVBJIGV4cG9zZWQgdG8gcGFnaW5hdGlvbiB0ZW1wbGF0ZSBmb3IgYnVpbGRpbmcgY3VzdG9tIHBhZ2luYXRpb24gVUkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnZEYXRhdGFibGVSZW5kZXJQYWdpbmF0aW9uQVBJIHtcbiAgLyoqIEN1cnJlbnQgcGFnZSBpbmRleCAoemVyby1iYXNlZCkgKi9cbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IHBhZ2Ugc2l6ZSAqL1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHBhZ2VzICovXG4gIHBhZ2VDb3VudDogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHJvd3MgKi9cbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgLyoqIE5hdmlnYXRlIHRvIGZpcnN0IHBhZ2UgKi9cbiAgZmlyc3RQYWdlOiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZSAqL1xuICBwcmV2aW91c1BhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2UgKi9cbiAgbmV4dFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBsYXN0IHBhZ2UgKi9cbiAgbGFzdFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBzcGVjaWZpYyBwYWdlIGJ5IGluZGV4ICovXG4gIHNldFBhZ2VJbmRleDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIC8qKiBDaGFuZ2UgcGFnZSBzaXplICovXG4gIHNldFBhZ2VTaXplOiAoc2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAvKiogV2hldGhlciBwcmV2aW91cyBwYWdlIGlzIGF2YWlsYWJsZSAqL1xuICBjYW5QcmV2aW91c1BhZ2U6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIG5leHQgcGFnZSBpcyBhdmFpbGFibGUgKi9cbiAgY2FuTmV4dFBhZ2U6IGJvb2xlYW47XG4gIC8qKiBMb2FkaW5nIHN0YXRlIChvbmx5IGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIG1vcmUgaXRlbXMgYXJlIGF2YWlsYWJsZSAob25seSBmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBoYXNNb3JlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTb3J0aW5nIGNvbmZpZ3VyYXRpb24gZm9yIE52RGF0YXRhYmxlLlxuICogVGhlIHNvcnRpbmcgbW9kZSAoY2xpZW50IHZzIHNlcnZlcikgaXMgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnQncyB0b3AtbGV2ZWwgYG1vZGVgIHByb3AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnZEYXRhdGFibGVTb3J0aW5nQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBtdWx0aS1jb2x1bW4gc29ydGluZyB3aXRoIFNoaWZ0K0NsaWNrICovXG4gIGVuYWJsZU11bHRpU29ydD86IGJvb2xlYW47XG4gIC8qKiBBbGxvdyBjeWNsaW5nIHRocm91Z2ggdG8gXCJubyBzb3J0XCIgc3RhdGUgKi9cbiAgZW5hYmxlU29ydGluZ1JlbW92YWw/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBmb3IgbXVsdGktc29ydCAqL1xuICBtYXhNdWx0aVNvcnRDb2xDb3VudD86IG51bWJlcjtcbiAgLyoqIFN0YXJ0IHdpdGggZGVzY2VuZGluZyBzb3J0IGFzIGZpcnN0IHRvZ2dsZSBzdGF0ZSAqL1xuICBzb3J0RGVzY0ZpcnN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluaXRpYWwgc29ydCBzdGF0ZSAodW5jb250cm9sbGVkKS4gQXBwbGllZCBvbiBmaXJzdCByZW5kZXIgb25seTsgdGhlIHVzZXIgY2FuIHRoZW5cbiAgICogZnJlZWx5IGNoYW5nZSBzb3J0aW5nIHZpYSBoZWFkZXIgY2xpY2tzLiBJZ25vcmVkIHdoZW4gYHNvcnRTdGF0ZWAgaXMgYWxzbyBwcm92aWRlZC5cbiAgICovXG4gIGluaXRpYWxTb3J0U3RhdGU/OiBTb3J0aW5nU3RhdGU7XG4gIC8qKiBDb250cm9sbGVkIHNvcnQgc3RhdGUgKGZvciBzZXJ2ZXItc2lkZSBzb3J0aW5nKSAqL1xuICBzb3J0U3RhdGU/OiBTb3J0aW5nU3RhdGU7XG4gIC8qKiBDYWxsYmFjayB3aGVuIHNvcnRpbmcgY2hhbmdlcyAoZm9yIHNlcnZlci1zaWRlIHNvcnRpbmcpICovXG4gIG9uU29ydGluZ0NoYW5nZT86IChzb3J0aW5nOiBTb3J0aW5nU3RhdGUpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogU29ydGluZyBzdGF0ZSB0eXBlIC0gYXJyYXkgb2Ygc29ydCBkZXNjcmlwdG9yc1xuICovXG5leHBvcnQgdHlwZSBOdkRhdGFUYWJsZVNvcnRpbmdTdGF0ZSA9IFNvcnRpbmdTdGF0ZTtcbiJdfQ==
|