@po-ui/ng-components 15.0.0 → 15.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +8 -1
- package/esm2020/lib/components/po-widget/po-widget.component.mjs +3 -3
- package/fesm2015/po-ui-ng-components.mjs +9 -3
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +9 -3
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-15.0.1.tgz +0 -0
- package/schematics/migrations.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-15.0.0.tgz +0 -0
|
@@ -622,6 +622,7 @@ export class PoComboBaseComponent {
|
|
|
622
622
|
else {
|
|
623
623
|
this.updateSelectedValue(null);
|
|
624
624
|
this.updateComboList();
|
|
625
|
+
this.updateHasNext();
|
|
625
626
|
}
|
|
626
627
|
}
|
|
627
628
|
// Função implementada do ControlValueAccessor
|
|
@@ -652,6 +653,7 @@ export class PoComboBaseComponent {
|
|
|
652
653
|
this.updateSelectedValue(null);
|
|
653
654
|
this.updateComboList();
|
|
654
655
|
this.initInputObservable();
|
|
656
|
+
this.updateHasNext();
|
|
655
657
|
}
|
|
656
658
|
configAfterSetFilterService(service) {
|
|
657
659
|
if (service) {
|
|
@@ -793,6 +795,11 @@ export class PoComboBaseComponent {
|
|
|
793
795
|
return this.updateSelectedValue(oldOption);
|
|
794
796
|
}
|
|
795
797
|
}
|
|
798
|
+
updateHasNext() {
|
|
799
|
+
if (this.service && this.infiniteScroll) {
|
|
800
|
+
this.defaultService.hasNext = true;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
796
803
|
}
|
|
797
804
|
PoComboBaseComponent.ɵfac = function PoComboBaseComponent_Factory(t) { return new (t || PoComboBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
|
|
798
805
|
PoComboBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoComboBaseComponent, inputs: { autoFocus: ["p-auto-focus", "autoFocus"], label: ["p-label", "label"], help: ["p-help", "help"], name: "name", filterService: ["p-filter-service", "filterService"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], icon: ["p-icon", "icon"], optional: ["p-optional", "optional"], clean: ["p-clean", "clean"], emitObjectValue: ["p-emit-object-value", "emitObjectValue"], disabledTabFilter: ["p-disabled-tab-filter", "disabledTabFilter"], placeholder: ["p-placeholder", "placeholder"], debounceTime: ["p-debounce-time", "debounceTime"], disabledInitFilter: ["p-disabled-init-filter", "disabledInitFilter"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], filterMinlength: ["p-filter-minlength", "filterMinlength"], required: ["p-required", "required"], showRequired: ["p-show-required", "showRequired"], changeOnEnter: ["p-change-on-enter", "changeOnEnter"], disabled: ["p-disabled", "disabled"], sort: ["p-sort", "sort"], options: ["p-options", "options"], filterMode: ["p-filter-mode", "filterMode"], filterParams: ["p-filter-params", "filterParams"], literals: ["p-literals", "literals"] }, outputs: { change: "p-change", ngModelChange: "ngModelChange", inputChange: "p-input-change" } });
|
|
@@ -901,4 +908,4 @@ __decorate([
|
|
|
901
908
|
type: Input,
|
|
902
909
|
args: ['p-literals']
|
|
903
910
|
}] }); })();
|
|
904
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQU9oRSxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUM3QyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLE1BQU0sRUFBRSxlQUFlO0tBQ3hCO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsc0JBQXNCO0tBQy9CO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsd0JBQXdCO0tBQ2pDO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsbUJBQW1CO0tBQzVCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUEyaEJ4QyxZQUFZLGVBQWtDO1FB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QVVHLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBbURJLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZTtZQWlCUSxZQUFZO2tCQUF6QyxLQUFLO21CQUFDLGlCQUFpQjtZQW1CYSxrQkFBa0I7a0JBQXRELEtBQUs7bUJBQUMsd0JBQXdCO1lBb0JILFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQTRCTSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUF3QlcsZUFBZTtrQkFBL0MsS0FBSzttQkFBQyxvQkFBb0I7WUFrQkYsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBZ0JPLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBVVEsYUFBYTtrQkFBNUMsS0FBSzttQkFBQyxtQkFBbUI7WUFnQkQsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBV0UsSUFBSTtrQkFBeEIsS0FBSzttQkFBQyxRQUFRO1lBd0JTLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQXFCVSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUE0QlEsWUFBWTtrQkFBekMsS0FBSzttQkFBQyxpQkFBaUI7WUFrQ0MsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YsIHZhbGlkVmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcclxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcclxuXHJcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJNb2RlIH0gZnJvbSAnLi9wby1jb21iby1maWx0ZXItbW9kZS5lbnVtJztcclxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9Db21ib0dyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLWdyb3VwLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29tYm9MaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQb0NvbWJvT3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLW9wdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQb0NvbWJvT3B0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XHJcblxyXG5jb25zdCBQT19DT01CT19ERUJPVU5DRV9USU1FX0RFRkFVTFQgPSA0MDA7XHJcbmNvbnN0IFBPX0NPTUJPX0ZJRUxEX0xBQkVMX0RFRkFVTFQgPSAnbGFiZWwnO1xyXG5jb25zdCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcclxuXHJcbmV4cG9ydCBjb25zdCBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0ID0ge1xyXG4gIGVuOiA8UG9Db21ib0xpdGVyYWxzPntcclxuICAgIG5vRGF0YTogJ05vIGRhdGEgZm91bmQnXHJcbiAgfSxcclxuICBlczogPFBvQ29tYm9MaXRlcmFscz57XHJcbiAgICBub0RhdGE6ICdEYXRvcyBubyBlbmNvbnRyYWRvcydcclxuICB9LFxyXG4gIHB0OiA8UG9Db21ib0xpdGVyYWxzPntcclxuICAgIG5vRGF0YTogJ05lbmh1bSBkYWRvIGVuY29udHJhZG8nXHJcbiAgfSxcclxuICBydTogPFBvQ29tYm9MaXRlcmFscz57XHJcbiAgICBub0RhdGE6ICfQlNCw0L3QvdGL0LUg0L3QtSDQvdCw0LnQtNC10L3RiydcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIE8gYHBvLWNvbWJvYCBleGliZSB1bWEgbGlzdGEgZGUgb3DDp8O1ZXMgY29tIGbDoWNpbCBzZWxlw6fDo28gZSBmaWx0cmFnZW0uXHJcbiAqXHJcbiAqIEFsw6ltIGRhIGV4aWJpw6fDo28gcGFkcsOjbywgbmVsZSDDqSBwb3Nzw612ZWwgbGlzdGFyIGFzIG9ww7VlcyBlbSBhZ3J1cGFtZW50b3MuXHJcbiAqXHJcbiAqIMOJIHBvc3PDrXZlbCBzZWxlY2lvbmFyIGUgbmF2ZWdhciBlbnRyZSBhcyBvcMOnw7VlcyBkYSBsaXN0YSB0YW50byBhdHJhdsOpcyBkbyAqbW91c2UqIHF1YW50byBkbyB0ZWNsYWRvLiBObyB0ZWNsYWRvIG5hdmVndWUgY29tXHJcbiAqIGFzIHNldGFzIGUgcHJlc3Npb25lICpFbnRlciogbmEgb3DDp8OjbyBxdWUgZGVzZWphci5cclxuICpcclxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cclxuICpcclxuICogRW0gYHAtZmlsdGVyLW1vZGVgLCBvIGZpbHRybyBwb2RlcsOhIHNlciBjb25maWd1cmFkbyBwYXJhIGJ1c2NhciBvcMO1ZXMgcXVlIGNvcnJlc3BvbmRhbSBhbyBpbsOtY2lvLCBmaW0gb3UgcXVlIGNvbnRlbmhhIG8gdmFsb3IgZGlnaXRhZG8uXHJcbiAqXHJcbiAqIE8gYHBvLWNvbWJvYCBndWFyZGEgbyDDumx0aW1vIHZhbG9yIGNhc28gbyB1c3XDoXJpbyBkZXNpc3RhIGRlIHVtYSBidXNjYSwgZGVpeGFuZG8gbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVzYyouIENhc28gc2VqYSBkaWdpdGFkbyBub1xyXG4gKiBjYW1wbyBkZSBidXNjYSBhIGRlc2NyacOnw6NvIGNvbXBsZXRhIGRlIHVtIGl0ZW0sIGVudMOjbyBhIHNlbGXDp8OjbyBzZXLDoSBhdXRvbWF0aWNhbWVudGUgZWZldHVhZGEgYW8gZGVpeGFyIG8gY2FtcG8gb3UgcHJlc3Npb25hbmRvICpFbnRlciouXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvQ29tYm9CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxyXG4gICAqXHJcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBMYWJlbCBubyBjb21wb25lbnRlLiAqL1xyXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKiogVGV4dG8gZGUgYXBvaW8gcGFyYSBvIGNhbXBvLiAqL1xyXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcclxuXHJcbiAgLyoqIE5vbWUgZG8gY29tcG9uZW50ZS4gKi9cclxuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgaW5mb3JtYWRhIGEgVVJMIGRvIHNlcnZpw6dvIGVtIHF1ZSBzZXLDoSByZWFsaXphZG8gbyBmaWx0cm8gcGFyYSBjYXJyZWdhbWVudG8gZGEgbGlzdGEgZGVcclxuICAgKiBpdGVucyBubyBjb21wb25lbnRlLlxyXG4gICAqIENhc28gaGFqYSBhIG5lY2Vzc2lkYWRlIGRlIGN1c3RvbWl6YcOnw6NvLCBlbnTDo28gcG9kZSBzZXIgaW5mb3JtYWRvIHVtIHNlcnZpw6dvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgUG9Db21ib0ZpbHRlci5cclxuICAgKlxyXG4gICAqIENhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gQVBJIFRPVFZTIGUgdXRpbGl6YSBhcyBwcm9wcmllZGFkZXNcclxuICAgKiBgcC1maWVsZC1sYWJlbGAgZSBgcC1maWVsZC12YWx1ZWAgcGFyYSBhIGNvbnN0cnXDp8OjbyBkYSBsaXN0YSBkZSBpdGVucy5cclxuICAgKlxyXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcclxuICAgKiBgYGBcclxuICAgKiB1cmwgKyA/ZmlsdGVyPVBldGVyXHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiBTZSBmb3IgZGVmaW5pZGEgYSBwcm9wcmllZGFkZSBgcC1maWx0ZXItcGFyYW1zYCwgYSBtZXNtYSB0YW1iw6ltIHNlcsOhIGNvbmNhdGVuYWRhLiBQb3IgZXhlbXBsbywgcGFyYSBvXHJcbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogU2UgdmVyZGFkZWlybyBhdGl2YSBhIGZ1bmNpb25hbGlkYWRlIGRlIHNjcm9sbCBpbmZpbml0byBwYXJhIG8gY29tYm8sIEFvIGNoZWdhciBhbyBmaW0gZGEgdGFiZWxhIGV4ZWN1dGFyw6Egbm92YSBidXNjYSBkb3MgZGFkb3MgY29uZm9ybWUgcGFnaW5hw6fDo28uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWluZmluaXRlLXNjcm9sbCcpIHNldCBpbmZpbml0ZVNjcm9sbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGwgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBpbmZpbml0ZVNjcm9sbCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmZpbml0ZVNjcm9sbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBEZWZpbmUgbyBwZXJjZW50dWFsIG5lY2Vzc8OhcmlvIHBhcmEgZGlzcGFyYXIgbyBldmVudG8gYHNob3ctbW9yZWAsIHF1ZSDDqSByZXNwb25zw6F2ZWwgcG9yIGNhcnJlZ2FyIG1haXMgZGFkb3Mgbm8gY29tYm8uIENhc28gbyB2YWxvciBzZWphIG1haW9yIHF1ZSAxMDAgb3UgbWVub3IgcXVlIDAsIG8gdmFsb3IgcGFkcsOjbyBzZXLDoSAxMDAlLlxyXG4gICAqXHJcbiAgICogKipFeGVtcGxvcyoqXHJcbiAgICogLSBwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZSA9IDgwOiBRdWFuZG8gYXRpbmdpciA4MCUgZG8gc2Nyb2xsIGRvIGNvbWJvLCBvIGBzaG93LW1vcmVgIHNlcsOhIGRpc3BhcmFkby5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlJykgc2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZSA9IHZhbHVlID4gMTAwIHx8IHZhbHVlIDwgMCA/IDEwMCA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBEZWZpbmUgbyDDrWNvbmUgcXVlIHNlcsOhIGV4aWJpZG8gbm8gaW7DrWNpbyBkbyBjYW1wby5cclxuICAgKlxyXG4gICAqIMOJIHBvc3PDrXZlbCB1c2FyIHF1YWxxdWVyIHVtIGRvcyDDrWNvbmVzIGRhIFtCaWJsaW90ZWNhIGRlIMOtY29uZXNdKC9ndWlkZXMvaWNvbnMpLiBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcclxuICAgKiBgYGBcclxuICAgKiA8cG8tY29tYm8gcC1pY29uPVwicG8taWNvbi11c2VyXCIgcC1sYWJlbD1cIlBPIGNvbWJvXCI+PC9wby1jb21ibz5cclxuICAgKiBgYGBcclxuICAgKiBUYW1iw6ltIMOpIHBvc3PDrXZlbCB1dGlsaXphciBvdXRyYXMgZm9udGVzIGRlIMOtY29uZXMsIHBvciBleGVtcGxvIGEgYmlibGlvdGVjYSAqRm9udCBBd2Vzb21lKiwgZGEgc2VndWludGUgZm9ybWE6XHJcbiAgICogYGBgXHJcbiAgICogPHBvLWNvbWJvIHAtaWNvbj1cImZhIGZhLXBvZGNhc3RcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxyXG4gICAqIGBgYFxyXG4gICAqIE91dHJhIG9ww6fDo28gc2VyaWEgYSBjdXN0b21pemHDp8OjbyBkbyDDrWNvbmUgYXRyYXbDqXMgZG8gYFRlbXBsYXRlUmVmYCwgY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XHJcbiAgICogYGBgXHJcbiAgICogPHBvLWNvbWJvIFtwLWljb25dPVwidGVtcGxhdGVcIiBwLWxhYmVsPVwiY29tYm8gdGVtcGxhdGUgaW9uaWNcIj48L3BvLWNvbWJvPlxyXG4gICAqXHJcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cclxuICAgKiAgPGlvbi1pY29uIHN0eWxlPVwiZm9udC1zaXplOiBpbmhlcml0XCIgbmFtZT1cImhlYXJ0XCI+PC9pb24taWNvbj5cclxuICAgKiA8L25nLXRlbXBsYXRlPlxyXG4gICAqIGBgYFxyXG4gICAqID4gUGFyYSBvIMOtY29uZSBlbnF1YWRyYXIgY29ycmV0YW1lbnRlLCBkZXZlLXNlIHV0aWxpemFyIGBmb250LXNpemU6IGluaGVyaXRgIGNhc28gbyDDrWNvbmUgdXRpbGl6YWRvIG7Do28gYXBsaXF1ZS1vLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1pY29uJykgaWNvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cclxuICAgKlxyXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XHJcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XHJcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XHJcblxyXG4gIC8qKiBTZSB2ZXJkYWRlaXJvLCBvIGNhbXBvIHJlY2ViZXLDoSB1bSBib3TDo28gcGFyYSBzZXIgbGltcG8uICovXHJcbiAgQElucHV0KCdwLWNsZWFuJykgQElucHV0Qm9vbGVhbigpIGNsZWFuPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFNlIHZlcmRhZGVpcm8sIG8gZXZlbnRvIGBwLWNoYW5nZWAgcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gYFBvQ29tYm9PcHRpb25gIHJlZmVyZW50ZSDDoCBvcMOnw6NvIHNlbGVjaW9uYWRhLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1lbWl0LW9iamVjdC12YWx1ZScpIEBJbnB1dEJvb2xlYW4oKSBlbWl0T2JqZWN0VmFsdWU/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBTZSB2ZXJkYWRlaXJvLCBkZXNhYmlsaXRhcsOhIGEgYnVzY2EgZGUgdW0gaXRlbSB2aWEgVEFCLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1kaXNhYmxlZC10YWItZmlsdGVyJykgQElucHV0Qm9vbGVhbigpIGRpc2FibGVkVGFiRmlsdGVyPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIG5nTW9kZWwuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gbW9kZWwgbW9kaWZpY2Fkby5cclxuICAgKlxyXG4gICAqID4gUG9kZS1zZSBvcHRhciBwZWxvIHJlY2ViaW1lbnRvIGRvIG9iamV0byBzZWxlY2lvbmFkbyBhbyBpbnbDqXMgZG8gbW9kZWwgYXRyYXbDqXMgZGEgcHJvcHJpZWRhZGUgYHAtZW1pdC1vYmplY3QtdmFsdWVgLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRnVuw6fDo28gcGFyYSBhdHVhbGl6YXIgbyBuZ01vZGVsIGRvIGNvbXBvbmVudGUsIG5lY2Vzc8OhcmlvIHF1YW5kbyBuw6NvIGZvciB1dGlsaXphZG8gZGVudHJvIGRhIHRhZyBmb3JtLlxyXG4gICAqXHJcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxyXG4gICAqIHR3by13YXkgYmluZGluZyBubyBjb21wb25lbnRlIGRldmUgc2UgdXRpbGl6YXIgZGEgc2VndWludGUgZm9ybWE6XHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiA8cG8tY29tYm8gLi4uIFtuZ01vZGVsXT1cImNvbWJvTW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJjb21ib01vZGVsID0gJGV2ZW50XCI+IDwvcG8tY29tYm8+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKi9cclxuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERldmUgc2VyIGluZm9ybWFkYSB1bWEgZnVuw6fDo28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gaG91dmVyIGFsdGVyYcOnw7VlcyBubyBTZWFyY2ggaW5wdXQuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gaW5wdXQgbW9kaWZpY2Fkby5cclxuICAgKlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ3AtaW5wdXQtY2hhbmdlJykgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGNhY2hlT3B0aW9uczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcclxuICBmaXJzdEluV3JpdGVWYWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNGaXJzdEZpbHRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBrZXl1cFN1YnNjcmliZTogYW55O1xyXG4gIG9uTW9kZWxDaGFuZ2U6IGFueTtcclxuICBwcmV2aW91c1NlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZE9wdGlvbjogYW55O1xyXG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcclxuICBzZWxlY3RlZFZpZXc6IGFueTtcclxuICBzZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcclxuICB2aXNpYmxlT3B0aW9uczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHBhZ2U6IG51bWJlciA9IDE7XHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkeW5hbWljTGFiZWw6IHN0cmluZyA9ICdsYWJlbCc7XHJcbiAgZHluYW1pY1ZhbHVlOiBzdHJpbmcgPSAndmFsdWUnO1xyXG5cclxuICBwcm90ZWN0ZWQgY2FjaGVTdGF0aWNPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHJvdGVjdGVkIGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcm90ZWN0ZWQgb25Nb2RlbFRvdWNoZWQ6IGFueSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2NoYW5nZU9uRW50ZXI/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGVib3VuY2VUaW1lPzogbnVtYmVyID0gNDAwO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkSW5pdEZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9maWVsZExhYmVsPzogc3RyaW5nID0gJ2xhYmVsJztcclxuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gJ3ZhbHVlJztcclxuICBwcml2YXRlIF9maWx0ZXJNaW5sZW5ndGg/OiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2ZpbHRlck1vZGU/OiBQb0NvbWJvRmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zPzogYW55O1xyXG4gIHByaXZhdGUgX2xpdGVyYWxzPzogUG9Db21ib0xpdGVyYWxzO1xyXG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvT3B0aW9uR3JvdXAgfCBhbnk+ID0gW107XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3NvcnQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U/OiBudW1iZXIgPSAxMDA7XHJcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGw/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaGVpZ2h0PzogbnVtYmVyO1xyXG5cclxuICAvLyB1dGlsaXphZG8gcGFyYSBmYXplciBvIGNvbnRyb2xlIGRlIGF0dWFsaXphciBvIG1vZGVsLlxyXG4gIC8vIG7Do28gZGV2ZSBmb3LDp2FyIGEgYXR1YWxpemHDp8OjbyBzZSBvIGdhdGlsaG8gZm9yIG8gd3JpdGVWYWx1ZSBwYXJhIG7Do28gZGVpeGFyIG8gY2FtcG8gZGlydHkuXHJcbiAgcHJpdmF0ZSBmcm9tV3JpdGVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xyXG5cclxuICAvKiogTWVuc2FnZW0gYXByZXNlbnRhZGEgZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLiAqL1xyXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBFc3RhIHByb3ByaWVkYWRlIGRlZmluZSBlbSBxdWFudG8gdGVtcG8gKGVtIG1pbGlzc2VndW5kb3MpLCBhZ3VhcmRhIHBhcmEgYWNpb25hciBvIGV2ZW50byBkZSBmaWx0cm8gYXDDs3MgY2FkYSBwcmVzc2lvbmFtZW50byBkZSB0ZWNsYS5cclxuICAgKiBTZXLDoSB1dGlsaXphZGEgYXBlbmFzIHF1YW5kbyBob3V2ZXIgc2VydmnDp28gKGBwLWZpbHRlci1zZXJ2aWNlYCkuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgNDAwYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1kZWJvdW5jZS10aW1lJykgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKTtcclxuXHJcbiAgICB0aGlzLl9kZWJvdW5jZVRpbWUgPSAhaXNOYU4ocGFyc2VkVmFsdWUpICYmIHBhcnNlZFZhbHVlID4gMCA/IHBhcnNlZFZhbHVlIDogUE9fQ09NQk9fREVCT1VOQ0VfVElNRV9ERUZBVUxUO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlVGltZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogRGVzYWJpbGl0YSBvIGZpbHRybyBpbmljaWFsIG5vIHNlcnZpw6dvLCBxdWUgw6kgZXhlY3V0YWRvIG5vIHByaW1laXJvIGNsaXF1ZSBubyBjYW1wby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1kaXNhYmxlZC1pbml0LWZpbHRlcicpIHNldCBkaXNhYmxlZEluaXRGaWx0ZXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkSW5pdEZpbHRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkSW5pdEZpbHRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEluaXRGaWx0ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXHJcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB2YWxvciBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXHJcbiAgICpcclxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcclxuICAgKiBQb0NvbWJvT3B0aW9uLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIHNldCBmaWVsZFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zZXJ2aWNlICYmICF0aGlzLmZpbHRlclNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5keW5hbWljVmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9maWVsZFZhbHVlID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfVkFMVUVfREVGQVVMVDtcclxuXHJcbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZFZhbHVlID0gdGhpcy5fZmllbGRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmaWVsZFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXHJcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXHJcbiAgICpcclxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcclxuICAgKiBQb0NvbWJvT3B0aW9uLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGxhYmVsYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zZXJ2aWNlICYmICF0aGlzLmZpbHRlclNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5keW5hbWljTGFiZWwgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVDtcclxuXHJcbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmaWVsZExhYmVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIFZhbG9yIG3DrW5pbW8gZGUgY2FyYWN0ZXJlcyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIG5vIHNlcnZpw6dvLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYDBgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZpbHRlci1taW5sZW5ndGgnKSBzZXQgZmlsdGVyTWlubGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHBhcnNlVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQodmFsdWUsIDEwKSA6IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuX2ZpbHRlck1pbmxlbmd0aCA9IE51bWJlci5pc0ludGVnZXIocGFyc2VWYWx1ZSkgPyBwYXJzZVZhbHVlIDogMDtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJNaW5sZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTWlubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5zZWxlY3RlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDoSBleGliaWRhLlxyXG4gICAqXHJcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcclxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cclxuICAgKi9cclxuICBASW5wdXQoJ3Atc2hvdy1yZXF1aXJlZCcpIHNob3dSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIEluZGljYSBxdWUgbyBldmVudG8gYHAtY2hhbmdlYCBzw7Mgc2Vyw6EgZGlzcGFyYWRvIGFvIGNsaWNhciBvdSBwcmVzc2lvbmFyIGEgdGVjbGEgXCJFbnRlclwiIHNvYnJlIHVtYSBvcMOnw6NvIHNlbGVjaW9uYWRhLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1jaGFuZ2Utb24tZW50ZXInKSBzZXQgY2hhbmdlT25FbnRlcihjaGFuZ2VPbkVudGVyOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jaGFuZ2VPbkVudGVyID0gY29udmVydFRvQm9vbGVhbihjaGFuZ2VPbkVudGVyKTtcclxuICB9XHJcblxyXG4gIGdldCBjaGFuZ2VPbkVudGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZU9uRW50ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIEluZGljYSBxdWUgYSBsaXN0YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBwLW9wdGlvbnMgc2Vyw6Egb3JkZW5hZGEgcGVsYSBkZXNjcmnDp8Ojby4gKi9cclxuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3NvcnQgPSBjb252ZXJ0VG9Cb29sZWFuKHNvcnQpO1xyXG4gICAgdGhpcy5jb21ib0xpc3REZWZpbml0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNvcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRlZmluZSBhIGxpc3RhIGRlIG9ww6fDtWVzIGRvIGBwby1jb21ib2AuXHJcbiAgICpcclxuICAgKiA+IEEgbGlzdGEgcG9kZSBzZXIgZGVmaW5pZGEgdXRpbGl6YW5kbyB1bSBhcnJheSBjb20gbyB2YWxvciByZXByZXNlbnRhbmRvIG8gYHZhbHVlYCBlIG8gYGxhYmVsYCBkYXMgc2VndWludGVzIGZvcm1hczpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby1jb21ibyBuYW1lPVwiY29tYm9cIiBwLWxhYmVsPVwiUE8gQ29tYm9cIiBbcC1vcHRpb25zXT1cIlt7dmFsdWU6IDEsIGxhYmVsOiAnT25lJ30sIHt2YWx1ZTogMiwgbGFiZWw6ICd0d28nfV1cIj4gPC9wby1jb21ibz5cclxuICAgKiBgYGBcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby1jb21ibyBuYW1lPVwiY29tYm9cIiBwLWxhYmVsPVwiUE8gQ29tYm9cIiBbcC1vcHRpb25zXT1cIlt7bmFtZTogJ1JvZ2VyJywgYWdlOiAyOH0sIHtuYW1lOiAnQW5uZScsIGFnZTogMzV9XVwiIHAtZmllbGQtbGFiZWw9XCJuYW1lXCIgcC1maWVsZC12YWx1ZT1cImFnZVwiPiA8L3BvLWNvbWJvPlxyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogLSBBY29uc2VsaGEtc2UgdXRpbGl6YXIgdmFsb3JlcyBkaXN0aW50b3Mgbm8gYGxhYmVsYCBlIGB2YWx1ZWAgZG9zIGl0ZW5zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4pIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucyA6IFtdO1xyXG5cclxuICAgIHRoaXMuY29tYm9MaXN0RGVmaW5pdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBvcHRpb25zKCk6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvT3B0aW9uR3JvdXAgfCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBvIG1vZG8gZGUgcGVzcXVpc2EgdXRpbGl6YWRvIG5vIGZpbHRybyBkYSBsaXN0YSBkZSBzZWxlw6fDo286IGBzdGFydHNXaXRoYCwgYGNvbnRhaW5zYCBvdSBgZW5kc1dpdGhgLlxyXG4gICAqXHJcbiAgICogPiBRdWFuZG8gdXRpbGl6YXIgYSBwcm9wcmllZGFkZSBgcC1maWx0ZXItc2VydmljZWAgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBzdGFydHNXaXRoYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIHNldCBmaWx0ZXJNb2RlKGZpbHRlck1vZGU6IFBvQ29tYm9GaWx0ZXJNb2RlKSB7XHJcbiAgICB0aGlzLl9maWx0ZXJNb2RlID0gZmlsdGVyTW9kZSBpbiBQb0NvbWJvRmlsdGVyTW9kZSA/IGZpbHRlck1vZGUgOiBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xyXG4gICAgc3dpdGNoICh0aGlzLl9maWx0ZXJNb2RlLnRvU3RyaW5nKCkpIHtcclxuICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcclxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyTW9kZSgpOiBQb0NvbWJvRmlsdGVyTW9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTW9kZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgKlBvQ29tYm9GaWx0ZXIqLlxyXG4gICAqXHJcbiAgICogPiBDYXNvIGEgbGlzdGEgY29udGVuaGEgYWdydXBhbWVudG9zLCBvcyBtZXNtb3Mgc8OzIHNlcsOjbyBleGliaWRvcyBzZSBob3V2ZXIgbm8gbcOtbmltbyB1bWEgb3DDp8OjbyBxdWUgY29ycmVzcG9uZGEgw6AgcGVzcXVpc2EuXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBzZXQgZmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICB0aGlzLl9maWx0ZXJQYXJhbXMgPSBmaWx0ZXJQYXJhbXMgfHwgZmlsdGVyUGFyYW1zID09PSAwIHx8IGZpbHRlclBhcmFtcyA9PT0gZmFsc2UgPyBmaWx0ZXJQYXJhbXMgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclBhcmFtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tY29tYm9gLlxyXG4gICAqXHJcbiAgICogUGFyYSB1dGlsaXphciBiYXN0YSBwYXNzYXIgYSBsaXRlcmFsIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Db21ib0xpdGVyYWxzID0ge1xyXG4gICAqICAgIG5vRGF0YTogJ05lbmh1bSB2YWxvcidcclxuICAgKiAgfTtcclxuICAgKiBgYGBcclxuICAgKlxyXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhIGxpdGVyYWwgY3VzdG9taXphZGEsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiA8cG8tY29tYm9cclxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XHJcbiAgICogPC9wby1jb21ibz5cclxuICAgKiBgYGBcclxuICAgKlxyXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xyXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb0NvbWJvTGl0ZXJhbHMpIHtcclxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xyXG4gICAgICAgIC4uLnBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcclxuICAgICAgICAuLi5wb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxyXG4gICAgICAgIC4uLnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbGl0ZXJhbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9Db21ib0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3B0aW9uR3JvdXBMaXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubGVuZ3RoICYmIHRoaXMuX29wdGlvbnNbMF0uaGFzT3duUHJvcGVydHkoJ29wdGlvbnMnKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5keW5hbWljVmFsdWUgPSB0aGlzLmNoZWNrSWZTZXJ2aWNlKCd2YWx1ZScpO1xyXG4gICAgdGhpcy5keW5hbWljTGFiZWwgPSB0aGlzLmNoZWNrSWZTZXJ2aWNlKCdsYWJlbCcpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XHJcbiAgfVxyXG5cclxuICBvbkluaXRTZXJ2aWNlKCkge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xyXG4gICAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcclxuICAgICAgdGhpcy5pbml0SW5wdXRPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZXJ2aWNlKHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmcpIHtcclxuICAgIGlmIChzZXJ2aWNlKSB7XHJcbiAgICAgIGlmIChpc1R5cGVvZihzZXJ2aWNlLCAnb2JqZWN0JykpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Db21ib0ZpbHRlclNlcnZpY2U+c2VydmljZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKDxzdHJpbmc+c2VydmljZSwgdGhpcy5maWVsZExhYmVsLCB0aGlzLmZpZWxkVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wYXJlTWV0aG9kKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXAsIGZpbHRlck1vZGU6IFBvQ29tYm9GaWx0ZXJNb2RlKSB7XHJcbiAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHtcclxuICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0c1dpdGgoc2VhcmNoLCBvcHRpb24pO1xyXG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHNlYXJjaCwgb3B0aW9uKTtcclxuICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5lbmRzV2l0aDpcclxuICAgICAgICByZXR1cm4gdGhpcy5lbmRzV2l0aChzZWFyY2gsIG9wdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIGNvbnRhaW5zKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgZW5kc1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb25zID8gb3B0aW9ucy5maW5kKChvcHRpb246IGFueSkgPT4gdGhpcy5pc0VxdWFsKG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0sIHZhbHVlKSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uRnJvbUxhYmVsKGxhYmVsOiBhbnksIG9wdGlvbnM6IGFueSkge1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZChcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBsYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb246IGFueSwgaXNVcGRhdGVNb2RlbDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IG9wdGlvbkxhYmVsID0gKG9wdGlvbiAmJiBvcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSB8fCAnJztcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbik7XHJcblxyXG4gICAgLy8gYXR1YWxpemEgbyB2YWxvciBkbyBpbnB1dCBxdWFuZG8gZm9yIGNoYW5nZU9uRW50ZXIgYXBlbmFzIHNlIGZvciBwYXJhIGF0dWFsaXphciBvIG1vZGVsLlxyXG4gICAgaWYgKHRoaXMuY2hhbmdlT25FbnRlciAmJiBpc1VwZGF0ZU1vZGVsKSB7XHJcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZShvcHRpb25MYWJlbCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmNoYW5nZU9uRW50ZXIpIHtcclxuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNVcGRhdGVNb2RlbCkge1xyXG4gICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IG9wdGlvbj8uW3RoaXMuZHluYW1pY1ZhbHVlXSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsbE1vZGVsQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIC8vIENhc28gbyBjb21wb25lbnRlIGVzdGl2ZXIgZGVudHJvIGRlIHVtIGZvcm0sIHRlcsOhIGFjZXNzbyBhbyBtw6l0b2RvIG9uTW9kZWxDaGFuZ2UuXHJcbiAgICByZXR1cm4gdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKSA6IHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGlzRXF1YWwodmFsdWU6IGFueSwgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoKHZhbHVlIHx8IHZhbHVlID09PSAwKSAmJiBpbnB1dFZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpID09PSBpbnB1dFZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCAmJiBpbnB1dFZhbHVlICE9PSBudWxsKSB8fCAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBpbnB1dFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDsgLy8gVHJhbnNmb3JtYW5kbyBlbSBzdHJpbmdcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWUgPT09IGlucHV0VmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGb3JMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8YW55PiwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcclxuICAgIGlmIChzZWFyY2ggJiYgb3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBuZXdPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgIGxldCBhZGRlZE9wdGlvbnNHcm91cFRpdGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIGxldCBvcHRpb25zR3JvdXBUaXRsZTogUG9Db21ib0dyb3VwO1xyXG5cclxuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKCdvcHRpb25zJyBpbiBvcHRpb24pIHtcclxuICAgICAgICAgIGFkZGVkT3B0aW9uc0dyb3VwVGl0bGUgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiAob3B0aW9uc0dyb3VwVGl0bGUgPSBvcHRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgKHRoaXMuY29tcGFyZU1ldGhvZChzZWFyY2gsIG9wdGlvbiwgZmlsdGVyTW9kZSkgfHwgdGhpcy5zZXJ2aWNlKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QgJiYgIWFkZGVkT3B0aW9uc0dyb3VwVGl0bGUpIHtcclxuICAgICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbnNHcm91cFRpdGxlKTtcclxuICAgICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gbmV3T3B0aW9uc1t0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ID8gMSA6IDBdO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChuZXdPcHRpb25zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDb21ib0xpc3Qob3B0aW9ucz86IEFycmF5PGFueT4pIHtcclxuICAgIGNvbnN0IGNvcHlPcHRpb25zID0gb3B0aW9ucyB8fCBbLi4udGhpcy5jb21ib09wdGlvbnNMaXN0XTtcclxuXHJcbiAgICBjb25zdCBuZXdPcHRpb25zID1cclxuICAgICAgIW9wdGlvbnMgJiYgIXRoaXMuaW5maW5pdGVTY3JvbGwgJiYgdGhpcy5zZWxlY3RlZFZhbHVlID8gW3sgLi4udGhpcy5zZWxlY3RlZE9wdGlvbiB9XSA6IGNvcHlPcHRpb25zO1xyXG5cclxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBuZXdPcHRpb25zO1xyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBjb3B5T3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICE9PSB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TmV4dE9wdGlvbih2YWx1ZTogYW55LCBvcHRpb25zOiBBcnJheTxhbnk+LCByZXZlcnNlOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnNMaXN0ID0gcmV2ZXJzZSA/IG9wdGlvbnMuc2xpY2UoMCkucmV2ZXJzZSgpIDogb3B0aW9ucy5zbGljZSgwKTtcclxuICAgIGxldCBvcHRpb25Gb3VuZCA9IG51bGw7XHJcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zTGlzdCkge1xyXG4gICAgICBpZiAob3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSAmJiAhb3B0aW9uRm91bmQpIHtcclxuICAgICAgICBvcHRpb25Gb3VuZCA9IG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSAmJiBmb3VuZCkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNFcXVhbChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdLCB2YWx1ZSkpIHtcclxuICAgICAgICBmb3VuZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3B0aW9uRm91bmQ7XHJcbiAgfVxyXG5cclxuICBnZXRJbmRleFNlbGVjdGVkVmlldygpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLnZpc2libGVPcHRpb25zW2ldLCB0aGlzLnNlbGVjdGVkVmlldykpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlT2JqZWN0cyhvYmoxOiBhbnksIG9iajI6IGFueSkge1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iajEpID09PSBKU09OLnN0cmluZ2lmeShvYmoyKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeVZhbGlkT3B0aW9uKCkge1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbkZvdW5kID0gdGhpcy5nZXRPcHRpb25Gcm9tTGFiZWwoaW5wdXRWYWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChbLi4udGhpcy5jYWNoZVN0YXRpY09wdGlvbnNdKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uRm91bmQgJiYgb3B0aW9uRm91bmRbdGhpcy5keW5hbWljVmFsdWVdICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbkZvdW5kKTtcclxuXHJcbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IG9wdGlvbkZvdW5kW3RoaXMuZHluYW1pY0xhYmVsXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gIT09IGlucHV0VmFsdWUpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlV2l0aE9sZE9wdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSAmJiAhb3B0aW9uRm91bmQpIHtcclxuICAgICAgY29uc3QgaXNJbnB1dFZhbHVlRGlmZlNlbGVjdGVkTGFiZWwgPSAhIShcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdICE9PSBpbnB1dFZhbHVlXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCwgaXNJbnB1dFZhbHVlRGlmZlNlbGVjdGVkTGFiZWwgfHwgdGhpcy5jaGFuZ2VPbkVudGVyKTtcclxuXHJcbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZWNlYmUgYXMgYWx0ZXJhw6fDtWVzIGRvIG1vZGVsXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmZyb21Xcml0ZVZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodmFsaWRWYWx1ZSh2YWx1ZSkgJiYgIXRoaXMuc2VydmljZSAmJiB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgJiYgdGhpcy5jb21ib09wdGlvbnNMaXN0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0KTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbik7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZSBob3V2ZXIgc2VydmnDp28gYnVzY2EgcGVsbyBtb2RlbC5cclxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLnNlcnZpY2UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVxdWlyZWQ6IHtcclxuICAgICAgICAgIHZhbGlkOiBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKHZhbHVlKSB7XHJcbiAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xyXG4gICAgdGhpcy5pbml0SW5wdXRPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY29uZmlnQWZ0ZXJTZXRGaWx0ZXJTZXJ2aWNlKHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmcpIHtcclxuICAgIGlmIChzZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCk7XHJcbiAgICAgIHRoaXMub25Jbml0U2VydmljZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgPSB0aGlzLmNhY2hlU3RhdGljT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVPcHRpb25zID0gW107XHJcbiAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMua2V5dXBTdWJzY3JpYmUpIHtcclxuICAgICAgdGhpcy5rZXl1cFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tYm9MaXN0RGVmaW5pdGlvbnMoKSB7XHJcbiAgICB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgPSB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMubGlzdGluZ0NvbWJvT3B0aW9ucyh0aGlzLm9wdGlvbnMpIDogdGhpcy5vcHRpb25zO1xyXG4gICAgdGhpcy5jYWNoZVN0YXRpY09wdGlvbnMgPSB0aGlzLmNvbWJvT3B0aW9uc0xpc3Q7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tJZlNlcnZpY2UoZHluYW1pY1ZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICgodGhpcy5zZXJ2aWNlIHx8IHRoaXMuZmlsdGVyU2VydmljZSkgJiYgZHluYW1pY1ZhbHVlID09PSAnbGFiZWwnKSB7XHJcbiAgICAgIHJldHVybiBQT19DT01CT19GSUVMRF9MQUJFTF9ERUZBVUxUO1xyXG4gICAgfVxyXG4gICAgaWYgKCh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSAmJiBkeW5hbWljVmFsdWUgPT09ICd2YWx1ZScpIHtcclxuICAgICAgcmV0dXJuIFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgZHluYW1pY1ZhbHVlID09PSAnbGFiZWwnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkTGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgZHluYW1pY1ZhbHVlID09PSAndmFsdWUnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkVmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVPcHRpb25zKGR5bmFtaWNMYWJlbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbkE6IGFueSwgb3B0aW9uQjogYW55KSB7XHJcbiAgICAgIGNvbnN0IGxhYmVsQSA9IG9wdGlvbkFbZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGxhYmVsQiA9IG9wdGlvbkJbZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICByZXR1cm4gbGFiZWxBIDwgbGFiZWxCID8gLTEgOiBsYWJlbEEgPiBsYWJlbEIgPyAxIDogMDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0R1cGxpY2F0ZWRPcHRpb24ob3B0aW9uczogQXJyYXk8YW55PiwgY3VycmVudE9wdGlvbjogc3RyaW5nLCBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PGFueT4pIHtcclxuICAgIGlmIChhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSA9PT0gY3VycmVudE9wdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb3B0aW9ucy5zb21lKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdID09PSBjdXJyZW50T3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdGluZ0NvbWJvT3B0aW9ucyhjb21ib09wdGlvbnM6IEFycmF5PGFueT4pIHtcclxuICAgIGNvbnN0IGNvbWJvT3B0aW9uc0xpc3QgPSBjb21ib09wdGlvbnMuY29uY2F0KCk7XHJcbiAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QgPSB0aGlzLnZlcmlmeUNvbWJvT3B0aW9ucyhjb21ib09wdGlvbnNMaXN0KTtcclxuXHJcbiAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QgJiYgdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAodmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3J0T3B0aW9ucyhjb21ib09wdGlvbnNMaXN0OiBBcnJheTxhbnk+KSB7XHJcbiAgICBpZiAoY29tYm9PcHRpb25zTGlzdC5sZW5ndGggPiAwICYmIHRoaXMuc29ydCkge1xyXG4gICAgICByZXR1cm4gY29tYm9PcHRpb25zTGlzdC5zb3J0KHRoaXMuY29tcGFyZU9wdGlvbnModGhpcy5keW5hbWljTGFiZWwpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVWYWx1ZShjdXJyZW50T3B0aW9uOiBhbnksIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XHJcblxyXG4gICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAodmFsaWRWYWx1ZShjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgKHZlcmlmeWluZ09wdGlvbnNHcm91cCA9PT0gdHJ1ZSAmJiB2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWRWYWx1ZShjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSkgJiYgIW9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZlcmlmeUNvbWJvT3B0aW9ucyhcclxuICAgIGNvbWJvT3B0aW9uczogQXJyYXk8YW55PixcclxuICAgIHZlcmlmeWluZ09wdGlvbnNHcm91cDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnM/OiBBcnJheTxhbnk+XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gY29tYm9PcHRpb25zLnJlZHVjZSgoYWNjdW11bGF0ZWRPcHRpb25zLCBjdXJyZW50T3B0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhdGhpcy52ZXJpZnlJZkhhc0xhYmVsKGN1cnJlbnRPcHRpb24pIHx8XHJcbiAgICAgICAgdGhpcy5oYXNEdXBsaWNhdGVkT3B0aW9uKFxyXG4gICAgICAgICAgYWNjdW11bGF0ZWRPcHRpb25zLFxyXG4gICAgICAgICAgY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0gfHwgY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0sXHJcbiAgICAgICAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9uc1xyXG4gICAgICAgICkgfHxcclxuICAgICAgICAhdGhpcy52YWxpZGF0ZVZhbHVlKGN1cnJlbnRPcHRpb24sIHZlcmlmeWluZ09wdGlvbnNHcm91cClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkT3B0aW9ucztcclxuICAgICAgfVxyXG5cclxuICAgICAgYWNjdW11bGF0ZWRPcHRpb25zLnB1c2goY3VycmVudE9wdGlvbik7XHJcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZE9wdGlvbnM7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZlcmlmeUNvbWJvT3B0aW9uc0dyb3VwKGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnJlZHVjZSgoYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMsIGN1cnJlbnRPcHRpb24pID0+IHtcclxuICAgICAgY29uc3QgeyBvcHRpb25zIH0gPSBjdXJyZW50T3B0aW9uO1xyXG4gICAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCA9IHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zKG9wdGlvbnMsIHRydWUsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKTtcclxuXHJcbiAgICAgIGlmICh2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyh2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCk7XHJcblxyXG4gICAgICAgIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB7IGxhYmVsOiBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSwgb3B0aW9uczogdHJ1ZSB9LFxyXG4gICAgICAgICAgLi4udmVyaWZpZWRDb21ib09wdGlvbnNHcm91cExpc3RcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRHcm91cE9wdGlvbnM7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbjogUG9Db21ib0dyb3VwID0ge30pIHtcclxuICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gY3VycmVudE9wdGlvbjtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMgJiYgIWN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSB8fFxyXG4gICAgICAoIWN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdICYmICFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSkgfHxcclxuICAgICAgKCF0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0pIHtcclxuICAgICAgY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gPSBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXS50b1N0cmluZygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSW50ZXJuYWxWYXJpYWJsZXMob3B0aW9uOiBhbnkpIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBvcHRpb247XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgaWYgKCF0aGlzLmZyb21Xcml0ZVZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jYWxsTW9kZWxDaGFuZ2UodmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuZW1pdE9iamVjdFZhbHVlID8gdGhpcy5zZWxlY3RlZE9wdGlvbiA6IHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZnJvbVdyaXRlVmFsdWUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKSB7XHJcbiAgICBjb25zdCBvbGRPcHRpb24gPSB0aGlzLmdldE9wdGlvbkZyb21WYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XHJcblxyXG4gICAgaWYgKG9sZE9wdGlvbiAmJiBvbGRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob2xkT3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFic3RyYWN0IHNldElucHV0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQ7XHJcblxyXG4gIGFic3RyYWN0IGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBnZXRPYmplY3RCeVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBnZXRJbnB1dFZhbHVlKCk6IHN0cmluZztcclxuXHJcbiAgYWJzdHJhY3QgaW5pdElucHV0T2JzZXJ2YWJsZSgpOiB2b2lkO1xyXG59XHJcbiJdfQ==
|
|
911
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQU9oRSxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUM3QyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLE1BQU0sRUFBRSxlQUFlO0tBQ3hCO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsc0JBQXNCO0tBQy9CO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsd0JBQXdCO0tBQ2pDO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsbUJBQW1CO0tBQzVCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUEyaEJ4QyxZQUFZLGVBQWtDO1FBMWhCOUM7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0hsRTs7Ozs7Ozs7V0FRRztRQUMyQyxvQkFBZSxHQUFhLEtBQUssQ0FBQztRQUVoRjs7Ozs7Ozs7V0FRRztRQUM2QyxzQkFBaUIsR0FBYSxLQUFLLENBQUM7UUFFcEY7Ozs7Ozs7O1dBUUc7UUFDaUIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXhFOzs7Ozs7Ozs7Ozs7OztXQWNHO1FBQ3NCLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFcEY7Ozs7Ozs7V0FPRztRQUN1QixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXpGLGlCQUFZLEdBQWUsRUFBRSxDQUFDO1FBRTlCLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3Qix3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFLakMsbUJBQWMsR0FBZSxFQUFFLENBQUM7UUFDaEMsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsaUJBQVksR0FBVyxPQUFPLENBQUM7UUFDL0IsaUJBQVksR0FBVyxPQUFPLENBQUM7UUFFckIsdUJBQWtCLEdBQWUsRUFBRSxDQUFDO1FBQ3BDLHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFRLElBQUksQ0FBQztRQUU3QixtQkFBYyxHQUFhLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFZLEdBQUcsQ0FBQztRQUM3QixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBQzVCLHdCQUFtQixHQUFhLEtBQUssQ0FBQztRQUN0QyxnQkFBVyxHQUFZLE9BQU8sQ0FBQztRQUMvQixnQkFBVyxHQUFZLE9BQU8sQ0FBQztRQUMvQixxQkFBZ0IsR0FBWSxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBdUIsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1FBRy9ELGFBQVEsR0FBb0QsRUFBRSxDQUFDO1FBQy9ELGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFDNUIsVUFBSyxHQUFhLEtBQUssQ0FBQztRQUV4Qiw0QkFBdUIsR0FBWSxHQUFHLENBQUM7UUFDdkMsb0JBQWUsR0FBYSxLQUFLLENBQUM7UUFHMUMsd0RBQXdEO1FBQ3hELDZGQUE2RjtRQUNyRixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQTZJeEM7Ozs7O1dBS0c7UUFDdUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFpS3RELElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQTdlRDs7Ozs7Ozs7T0FRRztJQUNILElBQWdDLGNBQWMsQ0FBQyxLQUFjO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQXlDLHNCQUFzQixDQUFDLEtBQWE7UUFDM0UsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUEySkQsMkRBQTJEO0lBQzNELElBQTRCLFdBQVcsQ0FBQyxLQUFhO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILElBQThCLFlBQVksQ0FBQyxLQUFhO1FBQ3RELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBTSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO0lBQzdHLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBcUMsa0JBQWtCLENBQUMsS0FBYztRQUNwRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILElBQTRCLFVBQVUsQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLDRCQUE0QixDQUFDO1FBRXpELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxJQUE0QixVQUFVLENBQUMsS0FBYTtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssSUFBSSw0QkFBNEIsQ0FBQztRQUV6RCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFpQyxlQUFlLENBQUMsS0FBYTtRQUM1RCxNQUFNLFVBQVUsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUUzRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQXlCLFFBQVEsQ0FBQyxRQUFpQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQVVEOzs7Ozs7O09BT0c7SUFDSCxJQUFnQyxhQUFhLENBQUMsYUFBc0I7UUFDbEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLFFBQWlCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLElBQXFCLElBQUksQ0FBQyxJQUFhO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxJQUF3QixPQUFPLENBQUMsT0FBd0Q7UUFDdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV0RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBNEIsVUFBVSxDQUFDLFVBQTZCO1FBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztRQUMvRixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkMsS0FBSyxZQUFZO2dCQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDO2dCQUNoRCxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO2dCQUM5QyxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILElBQThCLFlBQVksQ0FBQyxZQUFpQjtRQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksSUFBSSxZQUFZLEtBQUssQ0FBQyxJQUFJLFlBQVksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQy9HLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLEtBQXNCO1FBQ3RELElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2YsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLENBQUM7Z0JBQzFDLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDeEMsR0FBRyxLQUFLO2FBQ1QsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFNRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQStCO1FBQ3hDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUF5QixPQUFPLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFTLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNsRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBb0MsRUFBRSxVQUE2QjtRQUMvRixRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLGlCQUFpQixDQUFDLFVBQVU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO2dCQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssaUJBQWlCLENBQUMsUUFBUTtnQkFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYyxFQUFFLE1BQVc7UUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWMsRUFBRSxNQUFXO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjLEVBQUUsTUFBVztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVSxFQUFFLE9BQVk7UUFDekMsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FDdkcsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQVcsRUFBRSxnQkFBeUIsSUFBSTtRQUM1RCxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWhFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQywyRkFBMkY7UUFDM0YsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNqQztRQUVELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUV0RyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLG9GQUFvRjtRQUNwRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVSxFQUFFLFVBQWU7UUFDakMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNuRDtRQUVELElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxFQUFFO1lBQ2hHLEtBQUssR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsMEJBQTBCO1NBQy9DO1FBRUQsT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLE9BQW1CLEVBQUUsVUFBNkI7UUFDL0UsSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkMsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1lBQ2xDLElBQUksc0JBQXNCLEdBQVksS0FBSyxDQUFDO1lBQzVDLElBQUksaUJBQStCLENBQUM7WUFFcEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFO29CQUN2QixzQkFBc0IsR0FBRyxLQUFLLENBQUM7b0JBQy9CLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQztpQkFDckM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDakcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxzQkFBc0IsRUFBRTt3QkFDckQsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUNuQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7cUJBQy9CO29CQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFvQjtRQUNsQyxNQUFNLFdBQVcsR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFELE1BQU0sVUFBVSxHQUNkLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRXRHLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1FBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7U0FDekY7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVUsRUFBRSxPQUFtQixFQUFFLFVBQW1CLEtBQUs7UUFDckUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUU7WUFDaEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUM3QyxXQUFXLEdBQUcsTUFBTSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssRUFBRTtnQkFDdEMsT0FBTyxNQUFNLENBQUM7YUFDZjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNsRCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbEUsT0FBTyxDQUFDLENBQUM7YUFDVjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVMsRUFBRSxJQUFTO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzRDthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUM3RyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztZQUV4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEUsT0FBTztTQUNSO2FBQU0sSUFBSSxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUMsQ0FDdEMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLENBQzdFLENBQUM7WUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLDZCQUE2QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVwRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQzlCLE9BQU87U0FDUjtJQUNILENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQy9GLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsOENBQThDO0lBQzlDLGdFQUFnRTtJQUNoRSxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBYztRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUFDLGVBQWdDO1FBQ3ZDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkUsT0FBTztnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLEtBQUs7aUJBQ2I7YUFDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUywyQkFBMkIsQ0FBQyxPQUErQjtRQUNuRSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVTLDBCQUEwQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFUyxhQUFhLENBQUMsS0FBVTtRQUNoQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRWhELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sY0FBYyxDQUFDLFlBQW9CO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFO1lBQ3BFLE9BQU8sNEJBQTRCLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUNwRSxPQUFPLDRCQUE0QixDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsWUFBb0I7UUFDekMsT0FBTyxVQUFVLE9BQVksRUFBRSxPQUFZO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFOUQsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQW1CLEVBQUUsYUFBcUIsRUFBRSx1QkFBb0M7UUFDMUcsSUFBSSx1QkFBdUIsRUFBRTtZQUMzQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssYUFBYSxDQUFDLENBQUM7U0FDNUY7YUFBTTtZQUNMLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssYUFBYSxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsWUFBd0I7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0MsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksd0JBQXdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsT0FBTyx3QkFBd0IsQ0FBQztJQUNsQyxDQUFDO0lBRU8sV0FBVyxDQUFDLGdCQUE0QjtRQUM5QyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1QyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxhQUFrQixFQUFFLHdCQUFpQyxLQUFLO1FBQzlFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsT0FBTyxDQUNMLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQy9FLENBQUMscUJBQXFCLEtBQUssSUFBSSxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDakYsQ0FBQztTQUNIO1FBRUQsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsWUFBd0IsRUFDeEIsd0JBQWlDLEtBQUssRUFDdEMsdUJBQW9DO1FBRXBDLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxFQUFFO1lBQy9ELElBQ0UsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLGtCQUFrQixFQUNsQixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3BFLHVCQUF1QixDQUN4QjtnQkFDRCxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLEVBQ3pEO2dCQUNBLE9BQU8sa0JBQWtCLENBQUM7YUFDM0I7WUFFRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkMsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsZ0JBQTRCO1FBQzFELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDeEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUNsQyxNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFFdEcsSUFBSSw2QkFBNkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBRWhELHVCQUF1QixDQUFDLElBQUksQ0FDMUIsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQzFELEdBQUcsNkJBQTZCLENBQ2pDLENBQUM7YUFDSDtZQUVELE9BQU8sdUJBQXVCLENBQUM7UUFDakMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGdCQUE4QixFQUFFO1FBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFFbEMsSUFDRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxFQUNwQztZQUNBLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNyQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0UsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHVCQUF1QixDQUFDLE1BQVc7UUFDekMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVU7UUFDNUIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVPLGdDQUFnQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVyRixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7d0ZBeitCbUIsb0JBQW9CO3VFQUFwQixvQkFBb0I7QUFZRDtJQUFmLFlBQVksRUFBRTt1REFBNEI7QUFrSGhDO0lBQWYsWUFBWSxFQUFFO21EQUFpQjtBQVdKO0lBQWYsWUFBWSxFQUFFOzZEQUFtQztBQVdoQztJQUFmLFlBQVksRUFBRTsrREFBcUM7dUZBcEpoRSxvQkFBb0I7Y0FEekMsU0FBUztvRUFhK0IsU0FBUztrQkFBL0MsS0FBSzttQkFBQyxjQUFjO1lBR0gsS0FBSztrQkFBdEIsS0FBSzttQkFBQyxTQUFTO1lBR0MsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBR0EsSUFBSTtrQkFBbEIsS0FBSzttQkFBQyxNQUFNO1lBeUJjLGFBQWE7a0JBQXZDLEtBQUs7bUJBQUMsa0JBQWtCO1lBV08sY0FBYztrQkFBN0MsS0FBSzttQkFBQyxtQkFBbUI7WUFrQmUsc0JBQXNCO2tCQUE5RCxLQUFLO21CQUFDLDRCQUE0QjtZQWlDbEIsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBZU0sUUFBUTtrQkFBNUIsS0FBSzttQkFBQyxZQUFZO1lBR2UsS0FBSztrQkFBdEMsS0FBSzttQkFBQyxTQUFTO1lBVzhCLGVBQWU7a0JBQTVELEtBQUs7bUJBQUMscUJBQXFCO1lBV29CLGlCQUFpQjtrQkFBaEUsS0FBSzttQkFBQyx1QkFBdUI7WUFXVixNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFpQk8sYUFBYTtrQkFBckMsTUFBTTttQkFBQyxlQUFlO1lBVUcsV0FBVztrQkFBcEMsTUFBTTttQkFBQyxnQkFBZ0I7WUFtREksV0FBVztrQkFBdEMsS0FBSzttQkFBQyxlQUFlO1lBaUJRLFlBQVk7a0JBQXpDLEtBQUs7bUJBQUMsaUJBQWlCO1lBbUJhLGtCQUFrQjtrQkFBdEQsS0FBSzttQkFBQyx3QkFBd0I7WUFvQkgsVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlO1lBNEJNLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQXdCVyxlQUFlO2tCQUEvQyxLQUFLO21CQUFDLG9CQUFvQjtZQWtCRixRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFnQk8sWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFVUSxhQUFhO2tCQUE1QyxLQUFLO21CQUFDLG1CQUFtQjtZQWdCRCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFXRSxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUF3QlMsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBcUJVLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQTRCUSxZQUFZO2tCQUF6QyxLQUFLO21CQUFDLGlCQUFpQjtZQWtDQyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgdmFsaWRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xyXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XHJcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlck1vZGUgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci1tb2RlLmVudW0nO1xyXG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb0NvbWJvR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tZ3JvdXAuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9Db21ib0xpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLWxpdGVyYWxzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29tYm9PcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tb3B0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcclxuXHJcbmNvbnN0IFBPX0NPTUJPX0RFQk9VTkNFX1RJTUVfREVGQVVMVCA9IDQwMDtcclxuY29uc3QgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XHJcbmNvbnN0IFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQgPSAndmFsdWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHQgPSB7XHJcbiAgZW46IDxQb0NvbWJvTGl0ZXJhbHM+e1xyXG4gICAgbm9EYXRhOiAnTm8gZGF0YSBmb3VuZCdcclxuICB9LFxyXG4gIGVzOiA8UG9Db21ib0xpdGVyYWxzPntcclxuICAgIG5vRGF0YTogJ0RhdG9zIG5vIGVuY29udHJhZG9zJ1xyXG4gIH0sXHJcbiAgcHQ6IDxQb0NvbWJvTGl0ZXJhbHM+e1xyXG4gICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbydcclxuICB9LFxyXG4gIHJ1OiA8UG9Db21ib0xpdGVyYWxzPntcclxuICAgIG5vRGF0YTogJ9CU0LDQvdC90YvQtSDQvdC1INC90LDQudC00LXQvdGLJ1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogTyBgcG8tY29tYm9gIGV4aWJlIHVtYSBsaXN0YSBkZSBvcMOnw7VlcyBjb20gZsOhY2lsIHNlbGXDp8OjbyBlIGZpbHRyYWdlbS5cclxuICpcclxuICogQWzDqW0gZGEgZXhpYmnDp8OjbyBwYWRyw6NvLCBuZWxlIMOpIHBvc3PDrXZlbCBsaXN0YXIgYXMgb3DDtWVzIGVtIGFncnVwYW1lbnRvcy5cclxuICpcclxuICogw4kgcG9zc8OtdmVsIHNlbGVjaW9uYXIgZSBuYXZlZ2FyIGVudHJlIGFzIG9ww6fDtWVzIGRhIGxpc3RhIHRhbnRvIGF0cmF2w6lzIGRvICptb3VzZSogcXVhbnRvIGRvIHRlY2xhZG8uIE5vIHRlY2xhZG8gbmF2ZWd1ZSBjb21cclxuICogYXMgc2V0YXMgZSBwcmVzc2lvbmUgKkVudGVyKiBuYSBvcMOnw6NvIHF1ZSBkZXNlamFyLlxyXG4gKlxyXG4gKiBDb20gZWxlIHRhbWLDqW0gw6kgcG9zc8OtdmVsIGRlZmluaXIgdW1hIGxpc3RhIMOgIHBhcnRpciBkYSByZXF1aXNpw6fDo28gZGUgdW0gc2VydmnDp28gZGVmaW5pZG8gZW0gYHAtZmlsdGVyLXNlcnZpY2VgLlxyXG4gKlxyXG4gKiBFbSBgcC1maWx0ZXItbW9kZWAsIG8gZmlsdHJvIHBvZGVyw6Egc2VyIGNvbmZpZ3VyYWRvIHBhcmEgYnVzY2FyIG9ww7VlcyBxdWUgY29ycmVzcG9uZGFtIGFvIGluw61jaW8sIGZpbSBvdSBxdWUgY29udGVuaGEgbyB2YWxvciBkaWdpdGFkby5cclxuICpcclxuICogTyBgcG8tY29tYm9gIGd1YXJkYSBvIMO6bHRpbW8gdmFsb3IgY2FzbyBvIHVzdcOhcmlvIGRlc2lzdGEgZGUgdW1hIGJ1c2NhLCBkZWl4YW5kbyBvIGNhbXBvIG91IHByZXNzaW9uYW5kbyAqRXNjKi4gQ2FzbyBzZWphIGRpZ2l0YWRvIG5vXHJcbiAqIGNhbXBvIGRlIGJ1c2NhIGEgZGVzY3Jpw6fDo28gY29tcGxldGEgZGUgdW0gaXRlbSwgZW50w6NvIGEgc2VsZcOnw6NvIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBlZmV0dWFkYSBhbyBkZWl4YXIgbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVudGVyKi5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXHJcbiAgICpcclxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIExhYmVsIG5vIGNvbXBvbmVudGUuICovXHJcbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBwYXJhIG8gY2FtcG8uICovXHJcbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xyXG5cclxuICAvKiogTm9tZSBkbyBjb21wb25lbnRlLiAqL1xyXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZVxyXG4gICAqIGl0ZW5zIG5vIGNvbXBvbmVudGUuXHJcbiAgICogQ2FzbyBoYWphIGEgbmVjZXNzaWRhZGUgZGUgY3VzdG9taXphw6fDo28sIGVudMOjbyBwb2RlIHNlciBpbmZvcm1hZG8gdW0gc2VydmnDp28gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBQb0NvbWJvRmlsdGVyLlxyXG4gICAqXHJcbiAgICogQ2FzbyB1dGlsaXphZG8gdW1hIFVSTCwgbyBzZXJ2acOnbyBkZXZlIHNlciByZXRvcm5hZG8gbm8gcGFkcsOjbyBBUEkgVE9UVlMgZSB1dGlsaXphIGFzIHByb3ByaWVkYWRlc1xyXG4gICAqIGBwLWZpZWxkLWxhYmVsYCBlIGBwLWZpZWxkLXZhbHVlYCBwYXJhIGEgY29uc3RydcOnw6NvIGRhIGxpc3RhIGRlIGl0ZW5zLlxyXG4gICAqXHJcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBlbnTDo28gc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxyXG4gICAqIGBgYFxyXG4gICAqIHVybCArID9maWx0ZXI9UGV0ZXJcclxuICAgKiBgYGBcclxuICAgKlxyXG4gICAqIFNlIGZvciBkZWZpbmlkYSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBhIG1lc21hIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZGEuIFBvciBleGVtcGxvLCBwYXJhIG9cclxuICAgKiBwYXLDom1ldHJvIGB7IGFnZTogMjMgfWAgYSBVUkwgZmljYXJpYTpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmYWdlPTIzJmZpbHRlcj1QZXRlclxyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIGZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBTZSB2ZXJkYWRlaXJvIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgbyBjb21ibywgQW8gY2hlZ2FyIGFvIGZpbSBkYSB0YWJlbGEgZXhlY3V0YXLDoSBub3ZhIGJ1c2NhIGRvcyBkYWRvcyBjb25mb3JtZSBwYWdpbmHDp8Ojby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgc2V0IGluZmluaXRlU2Nyb2xsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmZpbml0ZVNjcm9sbCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluZmluaXRlU2Nyb2xsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBvIHBlcmNlbnR1YWwgbmVjZXNzw6FyaW8gcGFyYSBkaXNwYXJhciBvIGV2ZW50byBgc2hvdy1tb3JlYCwgcXVlIMOpIHJlc3BvbnPDoXZlbCBwb3IgY2FycmVnYXIgbWFpcyBkYWRvcyBubyBjb21iby4gQ2FzbyBvIHZhbG9yIHNlamEgbWFpb3IgcXVlIDEwMCBvdSBtZW5vciBxdWUgMCwgbyB2YWxvciBwYWRyw6NvIHNlcsOhIDEwMCUuXHJcbiAgICpcclxuICAgKiAqKkV4ZW1wbG9zKipcclxuICAgKiAtIHAtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlID0gODA6IFF1YW5kbyBhdGluZ2lyIDgwJSBkbyBzY3JvbGwgZG8gY29tYm8sIG8gYHNob3ctbW9yZWAgc2Vyw6EgZGlzcGFyYWRvLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UnKSBzZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmZpbml0ZVNjcm9sbERpc3RhbmNlID0gdmFsdWUgPiAxMDAgfHwgdmFsdWUgPCAwID8gMTAwIDogdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmZpbml0ZVNjcm9sbERpc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBvIMOtY29uZSBxdWUgc2Vyw6EgZXhpYmlkbyBubyBpbsOtY2lvIGRvIGNhbXBvLlxyXG4gICAqXHJcbiAgICogw4kgcG9zc8OtdmVsIHVzYXIgcXVhbHF1ZXIgdW0gZG9zIMOtY29uZXMgZGEgW0JpYmxpb3RlY2EgZGUgw61jb25lc10oL2d1aWRlcy9pY29ucykuIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby1jb21ibyBwLWljb249XCJwby1pY29uLXVzZXJcIiBwLWxhYmVsPVwiUE8gY29tYm9cIj48L3BvLWNvbWJvPlxyXG4gICAqIGBgYFxyXG4gICAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIHV0aWxpemFyIG91dHJhcyBmb250ZXMgZGUgw61jb25lcywgcG9yIGV4ZW1wbG8gYSBiaWJsaW90ZWNhICpGb250IEF3ZXNvbWUqLCBkYSBzZWd1aW50ZSBmb3JtYTpcclxuICAgKiBgYGBcclxuICAgKiA8cG8tY29tYm8gcC1pY29uPVwiZmEgZmEtcG9kY2FzdFwiIHAtbGFiZWw9XCJQTyBjb21ib1wiPjwvcG8tY29tYm8+XHJcbiAgICogYGBgXHJcbiAgICogT3V0cmEgb3DDp8OjbyBzZXJpYSBhIGN1c3RvbWl6YcOnw6NvIGRvIMOtY29uZSBhdHJhdsOpcyBkbyBgVGVtcGxhdGVSZWZgLCBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcclxuICAgKiBgYGBcclxuICAgKiA8cG8tY29tYm8gW3AtaWNvbl09XCJ0ZW1wbGF0ZVwiIHAtbGFiZWw9XCJjb21ibyB0ZW1wbGF0ZSBpb25pY1wiPjwvcG8tY29tYm8+XHJcbiAgICpcclxuICAgKiA8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxyXG4gICAqICA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6IGluaGVyaXRcIiBuYW1lPVwiaGVhcnRcIj48L2lvbi1pY29uPlxyXG4gICAqIDwvbmctdGVtcGxhdGU+XHJcbiAgICogYGBgXHJcbiAgICogPiBQYXJhIG8gw61jb25lIGVucXVhZHJhciBjb3JyZXRhbWVudGUsIGRldmUtc2UgdXRpbGl6YXIgYGZvbnQtc2l6ZTogaW5oZXJpdGAgY2FzbyBvIMOtY29uZSB1dGlsaXphZG8gbsOjbyBhcGxpcXVlLW8uXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWljb24nKSBpY29uPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxyXG4gICAqXHJcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcclxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcclxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFNlIHZlcmRhZGVpcm8sIG8gY2FtcG8gcmVjZWJlcsOhIHVtIGJvdMOjbyBwYXJhIHNlciBsaW1wby4gKi9cclxuICBASW5wdXQoJ3AtY2xlYW4nKSBASW5wdXRCb29sZWFuKCkgY2xlYW4/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogU2UgdmVyZGFkZWlybywgbyBldmVudG8gYHAtY2hhbmdlYCByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBgUG9Db21ib09wdGlvbmAgcmVmZXJlbnRlIMOgIG9ww6fDo28gc2VsZWNpb25hZGEuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWVtaXQtb2JqZWN0LXZhbHVlJykgQElucHV0Qm9vbGVhbigpIGVtaXRPYmplY3RWYWx1ZT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFNlIHZlcmRhZGVpcm8sIGRlc2FiaWxpdGFyw6EgYSBidXNjYSBkZSB1bSBpdGVtIHZpYSBUQUIuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWRpc2FibGVkLXRhYi1maWx0ZXInKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWRUYWJGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBEZXZlIHNlciBpbmZvcm1hZGEgdW1hIGZ1bsOnw6NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBhbHRlcmHDp8O1ZXMgbm8gbmdNb2RlbC4gQSBmdW7Dp8OjbyByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBtb2RlbCBtb2RpZmljYWRvLlxyXG4gICAqXHJcbiAgICogPiBQb2RlLXNlIG9wdGFyIHBlbG8gcmVjZWJpbWVudG8gZG8gb2JqZXRvIHNlbGVjaW9uYWRvIGFvIGludsOpcyBkbyBtb2RlbCBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBgcC1lbWl0LW9iamVjdC12YWx1ZWAuXHJcbiAgICovXHJcbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBGdW7Dp8OjbyBwYXJhIGF0dWFsaXphciBvIG5nTW9kZWwgZG8gY29tcG9uZW50ZSwgbmVjZXNzw6FyaW8gcXVhbmRvIG7Do28gZm9yIHV0aWxpemFkbyBkZW50cm8gZGEgdGFnIGZvcm0uXHJcbiAgICpcclxuICAgKiBOYSB2ZXJzw6NvIDEyLjIuMCBkbyBBbmd1bGFyIGEgdmVyaWZpY2HDp8OjbyBgc3RyaWN0VGVtcGxhdGVzYCB2ZW0gdHJ1ZSBjb21vIGRlZmF1bHQuIFBvcnRhbnRvLCBwYXJhIHV0aWxpemFyXHJcbiAgICogdHdvLXdheSBiaW5kaW5nIG5vIGNvbXBvbmVudGUgZGV2ZSBzZSB1dGlsaXphciBkYSBzZWd1aW50ZSBmb3JtYTpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby1jb21ibyAuLi4gW25nTW9kZWxdPVwiY29tYm9Nb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbWJvTW9kZWwgPSAkZXZlbnRcIj4gPC9wby1jb21ibz5cclxuICAgKiBgYGBcclxuICAgKlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIFNlYXJjaCBpbnB1dC4gQSBmdW7Dp8OjbyByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBpbnB1dCBtb2RpZmljYWRvLlxyXG4gICAqXHJcbiAgICovXHJcbiAgQE91dHB1dCgncC1pbnB1dC1jaGFuZ2UnKSBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY2FjaGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZGVmYXVsdFNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xyXG4gIGZpcnN0SW5Xcml0ZVZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0ZpbHRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGtleXVwU3Vic2NyaWJlOiBhbnk7XHJcbiAgb25Nb2RlbENoYW5nZTogYW55O1xyXG4gIHByZXZpb3VzU2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIHNlbGVjdGVkT3B0aW9uOiBhbnk7XHJcbiAgc2VsZWN0ZWRWYWx1ZTogYW55O1xyXG4gIHNlbGVjdGVkVmlldzogYW55O1xyXG4gIHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xyXG4gIHZpc2libGVPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcGFnZTogbnVtYmVyID0gMTtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGR5bmFtaWNMYWJlbDogc3RyaW5nID0gJ2xhYmVsJztcclxuICBkeW5hbWljVmFsdWU6IHN0cmluZyA9ICd2YWx1ZSc7XHJcblxyXG4gIHByb3RlY3RlZCBjYWNoZVN0YXRpY09wdGlvbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcm90ZWN0ZWQgY29tYm9PcHRpb25zTGlzdDogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfY2hhbmdlT25FbnRlcj86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9kZWJvdW5jZVRpbWU/OiBudW1iZXIgPSA0MDA7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWRJbml0RmlsdGVyPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw/OiBzdHJpbmcgPSAnbGFiZWwnO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsdWU/OiBzdHJpbmcgPSAndmFsdWUnO1xyXG4gIHByaXZhdGUgX2ZpbHRlck1pbmxlbmd0aD86IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyTW9kZT86IFBvQ29tYm9GaWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcclxuICBwcml2YXRlIF9maWx0ZXJQYXJhbXM/OiBhbnk7XHJcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM/OiBQb0NvbWJvTGl0ZXJhbHM7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4gPSBbXTtcclxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaW5maW5pdGVTY3JvbGxEaXN0YW5jZT86IG51bWJlciA9IDEwMDtcclxuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9oZWlnaHQ/OiBudW1iZXI7XHJcblxyXG4gIC8vIHV0aWxpemFkbyBwYXJhIGZhemVyIG8gY29udHJvbGUgZGUgYXR1YWxpemFyIG8gbW9kZWwuXHJcbiAgLy8gbsOjbyBkZXZlIGZvcsOnYXIgYSBhdHVhbGl6YcOnw6NvIHNlIG8gZ2F0aWxobyBmb3IgbyB3cml0ZVZhbHVlIHBhcmEgbsOjbyBkZWl4YXIgbyBjYW1wbyBkaXJ0eS5cclxuICBwcml2YXRlIGZyb21Xcml0ZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XHJcblxyXG4gIC8qKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBlbnF1YW50byBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8uICovXHJcbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGVtIHF1YW50byB0ZW1wbyAoZW0gbWlsaXNzZWd1bmRvcyksIGFndWFyZGEgcGFyYSBhY2lvbmFyIG8gZXZlbnRvIGRlIGZpbHRybyBhcMOzcyBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhLlxyXG4gICAqIFNlcsOhIHV0aWxpemFkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGA0MDBgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWRlYm91bmNlLXRpbWUnKSBzZXQgZGVib3VuY2VUaW1lKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VJbnQoPGFueT52YWx1ZSwgMTApO1xyXG5cclxuICAgIHRoaXMuX2RlYm91bmNlVGltZSA9ICFpc05hTihwYXJzZWRWYWx1ZSkgJiYgcGFyc2VkVmFsdWUgPiAwID8gcGFyc2VkVmFsdWUgOiBQT19DT01CT19ERUJPVU5DRV9USU1FX0RFRkFVTFQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBEZXNhYmlsaXRhIG8gZmlsdHJvIGluaWNpYWwgbm8gc2VydmnDp28sIHF1ZSDDqSBleGVjdXRhZG8gbm8gcHJpbWVpcm8gY2xpcXVlIG5vIGNhbXBvLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxyXG4gICAqXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWRpc2FibGVkLWluaXQtZmlsdGVyJykgc2V0IGRpc2FibGVkSW5pdEZpbHRlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWRJbml0RmlsdGVyID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWRJbml0RmlsdGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkSW5pdEZpbHRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcclxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cclxuICAgKlxyXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxyXG4gICAqIFBvQ29tYm9PcHRpb24uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZmlsdGVyU2VydmljZSkge1xyXG4gICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUO1xyXG5cclxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZpZWxkVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcclxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cclxuICAgKlxyXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxyXG4gICAqIFBvQ29tYm9PcHRpb24uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgbGFiZWxgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgc2V0IGZpZWxkTGFiZWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZmlsdGVyU2VydmljZSkge1xyXG4gICAgICB0aGlzLmR5bmFtaWNMYWJlbCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2ZpZWxkTGFiZWwgPSB2YWx1ZSB8fCBQT19DT01CT19GSUVMRF9MQUJFTF9ERUZBVUxUO1xyXG5cclxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkTGFiZWwgPSB0aGlzLl9maWVsZExhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogVmFsb3IgbcOtbmltbyBkZSBjYXJhY3RlcmVzIHBhcmEgcmVhbGl6YXIgbyBmaWx0cm8gbm8gc2VydmnDp28uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgMGBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtZmlsdGVyLW1pbmxlbmd0aCcpIHNldCBmaWx0ZXJNaW5sZW5ndGgodmFsdWU6IG51bWJlcikge1xyXG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XHJcblxyXG4gICAgdGhpcy5fZmlsdGVyTWlubGVuZ3RoID0gTnVtYmVyLmlzSW50ZWdlcihwYXJzZVZhbHVlKSA/IHBhcnNlVmFsdWUgOiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlck1pbmxlbmd0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNaW5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIERlZmluZSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcXVpcmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOhIGV4aWJpZGEuXHJcbiAgICpcclxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxyXG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSW5kaWNhIHF1ZSBvIGV2ZW50byBgcC1jaGFuZ2VgIHPDsyBzZXLDoSBkaXNwYXJhZG8gYW8gY2xpY2FyIG91IHByZXNzaW9uYXIgYSB0ZWNsYSBcIkVudGVyXCIgc29icmUgdW1hIG9ww6fDo28gc2VsZWNpb25hZGEuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWNoYW5nZS1vbi1lbnRlcicpIHNldCBjaGFuZ2VPbkVudGVyKGNoYW5nZU9uRW50ZXI6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NoYW5nZU9uRW50ZXIgPSBjb252ZXJ0VG9Cb29sZWFuKGNoYW5nZU9uRW50ZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoYW5nZU9uRW50ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlT25FbnRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBvcHRpb25hbFxyXG4gICAqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxhIGRlc2NyacOnw6NvLiAqL1xyXG4gIEBJbnB1dCgncC1zb3J0Jykgc2V0IHNvcnQoc29ydDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc29ydCA9IGNvbnZlcnRUb0Jvb2xlYW4oc29ydCk7XHJcbiAgICB0aGlzLmNvbWJvTGlzdERlZmluaXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc29ydCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGEgbGlzdGEgZGUgb3DDp8O1ZXMgZG8gYHBvLWNvbWJvYC5cclxuICAgKlxyXG4gICAqID4gQSBsaXN0YSBwb2RlIHNlciBkZWZpbmlkYSB1dGlsaXphbmRvIHVtIGFycmF5IGNvbSBvIHZhbG9yIHJlcHJlc2VudGFuZG8gbyBgdmFsdWVgIGUgbyBgbGFiZWxgIGRhcyBzZWd1aW50ZXMgZm9ybWFzOlxyXG4gICAqXHJcbiAgICogYGBgXHJcbiAgICogPHBvLWNvbWJvIG5hbWU9XCJjb21ib1wiIHAtbGFiZWw9XCJQTyBDb21ib1wiIFtwLW9wdGlvbnNdPVwiW3t2YWx1ZTogMSwgbGFiZWw6ICdPbmUnfSwge3ZhbHVlOiAyLCBsYWJlbDogJ3R3byd9XVwiPiA8L3BvLWNvbWJvPlxyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogYGBgXHJcbiAgICogPHBvLWNvbWJvIG5hbWU9XCJjb21ib1wiIHAtbGFiZWw9XCJQTyBDb21ib1wiIFtwLW9wdGlvbnNdPVwiW3tuYW1lOiAnUm9nZXInLCBhZ2U6IDI4fSwge25hbWU6ICdBbm5lJywgYWdlOiAzNX1dXCIgcC1maWVsZC1sYWJlbD1cIm5hbWVcIiBwLWZpZWxkLXZhbHVlPVwiYWdlXCI+IDwvcG8tY29tYm8+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiAtIEFjb25zZWxoYS1zZSB1dGlsaXphciB2YWxvcmVzIGRpc3RpbnRvcyBubyBgbGFiZWxgIGUgYHZhbHVlYCBkb3MgaXRlbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib09wdGlvbkdyb3VwIHwgYW55Pikge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyBvcHRpb25zIDogW107XHJcblxyXG4gICAgdGhpcy5jb21ib0xpc3REZWZpbml0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wdGlvbnMoKTogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cCB8IGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gZmlsdHJvIGRhIGxpc3RhIGRlIHNlbGXDp8OjbzogYHN0YXJ0c1dpdGhgLCBgY29udGFpbnNgIG91IGBlbmRzV2l0aGAuXHJcbiAgICpcclxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1zZXJ2aWNlYCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgYHN0YXJ0c1dpdGhgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWZpbHRlci1tb2RlJykgc2V0IGZpbHRlck1vZGUoZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcclxuICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBmaWx0ZXJNb2RlIGluIFBvQ29tYm9GaWx0ZXJNb2RlID8gZmlsdGVyTW9kZSA6IFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX2ZpbHRlck1vZGUudG9TdHJpbmcoKSkge1xyXG4gICAgICBjYXNlICdzdGFydHNXaXRoJzpcclxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY29udGFpbnMnOlxyXG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5jb250YWlucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW5kc1dpdGgnOlxyXG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5lbmRzV2l0aDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJNb2RlKCk6IFBvQ29tYm9GaWx0ZXJNb2RlIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSAqUG9Db21ib0ZpbHRlciouXHJcbiAgICpcclxuICAgKiA+IENhc28gYSBsaXN0YSBjb250ZW5oYSBhZ3J1cGFtZW50b3MsIG9zIG1lc21vcyBzw7Mgc2Vyw6NvIGV4aWJpZG9zIHNlIGhvdXZlciBubyBtw61uaW1vIHVtYSBvcMOnw6NvIHF1ZSBjb3JyZXNwb25kYSDDoCBwZXNxdWlzYS5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtZmlsdGVyLXBhcmFtcycpIHNldCBmaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMuX2ZpbHRlclBhcmFtcyA9IGZpbHRlclBhcmFtcyB8fCBmaWx0ZXJQYXJhbXMgPT09IDAgfHwgZmlsdGVyUGFyYW1zID09PSBmYWxzZSA/IGZpbHRlclBhcmFtcyA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1jb21ib2AuXHJcbiAgICpcclxuICAgKiBQYXJhIHV0aWxpemFyIGJhc3RhIHBhc3NhciBhIGxpdGVyYWwgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxyXG4gICAqXHJcbiAgICogYGBgXHJcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0NvbWJvTGl0ZXJhbHMgPSB7XHJcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIHZhbG9yJ1xyXG4gICAqICB9O1xyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGEgbGl0ZXJhbCBjdXN0b21pemFkYSwgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIDxwby1jb21ib1xyXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cclxuICAgKiA8L3BvLWNvbWJvPlxyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXHJcbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvQ29tYm9MaXRlcmFscykge1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XHJcbiAgICAgICAgLi4ucG9Db21ib0xpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxyXG4gICAgICAgIC4uLnBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXHJcbiAgICAgICAgLi4udmFsdWVcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9Db21ib0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsaXRlcmFscygpIHtcclxuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNPcHRpb25Hcm91cExpc3QoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGggJiYgdGhpcy5fb3B0aW9uc1swXS5oYXNPd25Qcm9wZXJ0eSgnb3B0aW9ucycpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IHRoaXMuY2hlY2tJZlNlcnZpY2UoJ3ZhbHVlJyk7XHJcbiAgICB0aGlzLmR5bmFtaWNMYWJlbCA9IHRoaXMuY2hlY2tJZlNlcnZpY2UoJ2xhYmVsJyk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcclxuICB9XHJcblxyXG4gIG9uSW5pdFNlcnZpY2UoKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xyXG4gICAgICB0aGlzLmluaXRJbnB1dE9ic2VydmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9Db21ib0ZpbHRlciB8IHN0cmluZykge1xyXG4gICAgaWYgKHNlcnZpY2UpIHtcclxuICAgICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZSA9IDxQb0NvbWJvRmlsdGVyU2VydmljZT5zZXJ2aWNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZGVmYXVsdFNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmVNZXRob2Qoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCwgZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcclxuICAgIHN3aXRjaCAoZmlsdGVyTW9kZSkge1xyXG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aChzZWFyY2gsIG9wdGlvbik7XHJcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbnMoc2VhcmNoLCBvcHRpb24pO1xyXG4gICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmVuZHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0c1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgY29udGFpbnMoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID4gLTE7XHJcbiAgfVxyXG5cclxuICBlbmRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb25bdGhpcy5keW5hbWljTGFiZWxdLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uRnJvbVZhbHVlKHZhbHVlOiBhbnksIG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbnMgPyBvcHRpb25zLmZpbmQoKG9wdGlvbjogYW55KSA9PiB0aGlzLmlzRXF1YWwob3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSwgdmFsdWUpKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25Gcm9tTGFiZWwobGFiZWw6IGFueSwgb3B0aW9uczogYW55KSB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gb3B0aW9ucy5maW5kKFxyXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbjogYW55LCBpc1VwZGF0ZU1vZGVsOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgY29uc3Qgb3B0aW9uTGFiZWwgPSAob3B0aW9uICYmIG9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0pIHx8ICcnO1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYXJpYWJsZXMob3B0aW9uKTtcclxuXHJcbiAgICAvLyBhdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHF1YW5kbyBmb3IgY2hhbmdlT25FbnRlciBhcGVuYXMgc2UgZm9yIHBhcmEgYXR1YWxpemFyIG8gbW9kZWwuXHJcbiAgICBpZiAodGhpcy5jaGFuZ2VPbkVudGVyICYmIGlzVXBkYXRlTW9kZWwpIHtcclxuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hhbmdlT25FbnRlcikge1xyXG4gICAgICB0aGlzLnNldElucHV0VmFsdWUob3B0aW9uTGFiZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1VwZGF0ZU1vZGVsKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uPy5bdGhpcy5keW5hbWljVmFsdWVdICE9PSB1bmRlZmluZWQgPyBvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdIDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVNb2RlbChvcHRpb25WYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxsTW9kZWxDaGFuZ2UodmFsdWU6IGFueSkge1xyXG4gICAgLy8gQ2FzbyBvIGNvbXBvbmVudGUgZXN0aXZlciBkZW50cm8gZGUgdW0gZm9ybSwgdGVyw6EgYWNlc3NvIGFvIG3DqXRvZG8gb25Nb2RlbENoYW5nZS5cclxuICAgIHJldHVybiB0aGlzLm9uTW9kZWxDaGFuZ2UgPyB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpIDogdGhpcy5uZ01vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaXNFcXVhbCh2YWx1ZTogYW55LCBpbnB1dFZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICgodmFsdWUgfHwgdmFsdWUgPT09IDApICYmIGlucHV0VmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgPT09IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHZhbHVlID09PSBudWxsICYmIGlucHV0VmFsdWUgIT09IG51bGwpIHx8ICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgdmFsdWUgPSBgJHt2YWx1ZX1gOyAvLyBUcmFuc2Zvcm1hbmRvIGVtIHN0cmluZ1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZSA9PT0gaW5wdXRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvckxhYmVsKHNlYXJjaDogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxhbnk+LCBmaWx0ZXJNb2RlOiBQb0NvbWJvRmlsdGVyTW9kZSkge1xyXG4gICAgaWYgKHNlYXJjaCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG5ld09wdGlvbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgbGV0IGFkZGVkT3B0aW9uc0dyb3VwVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgbGV0IG9wdGlvbnNHcm91cFRpdGxlOiBQb0NvbWJvR3JvdXA7XHJcblxyXG4gICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBpZiAoJ29wdGlvbnMnIGluIG9wdGlvbikge1xyXG4gICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIChvcHRpb25zR3JvdXBUaXRsZSA9IG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSAmJiAodGhpcy5jb21wYXJlTWV0aG9kKHNlYXJjaCwgb3B0aW9uLCBmaWx0ZXJNb2RlKSB8fCB0aGlzLnNlcnZpY2UpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiAhYWRkZWRPcHRpb25zR3JvdXBUaXRsZSkge1xyXG4gICAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uc0dyb3VwVGl0bGUpO1xyXG4gICAgICAgICAgICBhZGRlZE9wdGlvbnNHcm91cFRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBuZXdPcHRpb25zW3RoaXMuaXNPcHRpb25Hcm91cExpc3QgPyAxIDogMF07XHJcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KG5ld09wdGlvbnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUNvbWJvTGlzdChvcHRpb25zPzogQXJyYXk8YW55Pikge1xyXG4gICAgY29uc3QgY29weU9wdGlvbnMgPSBvcHRpb25zIHx8IFsuLi50aGlzLmNvbWJvT3B0aW9uc0xpc3RdO1xyXG5cclxuICAgIGNvbnN0IG5ld09wdGlvbnMgPVxyXG4gICAgICAhb3B0aW9ucyAmJiAhdGhpcy5pbmZpbml0ZVNjcm9sbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgPyBbeyAuLi50aGlzLnNlbGVjdGVkT3B0aW9uIH1dIDogY29weU9wdGlvbnM7XHJcblxyXG4gICAgdGhpcy52aXNpYmxlT3B0aW9ucyA9IG5ld09wdGlvbnM7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IGNvcHlPcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZXh0T3B0aW9uKHZhbHVlOiBhbnksIG9wdGlvbnM6IEFycmF5PGFueT4sIHJldmVyc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgb3B0aW9uc0xpc3QgPSByZXZlcnNlID8gb3B0aW9ucy5zbGljZSgwKS5yZXZlcnNlKCkgOiBvcHRpb25zLnNsaWNlKDApO1xyXG4gICAgbGV0IG9wdGlvbkZvdW5kID0gbnVsbDtcclxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnNMaXN0KSB7XHJcbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmICFvcHRpb25Gb3VuZCkge1xyXG4gICAgICAgIG9wdGlvbkZvdW5kID0gb3B0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb25bdGhpcy5keW5hbWljVmFsdWVdICYmIGZvdW5kKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pc0VxdWFsKG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0sIHZhbHVlKSkge1xyXG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcHRpb25Gb3VuZDtcclxuICB9XHJcblxyXG4gIGdldEluZGV4U2VsZWN0ZWRWaWV3KCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbXBhcmVPYmplY3RzKHRoaXMudmlzaWJsZU9wdGlvbnNbaV0sIHRoaXMuc2VsZWN0ZWRWaWV3KSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVPYmplY3RzKG9iajE6IGFueSwgb2JqMjogYW55KSB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xyXG4gIH1cclxuXHJcbiAgdmVyaWZ5VmFsaWRPcHRpb24oKSB7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XHJcblxyXG4gICAgY29uc3Qgb3B0aW9uRm91bmQgPSB0aGlzLmdldE9wdGlvbkZyb21MYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xyXG5cclxuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25Gb3VuZCAmJiBvcHRpb25Gb3VuZFt0aGlzLmR5bmFtaWNWYWx1ZV0gIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uRm91bmQpO1xyXG5cclxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gb3B0aW9uRm91bmRbdGhpcy5keW5hbWljTGFiZWxdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSAhPT0gaW5wdXRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVXaXRoT2xkT3B0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlbGVjdGVkT3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlICYmICFvcHRpb25Gb3VuZCkge1xyXG4gICAgICBjb25zdCBpc0lucHV0VmFsdWVEaWZmU2VsZWN0ZWRMYWJlbCA9ICEhKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gIT09IGlucHV0VmFsdWVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsLCBpc0lucHV0VmFsdWVEaWZmU2VsZWN0ZWRMYWJlbCB8fCB0aGlzLmNoYW5nZU9uRW50ZXIpO1xyXG5cclxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlY2ViZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWxcclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuZnJvbVdyaXRlVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIGlmICh2YWxpZFZhbHVlKHZhbHVlKSAmJiAhdGhpcy5zZXJ2aWNlICYmIHRoaXMuY29tYm9PcHRpb25zTGlzdCAmJiB0aGlzLmNvbWJvT3B0aW9uc0xpc3QubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uRnJvbVZhbHVlKHZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uKTtcclxuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlIGhvdXZlciBzZXJ2acOnbyBidXNjYSBwZWxvIG1vZGVsLlxyXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2VydmljZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeVZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcclxuICAgICAgdGhpcy51cGRhdGVIYXNOZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVxdWlyZWQ6IHtcclxuICAgICAgICAgIHZhbGlkOiBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKHZhbHVlKSB7XHJcbiAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xyXG4gICAgdGhpcy5pbml0SW5wdXRPYnNlcnZhYmxlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUhhc05leHQoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb25maWdBZnRlclNldEZpbHRlclNlcnZpY2Uoc2VydmljZTogUG9Db21ib0ZpbHRlciB8IHN0cmluZykge1xyXG4gICAgaWYgKHNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gW107XHJcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVLZXl1cE9ic2VydmFibGUoKTtcclxuICAgICAgdGhpcy5vbkluaXRTZXJ2aWNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlcnZpY2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IHRoaXMuY2FjaGVTdGF0aWNPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVLZXl1cE9ic2VydmFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5rZXl1cFN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XHJcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcclxuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21ib0xpc3REZWZpbml0aW9ucygpIHtcclxuICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IHRoaXMub3B0aW9ucy5sZW5ndGggPiAwID8gdGhpcy5saXN0aW5nQ29tYm9PcHRpb25zKHRoaXMub3B0aW9ucykgOiB0aGlzLm9wdGlvbnM7XHJcbiAgICB0aGlzLmNhY2hlU3RhdGljT3B0aW9ucyA9IHRoaXMuY29tYm9PcHRpb25zTGlzdDtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0lmU2VydmljZShkeW5hbWljVmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCh0aGlzLnNlcnZpY2UgfHwgdGhpcy5maWx0ZXJTZXJ2aWNlKSAmJiBkeW5hbWljVmFsdWUgPT09ICdsYWJlbCcpIHtcclxuICAgICAgcmV0dXJuIFBPX0NPTUJPX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XHJcbiAgICB9XHJcbiAgICBpZiAoKHRoaXMuc2VydmljZSB8fCB0aGlzLmZpbHRlclNlcnZpY2UpICYmIGR5bmFtaWNWYWx1ZSA9PT0gJ3ZhbHVlJykge1xyXG4gICAgICByZXR1cm4gUE9fQ09NQk9fRklFTERfVkFMVUVfREVGQVVMVDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VydmljZSAmJiBkeW5hbWljVmFsdWUgPT09ICdsYWJlbCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGRMYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VydmljZSAmJiBkeW5hbWljVmFsdWUgPT09ICd2YWx1ZScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZU9wdGlvbnMoZHluYW1pY0xhYmVsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9uQTogYW55LCBvcHRpb25COiBhbnkpIHtcclxuICAgICAgY29uc3QgbGFiZWxBID0gb3B0aW9uQVtkeW5hbWljTGFiZWxdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgbGFiZWxCID0gb3B0aW9uQltkeW5hbWljTGFiZWxdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgIHJldHVybiBsYWJlbEEgPCBsYWJlbEIgPyAtMSA6IGxhYmVsQSA+IGxhYmVsQiA/IDEgOiAwO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzRHVwbGljYXRlZE9wdGlvbihvcHRpb25zOiBBcnJheTxhbnk+LCBjdXJyZW50T3B0aW9uOiBzdHJpbmcsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zPzogQXJyYXk8YW55Pikge1xyXG4gICAgaWYgKGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKSB7XHJcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucy5zb21lKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5keW5hbWljTGFiZWxdID09PSBjdXJyZW50T3B0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvcHRpb25zLnNvbWUob3B0aW9uID0+IG9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0gPT09IGN1cnJlbnRPcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0aW5nQ29tYm9PcHRpb25zKGNvbWJvT3B0aW9uczogQXJyYXk8YW55Pikge1xyXG4gICAgY29uc3QgY29tYm9PcHRpb25zTGlzdCA9IGNvbWJvT3B0aW9ucy5jb25jYXQoKTtcclxuICAgIGNvbnN0IHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdCA9IHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zKGNvbWJvT3B0aW9uc0xpc3QpO1xyXG5cclxuICAgIHRoaXMuc29ydE9wdGlvbnModmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlDb21ib09wdGlvbnNHcm91cCh2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnRPcHRpb25zKGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgIGlmIChjb21ib09wdGlvbnNMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zb3J0KSB7XHJcbiAgICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnNvcnQodGhpcy5jb21wYXJlT3B0aW9ucyh0aGlzLmR5bmFtaWNMYWJlbCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVZhbHVlKGN1cnJlbnRPcHRpb246IGFueSwgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gY3VycmVudE9wdGlvbjtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgICh2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdKSAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCkgfHxcclxuICAgICAgICAodmVyaWZ5aW5nT3B0aW9uc0dyb3VwID09PSB0cnVlICYmIHZhbGlkVmFsdWUoY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNWYWx1ZV0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWxpZFZhbHVlKGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSAmJiAhb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyaWZ5Q29tYm9PcHRpb25zKFxyXG4gICAgY29tYm9PcHRpb25zOiBBcnJheTxhbnk+LFxyXG4gICAgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PGFueT5cclxuICApIHtcclxuICAgIHJldHVybiBjb21ib09wdGlvbnMucmVkdWNlKChhY2N1bXVsYXRlZE9wdGlvbnMsIGN1cnJlbnRPcHRpb24pID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLnZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbikgfHxcclxuICAgICAgICB0aGlzLmhhc0R1cGxpY2F0ZWRPcHRpb24oXHJcbiAgICAgICAgICBhY2N1bXVsYXRlZE9wdGlvbnMsXHJcbiAgICAgICAgICBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY1ZhbHVlXSB8fCBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSxcclxuICAgICAgICAgIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zXHJcbiAgICAgICAgKSB8fFxyXG4gICAgICAgICF0aGlzLnZhbGlkYXRlVmFsdWUoY3VycmVudE9wdGlvbiwgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZWRPcHRpb25zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhY2N1bXVsYXRlZE9wdGlvbnMucHVzaChjdXJyZW50T3B0aW9uKTtcclxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkT3B0aW9ucztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAoY29tYm9PcHRpb25zTGlzdDogQXJyYXk8YW55Pikge1xyXG4gICAgcmV0dXJuIGNvbWJvT3B0aW9uc0xpc3QucmVkdWNlKChhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucywgY3VycmVudE9wdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGN1cnJlbnRPcHRpb247XHJcbiAgICAgIGNvbnN0IHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0ID0gdGhpcy52ZXJpZnlDb21ib09wdGlvbnMob3B0aW9ucywgdHJ1ZSwgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMpO1xyXG5cclxuICAgICAgaWYgKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0KTtcclxuXHJcbiAgICAgICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMucHVzaChcclxuICAgICAgICAgIHsgbGFiZWw6IGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljTGFiZWxdLCBvcHRpb25zOiB0cnVlIH0sXHJcbiAgICAgICAgICAuLi52ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyaWZ5SWZIYXNMYWJlbChjdXJyZW50T3B0aW9uOiBQb0NvbWJvR3JvdXAgPSB7fSkge1xyXG4gICAgY29uc3QgeyBvcHRpb25zIH0gPSBjdXJyZW50T3B0aW9uO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QgJiYgb3B0aW9ucyAmJiAhY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0pIHx8XHJcbiAgICAgICghY3VycmVudE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0gJiYgIWN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdKSB8fFxyXG4gICAgICAoIXRoaXMuaXNPcHRpb25Hcm91cExpc3QgJiYgb3B0aW9ucylcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSkge1xyXG4gICAgICBjdXJyZW50T3B0aW9uW3RoaXMuZHluYW1pY0xhYmVsXSA9IGN1cnJlbnRPcHRpb25bdGhpcy5keW5hbWljVmFsdWVdLnRvU3RyaW5nKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbnRlcm5hbFZhcmlhYmxlcyhvcHRpb246IGFueSkge1xyXG4gICAgaWYgKG9wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IG9wdGlvbjtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xyXG4gICAgICBpZiAoIXRoaXMuZnJvbVdyaXRlVmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5lbWl0T2JqZWN0VmFsdWUgPyB0aGlzLnNlbGVjdGVkT3B0aW9uIDogdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5mcm9tV3JpdGVWYWx1ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFZhbHVlV2l0aE9sZE9wdGlvbigpIHtcclxuICAgIGNvbnN0IG9sZE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uRnJvbVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0KTtcclxuXHJcbiAgICBpZiAob2xkT3B0aW9uICYmIG9sZE9wdGlvblt0aGlzLmR5bmFtaWNMYWJlbF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShvbGRPcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVIYXNOZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiB0aGlzLmluZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuaGFzTmV4dCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCBzZXRJbnB1dFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0SW5wdXRWYWx1ZSgpOiBzdHJpbmc7XHJcblxyXG4gIGFic3RyYWN0IGluaXRJbnB1dE9ic2VydmFibGUoKTogdm9pZDtcclxufVxyXG4iXX0=
|
|
@@ -243,7 +243,7 @@ PoWidgetComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoWidgetC
|
|
|
243
243
|
i0.ɵɵelementEnd();
|
|
244
244
|
} if (rf & 2) {
|
|
245
245
|
i0.ɵɵstyleProp("background-image", ctx.background ? "url(" + ctx.background + ")" : undefined);
|
|
246
|
-
i0.ɵɵclassProp("po-clickable", ctx.click.observers.length)("po-widget", !ctx.primary)("po-widget-disabled", ctx.disabled)("po-widget-primary", ctx.primary)("po-widget-no-shadow", ctx.noShadow);
|
|
246
|
+
i0.ɵɵclassProp("po-clickable", ctx.click.observers.length)("po-widget", !ctx.primary)("po-widget-disabled", ctx.disabled)("po-widget-primary", ctx.primary)("po-widget-no-shadow", ctx.click.observers.length && ctx.noShadow);
|
|
247
247
|
i0.ɵɵproperty("tabindex", ctx.disabled || !ctx.click.observers.length ? -1 : 0);
|
|
248
248
|
i0.ɵɵadvance(1);
|
|
249
249
|
i0.ɵɵproperty("ngIf", ctx.hasTitleHelpOrSetting());
|
|
@@ -254,6 +254,6 @@ PoWidgetComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoWidgetC
|
|
|
254
254
|
} }, dependencies: [i1.NgIf, i2.PoContainerComponent], encapsulation: 2 });
|
|
255
255
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoWidgetComponent, [{
|
|
256
256
|
type: Component,
|
|
257
|
-
args: [{ selector: 'po-widget', template: "<div\r\n [class.po-clickable]=\"click.observers.length\"\r\n [class.po-widget]=\"!primary\"\r\n [class.po-widget-disabled]=\"disabled\"\r\n [class.po-widget-primary]=\"primary\"\r\n [class.po-widget-no-shadow]=\"noShadow\"\r\n [style.background-image]=\"background ? 'url(' + background + ')' : undefined\"\r\n (click)=\"onClick($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [tabindex]=\"disabled || !click.observers.length ? -1 : 0\"\r\n>\r\n <div *ngIf=\"hasTitleHelpOrSetting()\" class=\"po-widget-header\">\r\n <span *ngIf=\"showTitleAction; else noTitleAction\" class=\"po-widget-title-action\" (click)=\"runTitleAction($event)\">\r\n {{ title }}\r\n </span>\r\n <ng-template #noTitleAction>{{ title }}</ng-template>\r\n\r\n <div *ngIf=\"setting.observers[0] || help\" class=\"po-pull-right\">\r\n <span\r\n id=\"settingAction-{{ id }}\"\r\n *ngIf=\"setting.observers[0]\"\r\n class=\"po-clickable po-icon po-icon-settings\"\r\n (click)=\"settingOutput($event)\"\r\n >\r\n </span>\r\n <span id=\"helpLink-{{ id }}\" *ngIf=\"help\" class=\"po-clickable po-icon po-icon-help\" (click)=\"openHelp($event)\">\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <po-container p-no-border [p-height]=\"containerHeight\">\r\n <div class=\"po-widget-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </po-container>\r\n\r\n <div *ngIf=\"primaryLabel\" class=\"po-widget-footer\">\r\n <div class=\"po-widget-xl\" *ngIf=\"!secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"secondaryAct-{{ id }}\" (click)=\"runSecondaryAction($event)\">{{\r\n secondaryLabel\r\n }}</a>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
257
|
+
args: [{ selector: 'po-widget', template: "<div\r\n [class.po-clickable]=\"click.observers.length\"\r\n [class.po-widget]=\"!primary\"\r\n [class.po-widget-disabled]=\"disabled\"\r\n [class.po-widget-primary]=\"primary\"\r\n [class.po-widget-no-shadow]=\"click.observers.length && noShadow\"\r\n [style.background-image]=\"background ? 'url(' + background + ')' : undefined\"\r\n (click)=\"onClick($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [tabindex]=\"disabled || !click.observers.length ? -1 : 0\"\r\n>\r\n <div *ngIf=\"hasTitleHelpOrSetting()\" class=\"po-widget-header\">\r\n <span *ngIf=\"showTitleAction; else noTitleAction\" class=\"po-widget-title-action\" (click)=\"runTitleAction($event)\">\r\n {{ title }}\r\n </span>\r\n <ng-template #noTitleAction>{{ title }}</ng-template>\r\n\r\n <div *ngIf=\"setting.observers[0] || help\" class=\"po-pull-right\">\r\n <span\r\n id=\"settingAction-{{ id }}\"\r\n *ngIf=\"setting.observers[0]\"\r\n class=\"po-clickable po-icon po-icon-settings\"\r\n (click)=\"settingOutput($event)\"\r\n >\r\n </span>\r\n <span id=\"helpLink-{{ id }}\" *ngIf=\"help\" class=\"po-clickable po-icon po-icon-help\" (click)=\"openHelp($event)\">\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <po-container p-no-border [p-height]=\"containerHeight\">\r\n <div class=\"po-widget-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </po-container>\r\n\r\n <div *ngIf=\"primaryLabel\" class=\"po-widget-footer\">\r\n <div class=\"po-widget-xl\" *ngIf=\"!secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"secondaryAct-{{ id }}\" (click)=\"runSecondaryAction($event)\">{{\r\n secondaryLabel\r\n }}</a>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
258
258
|
}], function () { return [{ type: i0.ViewContainerRef }]; }, null); })();
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby13aWRnZXQvcG8td2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby13aWRnZXQvcG8td2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0lDUzNELCtCQUFrSDtJQUFqQywwS0FBUyxlQUFBLDZCQUFzQixDQUFBLElBQUM7SUFDL0csWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsNkNBQ0Y7OztJQUM0QixZQUFXOzs7SUFBWCxrQ0FBVzs7OztJQUdyQyxnQ0FLQztJQURDLGtMQUFTLGVBQUEsNkJBQXFCLENBQUEsSUFBQztJQUVqQyxpQkFBTzs7O0lBTEwsZ0VBQTJCOzs7O0lBTTdCLGdDQUErRztJQUEzQixrTEFBUyxlQUFBLHdCQUFnQixDQUFBLElBQUM7SUFDOUcsaUJBQU87OztJQURELDJEQUFzQjs7O0lBUjlCLCtCQUFnRTtJQUM5RCxpRkFNTztJQUNQLGlGQUNPO0lBQ1QsaUJBQU07OztJQVBELGVBQTBCO0lBQTFCLGtEQUEwQjtJQUtDLGVBQVU7SUFBVixrQ0FBVTs7O0lBZDVDLDhCQUE4RDtJQUM1RCwwRUFFTztJQUNQLHlIQUFxRDtJQUVyRCx3RUFVTTtJQUNSLGlCQUFNOzs7O0lBaEJHLGVBQXVCO0lBQXZCLDZDQUF1QixpQkFBQTtJQUt4QixlQUFrQztJQUFsQyxpRUFBa0M7Ozs7SUFvQnhDLCtCQUFr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QWEsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7O2tGQXBHVSxpQkFBaUI7b0VBQWpCLGlCQUFpQjs7UUNuQzlCLDhCQVVDO1FBSEMsaUdBQVMsbUJBQWUsSUFBQyx3RkFDZCxxQkFBaUIsSUFESDtRQUl6QixrRUFpQk07UUFFTix1Q0FBdUQsYUFBQTtRQUVuRCxrQkFBeUI7UUFDM0IsaUJBQU0sRUFBQTtRQUdSLGtFQWFNO1FBQ1IsaUJBQU07O1FBNUNKLDhGQUE2RTtRQUw3RSwwREFBNkMsMkJBQUEsb0NBQUEsa0NBQUEscUNBQUE7UUFRN0MsK0VBQXlEO1FBRW5ELGVBQTZCO1FBQTdCLGtEQUE2QjtRQW1CVCxlQUE0QjtRQUE1Qiw4Q0FBNEI7UUFNaEQsZUFBa0I7UUFBbEIsdUNBQWtCOzt1RkREYixpQkFBaUI7Y0FKN0IsU0FBUzsyQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBvV2lkZ2V0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8td2lkZ2V0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9LZXlDb2RlRW51bSB9IGZyb20gJy4vLi4vLi4vZW51bXMvcG8ta2V5LWNvZGUuZW51bSc7XHJcblxyXG4vKipcclxuICogQGRvY3NFeHRlbmRzIFBvV2lkZ2V0QmFzZUNvbXBvbmVudFxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8td2lkZ2V0LWJhc2ljXCIgdGl0bGU9XCJQTyBXaWRnZXQgQmFzaWNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWJhc2ljL3NhbXBsZS1wby13aWRnZXQtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtYmFzaWMvc2FtcGxlLXBvLXdpZGdldC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby13aWRnZXQtbGFic1wiIHRpdGxlPVwiUE8gV2lkZ2V0IExhYnNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWxhYnMvc2FtcGxlLXBvLXdpZGdldC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWxhYnMvc2FtcGxlLXBvLXdpZGdldC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXdpZGdldC1maW5hbmNlLWRhc2hib2FyZFwiIHRpdGxlPVwiUE8gV2lkZ2V0IC0gRmluYW5jZSBkYXNoYm9hcmRcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWZpbmFuY2UtZGFzaGJvYXJkL3NhbXBsZS1wby13aWRnZXQtZmluYW5jZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtZmluYW5jZS1kYXNoYm9hcmQvc2FtcGxlLXBvLXdpZGdldC1maW5hbmNlLWRhc2hib2FyZC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby13aWRnZXQtY2FyZFwiIHRpdGxlPVwiUE8gV2lkZ2V0IC0gQ2FyZFwiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtY2FyZC9zYW1wbGUtcG8td2lkZ2V0LWNhcmQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtY2FyZC9zYW1wbGUtcG8td2lkZ2V0LWNhcmQuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby13aWRnZXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wby13aWRnZXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb1dpZGdldENvbXBvbmVudCBleHRlbmRzIFBvV2lkZ2V0QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZ2V0IHNob3dUaXRsZUFjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudGl0bGVBY3Rpb24ub2JzZXJ2ZXJzWzBdO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3Iodmlld1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRIZWlnaHQodGhpcy5oZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgaGFzVGl0bGVIZWxwT3JTZXR0aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy50aXRsZSB8fCAhIXRoaXMuaGVscCB8fCAhIXRoaXMuc2V0dGluZy5vYnNlcnZlcnNbMF07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5jbGljay5vYnNlcnZlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2xpY2sub2JzZXJ2ZWQgJiZcclxuICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcclxuICAgICAgKGV2ZW50LndoaWNoID09PSBQb0tleUNvZGVFbnVtLnNwYWNlIHx8IGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uc3BhY2UpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jbGljay5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuSGVscChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB3aW5kb3cub3Blbih0aGlzLmhlbHAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1blByaW1hcnlBY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5wcmltYXJ5QWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1blNlY29uZGFyeUFjdGlvbihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNlY29uZGFyeUFjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBydW5UaXRsZUFjdGlvbihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnRpdGxlQWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEhlaWdodChoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgaWYgKGhlaWdodCkge1xyXG4gICAgICBsZXQgYm9keUhlaWdodCA9IGhlaWdodDtcclxuICAgICAgY29uc3QgaGFzU2V0dGluZ09ySGVscCA9IHRoaXMuc2V0dGluZy5vYnNlcnZlcnMubGVuZ3RoID4gMCB8fCB0aGlzLmhlbHA7XHJcbiAgICAgIGNvbnN0IGZvb3RlckJvcmRlciA9IDE7XHJcbiAgICAgIGNvbnN0IGZvb3RlckhlaWdodCA9IDQwO1xyXG4gICAgICBjb25zdCBzZXR0aW5nSGVpZ2h0ID0gMzc7XHJcbiAgICAgIGNvbnN0IHNoYWRvd0hlaWdodCA9IDI7XHJcbiAgICAgIGNvbnN0IHRpdGxlSGVpZ2h0ID0gNTA7XHJcblxyXG4gICAgICBpZiAodGhpcy5ub1NoYWRvdykge1xyXG4gICAgICAgIGJvZHlIZWlnaHQgLT0gc2hhZG93SGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaGFzU2V0dGluZ09ySGVscCAmJiAhdGhpcy50aXRsZSkge1xyXG4gICAgICAgIGJvZHlIZWlnaHQgLT0gc2V0dGluZ0hlaWdodDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudGl0bGUpIHtcclxuICAgICAgICBib2R5SGVpZ2h0IC09IHRpdGxlSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wcmltYXJ5TGFiZWwpIHtcclxuICAgICAgICBib2R5SGVpZ2h0IC09IGZvb3RlckhlaWdodCArIGZvb3RlckJvcmRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBgJHtib2R5SGVpZ2h0fXB4YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gYGF1dG9gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0dGluZ091dHB1dChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNldHRpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJjbGljay5vYnNlcnZlcnMubGVuZ3RoXCJcclxuICBbY2xhc3MucG8td2lkZ2V0XT1cIiFwcmltYXJ5XCJcclxuICBbY2xhc3MucG8td2lkZ2V0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MucG8td2lkZ2V0LXByaW1hcnldPVwicHJpbWFyeVwiXHJcbiAgW2NsYXNzLnBvLXdpZGdldC1uby1zaGFkb3ddPVwibm9TaGFkb3dcIlxyXG4gIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImJhY2tncm91bmQgPyAndXJsKCcgKyBiYWNrZ3JvdW5kICsgJyknIDogdW5kZWZpbmVkXCJcclxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcclxuICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgW3RhYmluZGV4XT1cImRpc2FibGVkIHx8ICFjbGljay5vYnNlcnZlcnMubGVuZ3RoID8gLTEgOiAwXCJcclxuPlxyXG4gIDxkaXYgKm5nSWY9XCJoYXNUaXRsZUhlbHBPclNldHRpbmcoKVwiIGNsYXNzPVwicG8td2lkZ2V0LWhlYWRlclwiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJzaG93VGl0bGVBY3Rpb247IGVsc2Ugbm9UaXRsZUFjdGlvblwiIGNsYXNzPVwicG8td2lkZ2V0LXRpdGxlLWFjdGlvblwiIChjbGljayk9XCJydW5UaXRsZUFjdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgIHt7IHRpdGxlIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vVGl0bGVBY3Rpb24+e3sgdGl0bGUgfX08L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzZXR0aW5nLm9ic2VydmVyc1swXSB8fCBoZWxwXCIgY2xhc3M9XCJwby1wdWxsLXJpZ2h0XCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgaWQ9XCJzZXR0aW5nQWN0aW9uLXt7IGlkIH19XCJcclxuICAgICAgICAqbmdJZj1cInNldHRpbmcub2JzZXJ2ZXJzWzBdXCJcclxuICAgICAgICBjbGFzcz1cInBvLWNsaWNrYWJsZSBwby1pY29uIHBvLWljb24tc2V0dGluZ3NcIlxyXG4gICAgICAgIChjbGljayk9XCJzZXR0aW5nT3V0cHV0KCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gaWQ9XCJoZWxwTGluay17eyBpZCB9fVwiICpuZ0lmPVwiaGVscFwiIGNsYXNzPVwicG8tY2xpY2thYmxlIHBvLWljb24gcG8taWNvbi1oZWxwXCIgKGNsaWNrKT1cIm9wZW5IZWxwKCRldmVudClcIj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxwby1jb250YWluZXIgcC1uby1ib3JkZXIgW3AtaGVpZ2h0XT1cImNvbnRhaW5lckhlaWdodFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXdpZGdldC1ib2R5XCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcG8tY29udGFpbmVyPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicHJpbWFyeUxhYmVsXCIgY2xhc3M9XCJwby13aWRnZXQtZm9vdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG8td2lkZ2V0LXhsXCIgKm5nSWY9XCIhc2Vjb25kYXJ5TGFiZWxcIj5cclxuICAgICAgPGEgY2xhc3M9XCJwby13aWRnZXQtYWN0aW9uXCIgaWQ9XCJwcmltYXJ5QWN0LXt7IGlkIH19XCIgKGNsaWNrKT1cInJ1blByaW1hcnlBY3Rpb24oJGV2ZW50KVwiPnt7IHByaW1hcnlMYWJlbCB9fTwvYT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwby13aWRnZXQtbWRcIiAqbmdJZj1cInNlY29uZGFyeUxhYmVsXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwicG8td2lkZ2V0LWFjdGlvblwiIGlkPVwicHJpbWFyeUFjdC17eyBpZCB9fVwiIChjbGljayk9XCJydW5QcmltYXJ5QWN0aW9uKCRldmVudClcIj57eyBwcmltYXJ5TGFiZWwgfX08L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwby13aWRnZXQtbWRcIiAqbmdJZj1cInNlY29uZGFyeUxhYmVsXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwicG8td2lkZ2V0LWFjdGlvblwiIGlkPVwic2Vjb25kYXJ5QWN0LXt7IGlkIH19XCIgKGNsaWNrKT1cInJ1blNlY29uZGFyeUFjdGlvbigkZXZlbnQpXCI+e3tcclxuICAgICAgICBzZWNvbmRhcnlMYWJlbFxyXG4gICAgICB9fTwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby13aWRnZXQvcG8td2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby13aWRnZXQvcG8td2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0lDUzNELCtCQUFrSDtJQUFqQywwS0FBUyxlQUFBLDZCQUFzQixDQUFBLElBQUM7SUFDL0csWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsNkNBQ0Y7OztJQUM0QixZQUFXOzs7SUFBWCxrQ0FBVzs7OztJQUdyQyxnQ0FLQztJQURDLGtMQUFTLGVBQUEsNkJBQXFCLENBQUEsSUFBQztJQUVqQyxpQkFBTzs7O0lBTEwsZ0VBQTJCOzs7O0lBTTdCLGdDQUErRztJQUEzQixrTEFBUyxlQUFBLHdCQUFnQixDQUFBLElBQUM7SUFDOUcsaUJBQU87OztJQURELDJEQUFzQjs7O0lBUjlCLCtCQUFnRTtJQUM5RCxpRkFNTztJQUNQLGlGQUNPO0lBQ1QsaUJBQU07OztJQVBELGVBQTBCO0lBQTFCLGtEQUEwQjtJQUtDLGVBQVU7SUFBVixrQ0FBVTs7O0lBZDVDLDhCQUE4RDtJQUM1RCwwRUFFTztJQUNQLHlIQUFxRDtJQUVyRCx3RUFVTTtJQUNSLGlCQUFNOzs7O0lBaEJHLGVBQXVCO0lBQXZCLDZDQUF1QixpQkFBQTtJQUt4QixlQUFrQztJQUFsQyxpRUFBa0M7Ozs7SUFvQnhDLCtCQUFr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QWEsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7O2tGQXBHVSxpQkFBaUI7b0VBQWpCLGlCQUFpQjs7UUNuQzlCLDhCQVVDO1FBSEMsaUdBQVMsbUJBQWUsSUFBQyx3RkFDZCxxQkFBaUIsSUFESDtRQUl6QixrRUFpQk07UUFFTix1Q0FBdUQsYUFBQTtRQUVuRCxrQkFBeUI7UUFDM0IsaUJBQU0sRUFBQTtRQUdSLGtFQWFNO1FBQ1IsaUJBQU07O1FBNUNKLDhGQUE2RTtRQUw3RSwwREFBNkMsMkJBQUEsb0NBQUEsa0NBQUEsbUVBQUE7UUFRN0MsK0VBQXlEO1FBRW5ELGVBQTZCO1FBQTdCLGtEQUE2QjtRQW1CVCxlQUE0QjtRQUE1Qiw4Q0FBNEI7UUFNaEQsZUFBa0I7UUFBbEIsdUNBQWtCOzt1RkREYixpQkFBaUI7Y0FKN0IsU0FBUzsyQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBvV2lkZ2V0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8td2lkZ2V0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9LZXlDb2RlRW51bSB9IGZyb20gJy4vLi4vLi4vZW51bXMvcG8ta2V5LWNvZGUuZW51bSc7XHJcblxyXG4vKipcclxuICogQGRvY3NFeHRlbmRzIFBvV2lkZ2V0QmFzZUNvbXBvbmVudFxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8td2lkZ2V0LWJhc2ljXCIgdGl0bGU9XCJQTyBXaWRnZXQgQmFzaWNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWJhc2ljL3NhbXBsZS1wby13aWRnZXQtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtYmFzaWMvc2FtcGxlLXBvLXdpZGdldC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby13aWRnZXQtbGFic1wiIHRpdGxlPVwiUE8gV2lkZ2V0IExhYnNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWxhYnMvc2FtcGxlLXBvLXdpZGdldC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWxhYnMvc2FtcGxlLXBvLXdpZGdldC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXdpZGdldC1maW5hbmNlLWRhc2hib2FyZFwiIHRpdGxlPVwiUE8gV2lkZ2V0IC0gRmluYW5jZSBkYXNoYm9hcmRcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8td2lkZ2V0LWZpbmFuY2UtZGFzaGJvYXJkL3NhbXBsZS1wby13aWRnZXQtZmluYW5jZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtZmluYW5jZS1kYXNoYm9hcmQvc2FtcGxlLXBvLXdpZGdldC1maW5hbmNlLWRhc2hib2FyZC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby13aWRnZXQtY2FyZFwiIHRpdGxlPVwiUE8gV2lkZ2V0IC0gQ2FyZFwiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtY2FyZC9zYW1wbGUtcG8td2lkZ2V0LWNhcmQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby13aWRnZXQtY2FyZC9zYW1wbGUtcG8td2lkZ2V0LWNhcmQuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby13aWRnZXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wby13aWRnZXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb1dpZGdldENvbXBvbmVudCBleHRlbmRzIFBvV2lkZ2V0QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZ2V0IHNob3dUaXRsZUFjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudGl0bGVBY3Rpb24ub2JzZXJ2ZXJzWzBdO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3Iodmlld1JlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRIZWlnaHQodGhpcy5oZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgaGFzVGl0bGVIZWxwT3JTZXR0aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy50aXRsZSB8fCAhIXRoaXMuaGVscCB8fCAhIXRoaXMuc2V0dGluZy5vYnNlcnZlcnNbMF07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5jbGljay5vYnNlcnZlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2xpY2sub2JzZXJ2ZWQgJiZcclxuICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcclxuICAgICAgKGV2ZW50LndoaWNoID09PSBQb0tleUNvZGVFbnVtLnNwYWNlIHx8IGV2ZW50LmtleUNvZGUgPT09IFBvS2V5Q29kZUVudW0uc3BhY2UpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jbGljay5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuSGVscChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB3aW5kb3cub3Blbih0aGlzLmhlbHAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1blByaW1hcnlBY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5wcmltYXJ5QWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1blNlY29uZGFyeUFjdGlvbihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNlY29uZGFyeUFjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBydW5UaXRsZUFjdGlvbihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnRpdGxlQWN0aW9uLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEhlaWdodChoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgaWYgKGhlaWdodCkge1xyXG4gICAgICBsZXQgYm9keUhlaWdodCA9IGhlaWdodDtcclxuICAgICAgY29uc3QgaGFzU2V0dGluZ09ySGVscCA9IHRoaXMuc2V0dGluZy5vYnNlcnZlcnMubGVuZ3RoID4gMCB8fCB0aGlzLmhlbHA7XHJcbiAgICAgIGNvbnN0IGZvb3RlckJvcmRlciA9IDE7XHJcbiAgICAgIGNvbnN0IGZvb3RlckhlaWdodCA9IDQwO1xyXG4gICAgICBjb25zdCBzZXR0aW5nSGVpZ2h0ID0gMzc7XHJcbiAgICAgIGNvbnN0IHNoYWRvd0hlaWdodCA9IDI7XHJcbiAgICAgIGNvbnN0IHRpdGxlSGVpZ2h0ID0gNTA7XHJcblxyXG4gICAgICBpZiAodGhpcy5ub1NoYWRvdykge1xyXG4gICAgICAgIGJvZHlIZWlnaHQgLT0gc2hhZG93SGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaGFzU2V0dGluZ09ySGVscCAmJiAhdGhpcy50aXRsZSkge1xyXG4gICAgICAgIGJvZHlIZWlnaHQgLT0gc2V0dGluZ0hlaWdodDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudGl0bGUpIHtcclxuICAgICAgICBib2R5SGVpZ2h0IC09IHRpdGxlSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wcmltYXJ5TGFiZWwpIHtcclxuICAgICAgICBib2R5SGVpZ2h0IC09IGZvb3RlckhlaWdodCArIGZvb3RlckJvcmRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBgJHtib2R5SGVpZ2h0fXB4YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gYGF1dG9gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0dGluZ091dHB1dChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnNldHRpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJjbGljay5vYnNlcnZlcnMubGVuZ3RoXCJcclxuICBbY2xhc3MucG8td2lkZ2V0XT1cIiFwcmltYXJ5XCJcclxuICBbY2xhc3MucG8td2lkZ2V0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbY2xhc3MucG8td2lkZ2V0LXByaW1hcnldPVwicHJpbWFyeVwiXHJcbiAgW2NsYXNzLnBvLXdpZGdldC1uby1zaGFkb3ddPVwiY2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCAmJiBub1NoYWRvd1wiXHJcbiAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiYmFja2dyb3VuZCA/ICd1cmwoJyArIGJhY2tncm91bmQgKyAnKScgOiB1bmRlZmluZWRcIlxyXG4gIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQgfHwgIWNsaWNrLm9ic2VydmVycy5sZW5ndGggPyAtMSA6IDBcIlxyXG4+XHJcbiAgPGRpdiAqbmdJZj1cImhhc1RpdGxlSGVscE9yU2V0dGluZygpXCIgY2xhc3M9XCJwby13aWRnZXQtaGVhZGVyXCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cInNob3dUaXRsZUFjdGlvbjsgZWxzZSBub1RpdGxlQWN0aW9uXCIgY2xhc3M9XCJwby13aWRnZXQtdGl0bGUtYWN0aW9uXCIgKGNsaWNrKT1cInJ1blRpdGxlQWN0aW9uKCRldmVudClcIj5cclxuICAgICAge3sgdGl0bGUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9UaXRsZUFjdGlvbj57eyB0aXRsZSB9fTwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNldHRpbmcub2JzZXJ2ZXJzWzBdIHx8IGhlbHBcIiBjbGFzcz1cInBvLXB1bGwtcmlnaHRcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBpZD1cInNldHRpbmdBY3Rpb24te3sgaWQgfX1cIlxyXG4gICAgICAgICpuZ0lmPVwic2V0dGluZy5vYnNlcnZlcnNbMF1cIlxyXG4gICAgICAgIGNsYXNzPVwicG8tY2xpY2thYmxlIHBvLWljb24gcG8taWNvbi1zZXR0aW5nc1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNldHRpbmdPdXRwdXQoJGV2ZW50KVwiXHJcbiAgICAgID5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8c3BhbiBpZD1cImhlbHBMaW5rLXt7IGlkIH19XCIgKm5nSWY9XCJoZWxwXCIgY2xhc3M9XCJwby1jbGlja2FibGUgcG8taWNvbiBwby1pY29uLWhlbHBcIiAoY2xpY2spPVwib3BlbkhlbHAoJGV2ZW50KVwiPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHBvLWNvbnRhaW5lciBwLW5vLWJvcmRlciBbcC1oZWlnaHRdPVwiY29udGFpbmVySGVpZ2h0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG8td2lkZ2V0LWJvZHlcIj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wby1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJwcmltYXJ5TGFiZWxcIiBjbGFzcz1cInBvLXdpZGdldC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwby13aWRnZXQteGxcIiAqbmdJZj1cIiFzZWNvbmRhcnlMYWJlbFwiPlxyXG4gICAgICA8YSBjbGFzcz1cInBvLXdpZGdldC1hY3Rpb25cIiBpZD1cInByaW1hcnlBY3Qte3sgaWQgfX1cIiAoY2xpY2spPVwicnVuUHJpbWFyeUFjdGlvbigkZXZlbnQpXCI+e3sgcHJpbWFyeUxhYmVsIH19PC9hPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXdpZGdldC1tZFwiICpuZ0lmPVwic2Vjb25kYXJ5TGFiZWxcIj5cclxuICAgICAgPGEgY2xhc3M9XCJwby13aWRnZXQtYWN0aW9uXCIgaWQ9XCJwcmltYXJ5QWN0LXt7IGlkIH19XCIgKGNsaWNrKT1cInJ1blByaW1hcnlBY3Rpb24oJGV2ZW50KVwiPnt7IHByaW1hcnlMYWJlbCB9fTwvYT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXdpZGdldC1tZFwiICpuZ0lmPVwic2Vjb25kYXJ5TGFiZWxcIj5cclxuICAgICAgPGEgY2xhc3M9XCJwby13aWRnZXQtYWN0aW9uXCIgaWQ9XCJzZWNvbmRhcnlBY3Qte3sgaWQgfX1cIiAoY2xpY2spPVwicnVuU2Vjb25kYXJ5QWN0aW9uKCRldmVudClcIj57e1xyXG4gICAgICAgIHNlY29uZGFyeUxhYmVsXHJcbiAgICAgIH19PC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -21098,6 +21098,7 @@ class PoComboBaseComponent {
|
|
|
21098
21098
|
else {
|
|
21099
21099
|
this.updateSelectedValue(null);
|
|
21100
21100
|
this.updateComboList();
|
|
21101
|
+
this.updateHasNext();
|
|
21101
21102
|
}
|
|
21102
21103
|
}
|
|
21103
21104
|
// Função implementada do ControlValueAccessor
|
|
@@ -21128,6 +21129,7 @@ class PoComboBaseComponent {
|
|
|
21128
21129
|
this.updateSelectedValue(null);
|
|
21129
21130
|
this.updateComboList();
|
|
21130
21131
|
this.initInputObservable();
|
|
21132
|
+
this.updateHasNext();
|
|
21131
21133
|
}
|
|
21132
21134
|
configAfterSetFilterService(service) {
|
|
21133
21135
|
if (service) {
|
|
@@ -21269,6 +21271,11 @@ class PoComboBaseComponent {
|
|
|
21269
21271
|
return this.updateSelectedValue(oldOption);
|
|
21270
21272
|
}
|
|
21271
21273
|
}
|
|
21274
|
+
updateHasNext() {
|
|
21275
|
+
if (this.service && this.infiniteScroll) {
|
|
21276
|
+
this.defaultService.hasNext = true;
|
|
21277
|
+
}
|
|
21278
|
+
}
|
|
21272
21279
|
}
|
|
21273
21280
|
PoComboBaseComponent.ɵfac = function PoComboBaseComponent_Factory(t) { return new (t || PoComboBaseComponent)(i0.ɵɵdirectiveInject(PoLanguageService)); };
|
|
21274
21281
|
PoComboBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoComboBaseComponent, inputs: { autoFocus: ["p-auto-focus", "autoFocus"], label: ["p-label", "label"], help: ["p-help", "help"], name: "name", filterService: ["p-filter-service", "filterService"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], icon: ["p-icon", "icon"], optional: ["p-optional", "optional"], clean: ["p-clean", "clean"], emitObjectValue: ["p-emit-object-value", "emitObjectValue"], disabledTabFilter: ["p-disabled-tab-filter", "disabledTabFilter"], placeholder: ["p-placeholder", "placeholder"], debounceTime: ["p-debounce-time", "debounceTime"], disabledInitFilter: ["p-disabled-init-filter", "disabledInitFilter"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], filterMinlength: ["p-filter-minlength", "filterMinlength"], required: ["p-required", "required"], showRequired: ["p-show-required", "showRequired"], changeOnEnter: ["p-change-on-enter", "changeOnEnter"], disabled: ["p-disabled", "disabled"], sort: ["p-sort", "sort"], options: ["p-options", "options"], filterMode: ["p-filter-mode", "filterMode"], filterParams: ["p-filter-params", "filterParams"], literals: ["p-literals", "literals"] }, outputs: { change: "p-change", ngModelChange: "ngModelChange", inputChange: "p-input-change" } });
|
|
@@ -48241,7 +48248,7 @@ PoWidgetComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoWidgetC
|
|
|
48241
48248
|
}
|
|
48242
48249
|
if (rf & 2) {
|
|
48243
48250
|
i0.ɵɵstyleProp("background-image", ctx.background ? "url(" + ctx.background + ")" : undefined);
|
|
48244
|
-
i0.ɵɵclassProp("po-clickable", ctx.click.observers.length)("po-widget", !ctx.primary)("po-widget-disabled", ctx.disabled)("po-widget-primary", ctx.primary)("po-widget-no-shadow", ctx.noShadow);
|
|
48251
|
+
i0.ɵɵclassProp("po-clickable", ctx.click.observers.length)("po-widget", !ctx.primary)("po-widget-disabled", ctx.disabled)("po-widget-primary", ctx.primary)("po-widget-no-shadow", ctx.click.observers.length && ctx.noShadow);
|
|
48245
48252
|
i0.ɵɵproperty("tabindex", ctx.disabled || !ctx.click.observers.length ? -1 : 0);
|
|
48246
48253
|
i0.ɵɵadvance(1);
|
|
48247
48254
|
i0.ɵɵproperty("ngIf", ctx.hasTitleHelpOrSetting());
|
|
@@ -48254,7 +48261,7 @@ PoWidgetComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoWidgetC
|
|
|
48254
48261
|
(function () {
|
|
48255
48262
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoWidgetComponent, [{
|
|
48256
48263
|
type: Component,
|
|
48257
|
-
args: [{ selector: 'po-widget', template: "<div\r\n [class.po-clickable]=\"click.observers.length\"\r\n [class.po-widget]=\"!primary\"\r\n [class.po-widget-disabled]=\"disabled\"\r\n [class.po-widget-primary]=\"primary\"\r\n [class.po-widget-no-shadow]=\"noShadow\"\r\n [style.background-image]=\"background ? 'url(' + background + ')' : undefined\"\r\n (click)=\"onClick($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [tabindex]=\"disabled || !click.observers.length ? -1 : 0\"\r\n>\r\n <div *ngIf=\"hasTitleHelpOrSetting()\" class=\"po-widget-header\">\r\n <span *ngIf=\"showTitleAction; else noTitleAction\" class=\"po-widget-title-action\" (click)=\"runTitleAction($event)\">\r\n {{ title }}\r\n </span>\r\n <ng-template #noTitleAction>{{ title }}</ng-template>\r\n\r\n <div *ngIf=\"setting.observers[0] || help\" class=\"po-pull-right\">\r\n <span\r\n id=\"settingAction-{{ id }}\"\r\n *ngIf=\"setting.observers[0]\"\r\n class=\"po-clickable po-icon po-icon-settings\"\r\n (click)=\"settingOutput($event)\"\r\n >\r\n </span>\r\n <span id=\"helpLink-{{ id }}\" *ngIf=\"help\" class=\"po-clickable po-icon po-icon-help\" (click)=\"openHelp($event)\">\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <po-container p-no-border [p-height]=\"containerHeight\">\r\n <div class=\"po-widget-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </po-container>\r\n\r\n <div *ngIf=\"primaryLabel\" class=\"po-widget-footer\">\r\n <div class=\"po-widget-xl\" *ngIf=\"!secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"secondaryAct-{{ id }}\" (click)=\"runSecondaryAction($event)\">{{\r\n secondaryLabel\r\n }}</a>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
48264
|
+
args: [{ selector: 'po-widget', template: "<div\r\n [class.po-clickable]=\"click.observers.length\"\r\n [class.po-widget]=\"!primary\"\r\n [class.po-widget-disabled]=\"disabled\"\r\n [class.po-widget-primary]=\"primary\"\r\n [class.po-widget-no-shadow]=\"click.observers.length && noShadow\"\r\n [style.background-image]=\"background ? 'url(' + background + ')' : undefined\"\r\n (click)=\"onClick($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [tabindex]=\"disabled || !click.observers.length ? -1 : 0\"\r\n>\r\n <div *ngIf=\"hasTitleHelpOrSetting()\" class=\"po-widget-header\">\r\n <span *ngIf=\"showTitleAction; else noTitleAction\" class=\"po-widget-title-action\" (click)=\"runTitleAction($event)\">\r\n {{ title }}\r\n </span>\r\n <ng-template #noTitleAction>{{ title }}</ng-template>\r\n\r\n <div *ngIf=\"setting.observers[0] || help\" class=\"po-pull-right\">\r\n <span\r\n id=\"settingAction-{{ id }}\"\r\n *ngIf=\"setting.observers[0]\"\r\n class=\"po-clickable po-icon po-icon-settings\"\r\n (click)=\"settingOutput($event)\"\r\n >\r\n </span>\r\n <span id=\"helpLink-{{ id }}\" *ngIf=\"help\" class=\"po-clickable po-icon po-icon-help\" (click)=\"openHelp($event)\">\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <po-container p-no-border [p-height]=\"containerHeight\">\r\n <div class=\"po-widget-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </po-container>\r\n\r\n <div *ngIf=\"primaryLabel\" class=\"po-widget-footer\">\r\n <div class=\"po-widget-xl\" *ngIf=\"!secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"primaryAct-{{ id }}\" (click)=\"runPrimaryAction($event)\">{{ primaryLabel }}</a>\r\n </div>\r\n <div class=\"po-widget-md\" *ngIf=\"secondaryLabel\">\r\n <a class=\"po-widget-action\" id=\"secondaryAct-{{ id }}\" (click)=\"runSecondaryAction($event)\">{{\r\n secondaryLabel\r\n }}</a>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
48258
48265
|
}], function () { return [{ type: i0.ViewContainerRef }]; }, null);
|
|
48259
48266
|
})();
|
|
48260
48267
|
|
|
@@ -50242,4 +50249,3 @@ function initializeLanguageDefault(config, languageService) {
|
|
|
50242
50249
|
|
|
50243
50250
|
export { ForceOptionComponentEnum, I18N_CONFIG, InputBoolean, InputRequired, PO_CONTROL_POSITIONS, PoAccordionComponent, PoAccordionItemComponent, PoAccordionModule, PoActiveOverlayModule, PoActiveOverlayService, PoAvatarComponent, PoAvatarModule, PoBreadcrumbComponent, PoBreadcrumbModule, PoButtonComponent, PoButtonGroupComponent, PoButtonGroupModule, PoButtonGroupToggle, PoButtonModule, PoCalendarComponent, PoCalendarMode, PoCalendarModule, PoChartComponent, PoChartModule, PoChartType, PoCheckboxComponent, PoCheckboxGroupComponent, PoCheckboxGroupModule, PoCheckboxModule, PoCheckboxSize, PoCleanComponent, PoCleanModule, PoColorPaletteModule, PoColorPaletteService, PoComboComponent, PoComboFilterMode, PoComboOptionTemplateDirective, PoComponentInjectorModule, PoComponentInjectorService, PoComponentsModule, PoContainerComponent, PoContainerModule, PoControlPositionModule, PoDateService, PoDateTimeModule, PoDatepickerComponent, PoDatepickerIsoFormat, PoDatepickerModule, PoDatepickerRangeComponent, PoDecimalComponent, PoDialogComponent, PoDialogModule, PoDialogService, PoDialogType, PoDirectivesModule, PoDisclaimerComponent, PoDisclaimerGroupComponent, PoDisclaimerGroupModule, PoDisclaimerModule, PoDividerComponent, PoDividerModule, PoDividerSize, PoDropdownComponent, PoDropdownModule, PoDynamicFieldType, PoDynamicFormComponent, PoDynamicModule, PoDynamicViewComponent, PoEmailComponent, PoFieldContainerBottomComponent, PoFieldContainerComponent, PoFieldContainerModule, PoFieldModule, PoGaugeComponent, PoGaugeModule, PoGridComponent, PoGridModule, PoGuardsModule, PoHttpInterceptorModule, PoHttpInterceptorService, PoHttpRequestInterceptorService, PoHttpRequestModule, PoI18nModule, PoI18nPipe, PoI18nService, PoIconComponent, PoIconModule, PoImageComponent, PoImageModule, PoInfoComponent, PoInfoModule, PoInfoOrientation, PoInputComponent, PoInterceptorsModule, PoLabelComponent, PoLabelModule, PoLanguageModule, PoLanguageService, PoLinkComponent, PoLinkModule, PoListViewComponent, PoListViewContentTemplateDirective, PoListViewDetailTemplateDirective, PoListViewModule, PoLoadingComponent, PoLoadingIconComponent, PoLoadingModule, PoLoadingOverlayComponent, PoLoginComponent, PoLookupComponent, PoLookupModalComponent, PoMenuComponent, PoMenuGlobalService, PoMenuHeaderTemplateDirective, PoMenuModule, PoMenuPanelComponent, PoMenuPanelModule, PoModalComponent, PoModalFooterComponent, PoModalModule, PoModule, PoMultiselectComponent, PoMultiselectFilterMode, PoNavbarComponent, PoNavbarModule, PoNotificationModule, PoNotificationService, PoNumberComponent, PoPageDefaultComponent, PoPageDetailComponent, PoPageEditComponent, PoPageListComponent, PoPageModule, PoPageSlideComponent, PoPasswordComponent, PoPipesModule, PoPopoverComponent, PoPopoverModule, PoPopupComponent, PoPopupModule, PoProgressComponent, PoProgressModule, PoProgressStatus, PoRadioComponent, PoRadioGroupComponent, PoRichTextComponent, PoSelectComponent, PoServicesModule, PoSlideComponent, PoSlideContentTemplateDirective, PoSlideModule, PoStepComponent, PoStepperComponent, PoStepperModule, PoStepperOrientation, PoStepperStatus, PoSwitchComponent, PoSwitchLabelPosition, PoTabComponent, PoTableCellTemplateDirective, PoTableColumnSortType, PoTableColumnTemplateDirective, PoTableComponent, PoTableModule, PoTableRowTemplateArrowDirection, PoTableRowTemplateDirective, PoTabsComponent, PoTabsModule, PoTagComponent, PoTagModule, PoTagOrientation, PoTagType, PoTextareaComponent, PoTimeModule, PoTimePipe, PoToasterOrientation, PoToasterType, PoToolbarComponent, PoToolbarModule, PoTooltipDirective, PoTooltipModule, PoTreeViewComponent, PoTreeViewModule, PoUploadComponent, PoUrlComponent, PoWidgetComponent, PoWidgetModule, initializeLanguageDefault, poDialogAlertLiteralsDefault, poDialogConfirmLiteralsDefault, poLanguageDefault, poLocaleDateSeparatorList, poLocaleDecimalSeparatorList, poLocaleDefault, poLocaleThousandSeparatorList, poLocales, returnPoI18nService };
|
|
50244
50251
|
//# sourceMappingURL=po-ui-ng-components.mjs.map
|
|
50245
|
-
//# sourceMappingURL=po-ui-ng-components.mjs.map
|