@igo2/integration 1.14.2 → 1.15.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/about/about-tool/about-tool.component.mjs +2 -2
- package/esm2020/lib/about/about.module.mjs +1 -1
- package/esm2020/lib/analytics/analytics-listener.service.mjs +59 -4
- package/esm2020/lib/analytics/analytics.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog.state.mjs +1 -1
- package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +2 -2
- package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +2 -2
- package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +2 -2
- package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +2 -2
- package/esm2020/lib/context/context.module.mjs +1 -1
- package/esm2020/lib/context/context.state.mjs +1 -1
- package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +3 -6
- package/esm2020/lib/directions/directions.module.mjs +1 -1
- package/esm2020/lib/directions/directions.state.mjs +1 -1
- package/esm2020/lib/draw/draw.module.mjs +1 -1
- package/esm2020/lib/draw/draw.state.mjs +1 -2
- package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +2 -2
- package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +1 -1
- package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +2 -2
- package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +1 -1
- package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +2 -2
- package/esm2020/lib/filter/filter.module.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +2 -2
- package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +4 -4
- package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +2 -2
- package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +26 -22
- package/esm2020/lib/import-export/import-export.module.mjs +8 -5
- package/esm2020/lib/import-export/import-export.state.mjs +1 -1
- package/esm2020/lib/integration.module.mjs +1 -1
- package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +64 -65
- package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +2 -2
- package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +2 -2
- package/esm2020/lib/map/layer-list-tool.state.mjs +1 -1
- package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +2 -2
- package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +2 -2
- package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +5 -8
- package/esm2020/lib/map/map-proximity.state.mjs +9 -5
- package/esm2020/lib/map/map-tool/map-tool.component.mjs +2 -2
- package/esm2020/lib/map/map-tools/map-tools.component.mjs +78 -61
- package/esm2020/lib/map/map.module.mjs +5 -2
- package/esm2020/lib/map/map.state.mjs +1 -1
- package/esm2020/lib/measure/measure.module.mjs +1 -1
- package/esm2020/lib/measure/measure.state.mjs +1 -1
- package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +2 -2
- package/esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs +1 -1
- package/esm2020/lib/print/print-tool/print-tool.component.mjs +2 -2
- package/esm2020/lib/print/print.module.mjs +1 -1
- package/esm2020/lib/search/query.state.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
- package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +20 -20
- package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +1 -1
- package/esm2020/lib/search/search.module.mjs +1 -1
- package/esm2020/lib/search/search.state.mjs +29 -4
- package/esm2020/lib/storage/storage.module.mjs +1 -1
- package/esm2020/lib/storage/storage.state.mjs +1 -1
- package/esm2020/lib/tool/tool.module.mjs +1 -1
- package/esm2020/lib/tool/tool.state.mjs +1 -1
- package/esm2020/lib/workspace/shared/edition-actions.service.mjs +1 -1
- package/esm2020/lib/workspace/shared/feature-actions.service.mjs +1 -1
- package/esm2020/lib/workspace/shared/index.mjs +1 -1
- package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +1 -1
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
- package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +2 -2
- package/esm2020/lib/workspace/workspace.module.mjs +1 -1
- package/esm2020/lib/workspace/workspace.state.mjs +1 -1
- package/fesm2015/igo2-integration.mjs +318 -216
- package/fesm2015/igo2-integration.mjs.map +1 -1
- package/fesm2020/igo2-integration.mjs +314 -216
- package/fesm2020/igo2-integration.mjs.map +1 -1
- package/lib/analytics/analytics-listener.service.d.ts +7 -1
- package/lib/draw/draw.state.d.ts +0 -1
- package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +3 -1
- package/lib/import-export/import-export.module.d.ts +1 -1
- package/lib/map/map-proximity.state.d.ts +4 -1
- package/lib/map/map-tools/map-tools.component.d.ts +1 -0
- package/lib/map/map.module.d.ts +1 -1
- package/lib/search/search-results-tool/search-results-tool.component.d.ts +4 -5
- package/lib/search/search.state.d.ts +8 -2
- package/ngcc.config.js +3 -3
- package/package.json +8 -5
|
@@ -32,4 +32,4 @@ MeasureState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MeasureStat
|
|
|
32
32
|
providedIn: 'root'
|
|
33
33
|
}]
|
|
34
34
|
}], function () { return [{ type: i1.MapState }]; }, null); })();
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBc0IsTUFBTSxXQUFXLENBQUM7OztBQUc3RDs7R0FFRztBQUlILE1BQU0sT0FBTyxZQUFZO0lBU3ZCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFQdEM7O1dBRUc7UUFDSSxVQUFLLEdBQXFDLElBQUksWUFBWSxDQUFxQixFQUFFLEVBQUU7WUFDeEYsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRztTQUN2QixDQUFDLENBQUM7UUFJRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO3FCQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBRSxPQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztxQkFDakYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2hFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3RUFuQlUsWUFBWTtrRUFBWixZQUFZLFdBQVosWUFBWSxtQkFGWCxNQUFNO3VGQUVQLFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZVN0b3JlLCBGZWF0dXJlV2l0aE1lYXN1cmUgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIG1lYXN1cmUgbW9kdWxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlU3RhdGUge1xyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSB0aGF0IGhvbGRzIHRoZSBtZWFzdXJlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoTWVhc3VyZT4gPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoTWVhc3VyZT4oW10sIHtcclxuICAgIG1hcDogdGhpcy5tYXBTdGF0ZS5tYXBcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUpIHtcclxuXHJcbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzKSA9PiB7XHJcbiAgICAgIGlmICgobGF5ZXJzLmZpbHRlcihsID0+IGwuaWQ/LnN0YXJ0c1dpdGgoJ2lnby1tZWFzdXJlcy0nKSkubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGVsZXRlTWFueSh0aGlzLnN0b3JlLmFsbCgpKTtcclxuICAgICAgICB0aGlzLm1hcFN0YXRlLm1hcC5vbC5nZXRPdmVybGF5cygpLmdldEFycmF5KClcclxuICAgICAgICAgIC5maWx0ZXIob3ZlcmxheSA9PiAob3ZlcmxheSBhcyBhbnkpLm9wdGlvbnMuY2xhc3NOYW1lLmluY2x1ZGVzKCdpZ28tbWFwLXRvb2x0aXAnKSlcclxuICAgICAgICAgIC5tYXAob3ZlcmxheSA9PiB0aGlzLm1hcFN0YXRlLm1hcC5vbC5yZW1vdmVPdmVybGF5KG92ZXJsYXkpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -40,6 +40,6 @@ MeasurerToolComponent = __decorate([
|
|
|
40
40
|
export { MeasurerToolComponent };
|
|
41
41
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerToolComponent, [{
|
|
42
42
|
type: Component,
|
|
43
|
-
args: [{ selector: 'igo-measurer-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-measurer [store]=\"store\" [map]=\"map\"></igo-measurer>\n" }]
|
|
43
|
+
args: [{ selector: 'igo-measurer-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-measurer [store]=\"store\" [map]=\"map\"></igo-measurer>\r\n" }]
|
|
44
44
|
}], function () { return [{ type: i1.MeasureState }, { type: i2.MapState }]; }, null); })();
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21lYXN1cmUvbWVhc3VyZXItdG9vbC9tZWFzdXJlci10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci10b29sL21lYXN1cmVyLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBSzdDOztHQUVHO0lBV1UscUJBQXFCLFNBQXJCLHFCQUFxQjtJQWNoQyxZQUNVLFlBQTBCLEVBQzFCLFFBQWtCO1FBRGxCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDekIsQ0FBQztJQWZKOzs7T0FHRztJQUNILElBQUksS0FBSyxLQUF1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVqRjs7O09BR0c7SUFDSCxJQUFJLEdBQUcsS0FBYSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQU9oRCxDQUFBOzBGQW5CWSxxQkFBcUI7d0VBQXJCLHFCQUFxQjtRQ3ZCbEMsa0NBQXlEOztRQUEzQyxpQ0FBZSxnQkFBQTs7QUR1QmhCLHFCQUFxQjtJQVZqQyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsVUFBVTtRQUNoQixLQUFLLEVBQUUsZ0NBQWdDO1FBQ3ZDLElBQUksRUFBRSxPQUFPO0tBQ2QsQ0FBQztHQU1XLHFCQUFxQixDQW1CakM7U0FuQlkscUJBQXFCO3VGQUFyQixxQkFBcUI7Y0FMakMsU0FBUzsyQkFDRSxtQkFBbUIsbUJBRVosdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgRmVhdHVyZVN0b3JlLCBGZWF0dXJlV2l0aE1lYXN1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vLi4vbWFwL21hcC5zdGF0ZSc7XHJcbmltcG9ydCB7IE1lYXN1cmVTdGF0ZSB9IGZyb20gJy4uL21lYXN1cmUuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2wgdG8gbWVhc3VyZSBsZW5ndGhzIGFuZCBhcmVhc1xyXG4gKi9cclxuQFRvb2xDb21wb25lbnQoe1xyXG4gIG5hbWU6ICdtZWFzdXJlcicsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWVhc3VyZXInLFxyXG4gIGljb246ICdydWxlcidcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tbWVhc3VyZXItdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lYXN1cmVyLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlclRvb2xDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBNYXAgdG8gbWVhc3VyZSBvblxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBzdG9yZSgpOiBGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhNZWFzdXJlPiB7IHJldHVybiB0aGlzLm1lYXN1cmVTdGF0ZS5zdG9yZTsgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXAgdG8gbWVhc3VyZSBvblxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHsgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwOyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtZWFzdXJlU3RhdGU6IE1lYXN1cmVTdGF0ZSxcclxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlXHJcbiAgKSB7fVxyXG5cclxufVxyXG4iLCI8aWdvLW1lYXN1cmVyIFtzdG9yZV09XCJzdG9yZVwiIFttYXBdPVwibWFwXCI+PC9pZ28tbWVhc3VyZXI+XHJcbiJdfQ==
|
|
@@ -22,4 +22,4 @@ IgoAppMeasurerToolModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports:
|
|
|
22
22
|
}]
|
|
23
23
|
}], null, null); })();
|
|
24
24
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoAppMeasurerToolModule, { declarations: [MeasurerToolComponent], imports: [IgoMeasurerModule], exports: [MeasurerToolComponent] }); })();
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXItdG9vbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21lYXN1cmUvbWVhc3VyZXItdG9vbC9tZWFzdXJlci10b29sLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEU7O0dBRUc7QUFTSCxNQUFNLE9BQU8sd0JBQXdCOztnR0FBeEIsd0JBQXdCOzBFQUF4Qix3QkFBd0I7OEVBTmpDLGlCQUFpQjt1RkFNUix3QkFBd0I7Y0FScEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxpQkFBaUI7aUJBQ2xCO2dCQUNELFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEM7O3dGQUNZLHdCQUF3QixtQkFKcEIscUJBQXFCLGFBRmxDLGlCQUFpQixhQUdULHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJZ29NZWFzdXJlck1vZHVsZSB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcblxyXG5pbXBvcnQgeyBNZWFzdXJlclRvb2xDb21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVyLXRvb2wuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIElnb01lYXN1cmVyTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtNZWFzdXJlclRvb2xDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtNZWFzdXJlclRvb2xDb21wb25lbnRdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWdvQXBwTWVhc3VyZXJUb29sTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -28,6 +28,6 @@ PrintToolComponent = __decorate([
|
|
|
28
28
|
export { PrintToolComponent };
|
|
29
29
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintToolComponent, [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'igo-print-tool', template: "<igo-print [map]=\"map\"></igo-print>\n" }]
|
|
31
|
+
args: [{ selector: 'igo-print-tool', template: "<igo-print [map]=\"map\"></igo-print>\r\n" }]
|
|
32
32
|
}], function () { return [{ type: i1.MapState }]; }, null); })();
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3ByaW50L3ByaW50LXRvb2wvcHJpbnQtdG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3ByaW50L3ByaW50LXRvb2wvcHJpbnQtdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0lBY2hDLGtCQUFrQixTQUFsQixrQkFBa0I7SUFLN0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFKMUMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0NBR0YsQ0FBQTtvRkFOWSxrQkFBa0I7cUVBQWxCLGtCQUFrQjtRQ2hCL0IsK0JBQW1DOztRQUF4Qiw2QkFBVzs7QURnQlQsa0JBQWtCO0lBVDlCLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLDZCQUE2QjtRQUNwQyxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDO0dBS1csa0JBQWtCLENBTTlCO1NBTlksa0JBQWtCO3VGQUFsQixrQkFBa0I7Y0FKOUIsU0FBUzsyQkFDRSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAncHJpbnQnLFxyXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLnByaW50JyxcclxuICBpY29uOiAncHJpbnRlcidcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tcHJpbnQtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ByaW50LXRvb2wuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmludFRvb2xDb21wb25lbnQge1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlKSB7fVxyXG59XHJcbiIsIjxpZ28tcHJpbnQgW21hcF09XCJtYXBcIj48L2lnby1wcmludD5cclxuIl19
|
|
@@ -23,4 +23,4 @@ IgoAppPrintModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [IgoPri
|
|
|
23
23
|
}]
|
|
24
24
|
}], null, null); })();
|
|
25
25
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoAppPrintModule, { declarations: [PrintToolComponent], imports: [IgoPrintModule], exports: [PrintToolComponent] }); })();
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9wcmludC9wcmludC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFFUixzQkFBc0IsRUFDdkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFRdkUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQUNKLENBQUM7O2tGQU5VLGlCQUFpQjttRUFBakIsaUJBQWlCO3VFQUxsQixjQUFjO3VGQUtiLGlCQUFpQjtjQU43QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUN6QixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ2xDOzt3RkFDWSxpQkFBaUIsbUJBSmIsa0JBQWtCLGFBRHZCLGNBQWMsYUFFZCxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIE5nTW9kdWxlLFxyXG4gIE1vZHVsZVdpdGhQcm92aWRlcnMsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSWdvUHJpbnRNb2R1bGUgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5pbXBvcnQgeyBQcmludFRvb2xDb21wb25lbnQgfSBmcm9tICcuL3ByaW50LXRvb2wvcHJpbnQtdG9vbC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbSWdvUHJpbnRNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW1ByaW50VG9vbENvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW1ByaW50VG9vbENvbXBvbmVudF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29BcHBQcmludE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29BcHBQcmludE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IElnb0FwcFByaW50TW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -31,4 +31,4 @@ QueryState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: QueryState, f
|
|
|
31
31
|
providedIn: 'root'
|
|
32
32
|
}]
|
|
33
33
|
}], function () { return [{ type: i1.ConfigService }]; }, null); })();
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9xdWVyeS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUkzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBU3JCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUmhEOztXQUVHO1FBQ0ksVUFBSyxHQUE4QixJQUFJLFdBQVcsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUNyRSxzQkFBaUIsR0FBNkIsRUFBRSxDQUFDO1FBQ2pELCtCQUEwQixHQUE2QixFQUFFLENBQUM7UUFDMUQsMkJBQXNCLEdBQTZCLEVBQUUsQ0FBQztRQUczRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUl6RSxDQUFDO1FBQ0YsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQywwQkFBMEIsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztTQUN2RDtJQUNILENBQUM7O29FQXBCVSxVQUFVO2dFQUFWLFVBQVUsV0FBVixVQUFVLG1CQUZULE1BQU07dUZBRVAsVUFBVTtjQUh0QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zLCBTZWFyY2hSZXN1bHQgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIHF1ZXJ5IG1vZHVsZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVlcnlTdGF0ZSB7XHJcbiAgLyoqXHJcbiAgICogU3RvcmUgdGhhdCBob2xkcyB0aGUgcXVlcnkgcmVzdWx0c1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdG9yZTogRW50aXR5U3RvcmU8U2VhcmNoUmVzdWx0PiA9IG5ldyBFbnRpdHlTdG9yZTxTZWFyY2hSZXN1bHQ+KFtdKTtcclxuICBwdWJsaWMgcXVlcnlPdmVybGF5U3R5bGU6IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyA9IHt9O1xyXG4gIHB1YmxpYyBxdWVyeU92ZXJsYXlTdHlsZVNlbGVjdGlvbjogQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zID0ge307XHJcbiAgcHVibGljIHF1ZXJ5T3ZlcmxheVN0eWxlRm9jdXM6IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcclxuICAgIGNvbnN0IHF1ZXJ5T3ZlcmxheVN0eWxlID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKSBhcyB7XHJcbiAgICAgIGJhc2U/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnMsXHJcbiAgICAgIHNlbGVjdGlvbj86IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyxcclxuICAgICAgZm9jdXM/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnNcclxuICAgIH07XHJcbiAgICBpZiAocXVlcnlPdmVybGF5U3R5bGUpIHtcclxuICAgICAgdGhpcy5xdWVyeU92ZXJsYXlTdHlsZSA9IHF1ZXJ5T3ZlcmxheVN0eWxlLmJhc2U7XHJcbiAgICAgIHRoaXMucXVlcnlPdmVybGF5U3R5bGVTZWxlY3Rpb24gPSBxdWVyeU92ZXJsYXlTdHlsZS5zZWxlY3Rpb247XHJcbiAgICAgIHRoaXMucXVlcnlPdmVybGF5U3R5bGVGb2N1cyA9IHF1ZXJ5T3ZlcmxheVN0eWxlLmZvY3VzO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -58,4 +58,4 @@ SearchBarBindingDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: S
|
|
|
58
58
|
type: HostListener,
|
|
59
59
|
args: ['searchTypeChange', ['$event']]
|
|
60
60
|
}] }); })();
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci1iaW5kaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvc2VhcmNoL3NlYXJjaC1iYXIvc2VhcmNoLWJhci1iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBcUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBU2pGLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFDa0IsU0FBNkIsRUFDckMsV0FBd0I7UUFEaEIsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDL0IsQ0FBQztJQVZKLElBQUksVUFBVSxLQUFhLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLFVBQVUsS0FBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFXdkUsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFO1lBQ2hGLElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUU7WUFDaEYsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBdUIsRUFBRSxFQUFFO1lBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsVUFBbUI7UUFDcEMsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxVQUFtQjtRQUNwQyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7a0dBbERVLHlCQUF5Qjs0RUFBekIseUJBQXlCO2tJQUF6Qiw4QkFBMEIsaUhBQTFCLDhCQUEwQjs7dUZBQTFCLHlCQUF5QjtjQUhyQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjthQUNsQzs7c0JBV0ksSUFBSTtrREE2QlAsa0JBQWtCO2tCQURqQixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO1lBUTVDLGtCQUFrQjtrQkFEakIsWUFBWTttQkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgU2VsZiwgT25Jbml0LCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFNlYXJjaEJhckNvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IFNlYXJjaFN0YXRlIH0gZnJvbSAnLi4vc2VhcmNoLnN0YXRlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb1NlYXJjaEJhckJpbmRpbmddJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgZ2V0IHNlYXJjaFRlcm0oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybSQudmFsdWU7IH1cclxuICBnZXQgc2VhcmNoVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hUeXBlJC52YWx1ZTsgfVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFRlcm0kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc2VhcmNoVHlwZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzZWFyY2hEaXNhYmxlZCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogU2VhcmNoQmFyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTdGF0ZTogU2VhcmNoU3RhdGVcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtJCQgPSB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm0kLnN1YnNjcmliZSgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmIChzZWFyY2hUZXJtICE9PSB1bmRlZmluZWQgJiYgc2VhcmNoVGVybSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50LnNldFRlcm0oc2VhcmNoVGVybSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoVHlwZSQkID0gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hUeXBlJC5zdWJzY3JpYmUoKHNlYXJjaFR5cGU6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoc2VhcmNoVHlwZSAhPT0gdW5kZWZpbmVkICYmIHNlYXJjaFR5cGUgIT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXRTZWFyY2hUeXBlKHNlYXJjaFR5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkJCQgPSB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaERpc2FibGVkJC5zdWJzY3JpYmUoKHNlYXJjaERpc2FibGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50LmRpc2FibGVkID0gc2VhcmNoRGlzYWJsZWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2VhcmNoVHlwZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNlYXJjaERpc2FibGVkJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3NlYXJjaFRlcm1DaGFuZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uU2VhcmNoVGVybUNoYW5nZShzZWFyY2hUZXJtPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2VhcmNoVGVybSAhPT0gdGhpcy5zZWFyY2hUZXJtKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2V0U2VhcmNoVGVybShzZWFyY2hUZXJtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3NlYXJjaFR5cGVDaGFuZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uU2VhcmNoVHlwZUNoYW5nZShzZWFyY2hUeXBlPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2VhcmNoVHlwZSAhPT0gdGhpcy5zZWFyY2hUeXBlKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2V0U2VhcmNoVHlwZShzZWFyY2hUeXBlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -19,4 +19,4 @@ IgoAppSearchBarModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Ig
|
|
|
19
19
|
}]
|
|
20
20
|
}], null, null); })();
|
|
21
21
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoAppSearchBarModule, { declarations: [SearchBarBindingDirective], imports: [IgoSearchModule], exports: [SearchBarBindingDirective] }); })();
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9zZWFyY2gtYmFyL3NlYXJjaC1iYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFM0U7O0dBRUc7QUFNSCxNQUFNLE9BQU8scUJBQXFCOzswRkFBckIscUJBQXFCO3VFQUFyQixxQkFBcUI7MkVBSnRCLGVBQWU7dUZBSWQscUJBQXFCO2NBTGpDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQzFCLFlBQVksRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN6QyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQzthQUNyQzs7d0ZBQ1kscUJBQXFCLG1CQUhqQix5QkFBeUIsYUFEOUIsZUFBZSxhQUVmLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJZ29TZWFyY2hNb2R1bGUgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuaW1wb3J0IHsgU2VhcmNoQmFyQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vc2VhcmNoLWJhci1iaW5kaW5nLmRpcmVjdGl2ZSc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbSWdvU2VhcmNoTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtTZWFyY2hCYXJCaW5kaW5nRGlyZWN0aXZlXSxcclxuICBleHBvcnRzOiBbU2VhcmNoQmFyQmluZGluZ0RpcmVjdGl2ZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ29BcHBTZWFyY2hCYXJNb2R1bGUge31cclxuIl19
|
|
@@ -15,15 +15,14 @@ import * as i2 from "../search.state";
|
|
|
15
15
|
import * as i3 from "../../tool/tool.state";
|
|
16
16
|
import * as i4 from "../../directions/directions.state";
|
|
17
17
|
import * as i5 from "@igo2/core";
|
|
18
|
-
import * as i6 from "
|
|
19
|
-
import * as i7 from "@angular/
|
|
20
|
-
import * as i8 from "@angular/material/
|
|
21
|
-
import * as i9 from "@angular/material/
|
|
22
|
-
import * as i10 from "@angular/material/
|
|
23
|
-
import * as i11 from "@
|
|
24
|
-
import * as i12 from "@igo2/
|
|
25
|
-
import * as i13 from "@
|
|
26
|
-
import * as i14 from "@ngx-translate/core";
|
|
18
|
+
import * as i6 from "@angular/common";
|
|
19
|
+
import * as i7 from "@angular/material/icon";
|
|
20
|
+
import * as i8 from "@angular/material/badge";
|
|
21
|
+
import * as i9 from "@angular/material/tooltip";
|
|
22
|
+
import * as i10 from "@angular/material/button";
|
|
23
|
+
import * as i11 from "@igo2/geo";
|
|
24
|
+
import * as i12 from "@igo2/common";
|
|
25
|
+
import * as i13 from "@ngx-translate/core";
|
|
27
26
|
function SearchResultsToolComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
28
27
|
i0.ɵɵelementStart(0, "div", 2)(1, "section", 3)(2, "h4")(3, "strong");
|
|
29
28
|
i0.ɵɵtext(4);
|
|
@@ -50,7 +49,7 @@ function SearchResultsToolComponent_igo_flexible_2_ng_template_5_Template(rf, ct
|
|
|
50
49
|
} if (rf & 2) {
|
|
51
50
|
const result_r6 = ctx.result;
|
|
52
51
|
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
53
|
-
i0.ɵɵproperty("map", ctx_r4.map)("store", ctx_r4.store)("stores", ctx_r4.stores)("layer", result_r6);
|
|
52
|
+
i0.ɵɵproperty("map", ctx_r4.map)("store", ctx_r4.store)("stores", ctx_r4.stores)("layer", result_r6)("saveSearchResultInLayer", ctx_r4.saveSearchResultInLayer);
|
|
54
53
|
} }
|
|
55
54
|
function SearchResultsToolComponent_igo_flexible_2_igo_panel_8_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
56
55
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
@@ -98,7 +97,7 @@ function SearchResultsToolComponent_igo_flexible_2_Template(rf, ctx) { if (rf &
|
|
|
98
97
|
i0.ɵɵpipe(2, "async");
|
|
99
98
|
i0.ɵɵelementStart(3, "div", 7)(4, "igo-search-results", 8);
|
|
100
99
|
i0.ɵɵlistener("resultFocus", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_resultFocus_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.onResultFocus($event)); })("resultSelect", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_resultSelect_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.onResultSelect($event)); })("resultUnfocus", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_resultUnfocus_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onResultUnfocus($event)); })("resultMouseenter", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_resultMouseenter_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.onResultFocus($event)); })("resultMouseleave", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_resultMouseleave_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.onResultUnfocus($event)); })("moreResults", function SearchResultsToolComponent_igo_flexible_2_Template_igo_search_results_moreResults_4_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.onSearch($event)); });
|
|
101
|
-
i0.ɵɵtemplate(5, SearchResultsToolComponent_igo_flexible_2_ng_template_5_Template, 1,
|
|
100
|
+
i0.ɵɵtemplate(5, SearchResultsToolComponent_igo_flexible_2_ng_template_5_Template, 1, 5, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
|
|
102
101
|
i0.ɵɵelementEnd()();
|
|
103
102
|
i0.ɵɵelementStart(7, "div", 10);
|
|
104
103
|
i0.ɵɵtemplate(8, SearchResultsToolComponent_igo_flexible_2_igo_panel_8_Template, 7, 11, "igo-panel", 11);
|
|
@@ -116,13 +115,12 @@ function SearchResultsToolComponent_igo_flexible_2_Template(rf, ctx) { if (rf &
|
|
|
116
115
|
* Tool to browse the search results
|
|
117
116
|
*/
|
|
118
117
|
let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
119
|
-
constructor(mapState, searchState, elRef, toolState, directionState, configService
|
|
118
|
+
constructor(mapState, searchState, elRef, toolState, directionState, configService) {
|
|
120
119
|
this.mapState = mapState;
|
|
121
120
|
this.searchState = searchState;
|
|
122
121
|
this.elRef = elRef;
|
|
123
122
|
this.toolState = toolState;
|
|
124
123
|
this.directionState = directionState;
|
|
125
|
-
this.drawState = drawState;
|
|
126
124
|
/**
|
|
127
125
|
* to show hide results icons
|
|
128
126
|
*/
|
|
@@ -132,6 +130,7 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
132
130
|
*/
|
|
133
131
|
this.topPanelStateDefault = 'expanded';
|
|
134
132
|
this.hasFeatureEmphasisOnSelection = false;
|
|
133
|
+
this.saveSearchResultInLayer = false;
|
|
135
134
|
this.shownResultsGeometries = [];
|
|
136
135
|
this.shownResultsEmphasisGeometries = [];
|
|
137
136
|
this.focusedResult$ = new BehaviorSubject(undefined);
|
|
@@ -142,6 +141,7 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
142
141
|
this.topPanelState$ = new BehaviorSubject('initial');
|
|
143
142
|
this.format = new olFormatGeoJSON();
|
|
144
143
|
this.hasFeatureEmphasisOnSelection = configService.getConfig('hasFeatureEmphasisOnSelection');
|
|
144
|
+
this.saveSearchResultInLayer = configService.getConfig('saveSearchResultInLayer');
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
147
|
* Store holding the search results
|
|
@@ -177,7 +177,7 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
177
177
|
return this.searchState.searchTermSplitter$.value;
|
|
178
178
|
}
|
|
179
179
|
get stores() {
|
|
180
|
-
return this.
|
|
180
|
+
return this.searchState.searchLayerStores;
|
|
181
181
|
}
|
|
182
182
|
ngOnInit() {
|
|
183
183
|
this.searchTerm$$ = this.searchState.searchTerm$.subscribe((searchTerm) => {
|
|
@@ -561,8 +561,8 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
561
561
|
}, 250);
|
|
562
562
|
}
|
|
563
563
|
};
|
|
564
|
-
SearchResultsToolComponent.ɵfac = function SearchResultsToolComponent_Factory(t) { return new (t || SearchResultsToolComponent)(i0.ɵɵdirectiveInject(i1.MapState), i0.ɵɵdirectiveInject(i2.SearchState), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.ToolState), i0.ɵɵdirectiveInject(i4.DirectionState), i0.ɵɵdirectiveInject(i5.ConfigService)
|
|
565
|
-
SearchResultsToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultsToolComponent, selectors: [["igo-search-results-tool"]], inputs: { showIcons: "showIcons", topPanelStateDefault: "topPanelStateDefault", topPanelState: "topPanelState" }, decls: 4, vars: 6, consts: [["style", "margin: 10px;", 4, "ngIf"], ["initial", "100%", "initialMobile", "100%", "collapsed", "calc(100% - 58px)", "collapsedMobile", "calc(100% - 58px)", "expanded", "60%", "expandedMobile", "60%", 3, "state", 4, "ngIf"], [2, "margin", "10px"], [1, "mat-typography"], [3, "innerHTML"], ["initial", "100%", "initialMobile", "100%", "collapsed", "calc(100% - 58px)", "collapsedMobile", "calc(100% - 58px)", "expanded", "60%", "expandedMobile", "60%", 3, "state"], ["topPanel", ""], [1, "igo-content"], ["placeholder", "false", 3, "store", "showIcons", "term", "termSplitter", "settingsChange$", "map", "resultFocus", "resultSelect", "resultUnfocus", "resultMouseenter", "resultMouseleave", "moreResults"], ["igoSearchItemToolbar", ""], ["igoFlexibleFill", "", 1, "igo-content"], [3, "title", "cursorPointer", "click", 4, "ngIf"], [3, "map", "store", "stores", "layer"], [3, "title", "cursorPointer", "click"], ["mat-icon-button", "", "panelLeftButton", "", 1, "igo-icon-button", 3, "click"], [3, "svgIcon"], ["mat-icon-button", "", "panelRightButton", "", "class", "igo-icon-button", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoFeatureDetailsDirective", "", 3, "feature", "map", "toolbox", "routingEvent"], ["mat-icon-button", "", "panelRightButton", "", "matTooltipShowDelay", "500", 1, "igo-icon-button", 3, "matTooltip", "click"], ["matBadgeColor", "accent", "matBadgeSize", "small", "svgIcon", "magnify-plus-outline", 3, "matBadge", "matBadgeHidden"]], template: function SearchResultsToolComponent_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
SearchResultsToolComponent.ɵfac = function SearchResultsToolComponent_Factory(t) { return new (t || SearchResultsToolComponent)(i0.ɵɵdirectiveInject(i1.MapState), i0.ɵɵdirectiveInject(i2.SearchState), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.ToolState), i0.ɵɵdirectiveInject(i4.DirectionState), i0.ɵɵdirectiveInject(i5.ConfigService)); };
|
|
565
|
+
SearchResultsToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultsToolComponent, selectors: [["igo-search-results-tool"]], inputs: { showIcons: "showIcons", topPanelStateDefault: "topPanelStateDefault", topPanelState: "topPanelState" }, decls: 4, vars: 6, consts: [["style", "margin: 10px;", 4, "ngIf"], ["initial", "100%", "initialMobile", "100%", "collapsed", "calc(100% - 58px)", "collapsedMobile", "calc(100% - 58px)", "expanded", "60%", "expandedMobile", "60%", 3, "state", 4, "ngIf"], [2, "margin", "10px"], [1, "mat-typography"], [3, "innerHTML"], ["initial", "100%", "initialMobile", "100%", "collapsed", "calc(100% - 58px)", "collapsedMobile", "calc(100% - 58px)", "expanded", "60%", "expandedMobile", "60%", 3, "state"], ["topPanel", ""], [1, "igo-content"], ["placeholder", "false", 3, "store", "showIcons", "term", "termSplitter", "settingsChange$", "map", "resultFocus", "resultSelect", "resultUnfocus", "resultMouseenter", "resultMouseleave", "moreResults"], ["igoSearchItemToolbar", ""], ["igoFlexibleFill", "", 1, "igo-content"], [3, "title", "cursorPointer", "click", 4, "ngIf"], [3, "map", "store", "stores", "layer", "saveSearchResultInLayer"], [3, "title", "cursorPointer", "click"], ["mat-icon-button", "", "panelLeftButton", "", 1, "igo-icon-button", 3, "click"], [3, "svgIcon"], ["mat-icon-button", "", "panelRightButton", "", "class", "igo-icon-button", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoFeatureDetailsDirective", "", 3, "feature", "map", "toolbox", "routingEvent"], ["mat-icon-button", "", "panelRightButton", "", "matTooltipShowDelay", "500", 1, "igo-icon-button", 3, "matTooltip", "click"], ["matBadgeColor", "accent", "matBadgeSize", "small", "svgIcon", "magnify-plus-outline", 3, "matBadge", "matBadgeHidden"]], template: function SearchResultsToolComponent_Template(rf, ctx) { if (rf & 1) {
|
|
566
566
|
i0.ɵɵtemplate(0, SearchResultsToolComponent_div_0_Template, 13, 11, "div", 0);
|
|
567
567
|
i0.ɵɵpipe(1, "async");
|
|
568
568
|
i0.ɵɵtemplate(2, SearchResultsToolComponent_igo_flexible_2_Template, 10, 12, "igo-flexible", 1);
|
|
@@ -571,7 +571,7 @@ SearchResultsToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
571
571
|
i0.ɵɵproperty("ngIf", (!ctx.store || ctx.store.stateView.empty) && i0.ɵɵpipeBind1(1, 2, ctx.debouncedEmpty$));
|
|
572
572
|
i0.ɵɵadvance(2);
|
|
573
573
|
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 4, ctx.debouncedEmpty$) === false);
|
|
574
|
-
} }, dependencies: [
|
|
574
|
+
} }, dependencies: [i6.NgIf, i7.MatIcon, i8.MatBadge, i9.MatTooltip, i10.MatButton, i11.FeatureDetailsComponent, i11.FeatureDetailsDirective, i11.SearchResultsComponent, i11.SearchResultAddButtonComponent, i12.FlexibleComponent, i12.PanelComponent, i6.AsyncPipe, i13.TranslatePipe, i12.SanitizeHtmlPipe], encapsulation: 2, changeDetection: 0 });
|
|
575
575
|
SearchResultsToolComponent = __decorate([
|
|
576
576
|
ToolComponent({
|
|
577
577
|
name: 'searchResults',
|
|
@@ -582,12 +582,12 @@ SearchResultsToolComponent = __decorate([
|
|
|
582
582
|
export { SearchResultsToolComponent };
|
|
583
583
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsToolComponent, [{
|
|
584
584
|
type: Component,
|
|
585
|
-
args: [{ selector: 'igo-search-results-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(!store || store.stateView.empty) && (debouncedEmpty$ | async)\" style=\"margin: 10px;\">\n <section class=\"mat-typography\">\n <h4><strong>{{ 'igo.integration.searchResultsTool.noResults' | translate }}</strong></h4>\n <p><strong>{{ 'igo.integration.searchResultsTool.doSearch' | translate }}</strong></p>\n <div [innerHTML]=\"'igo.integration.searchResultsTool.examples' | translate | sanitizeHtml\"></div>\n</section>\n</div>\n\n<igo-flexible\n *ngIf=\"(debouncedEmpty$ | async) === false\"\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 58px)\"\n collapsedMobile=\"calc(100% - 58px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"(feature$ |\u00A0async) ? topPanelState : 'initial'\">\n\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\">\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\">\n </igo-search-add-button>\n </ng-template>\n </igo-search-results>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n <igo-panel [title]=\"featureTitle\" *ngIf=\"feature$ |\u00A0async\" (click)=\"toggleTopPanel($event)\" [cursorPointer]=\"true\">\n\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\">\n <mat-icon [svgIcon]=\"(topPanelState$ | async) === 'collapsed' ? 'arrow-up' : 'arrow-down'\"></mat-icon>\n </button>\n\n <button\n *ngIf=\"feature.geometry\"\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"((isSelectedResultOutOfView$ | async) ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView' : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip') | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\">\n <mat-icon\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"(isSelectedResultOutOfView$ | async)===false\" \n svgIcon=\"magnify-plus-outline\"></mat-icon>\n </button>\n\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature$ | async\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\">\n </igo-feature-details>\n </igo-panel>\n </div>\n\n</igo-flexible>\n" }]
|
|
586
|
-
}], function () { return [{ type: i1.MapState }, { type: i2.SearchState }, { type: i0.ElementRef }, { type: i3.ToolState }, { type: i4.DirectionState }, { type: i5.ConfigService }
|
|
585
|
+
args: [{ selector: 'igo-search-results-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(!store || store.stateView.empty) && (debouncedEmpty$ | async)\" style=\"margin: 10px;\">\r\n <section class=\"mat-typography\">\r\n <h4><strong>{{ 'igo.integration.searchResultsTool.noResults' | translate }}</strong></h4>\r\n <p><strong>{{ 'igo.integration.searchResultsTool.doSearch' | translate }}</strong></p>\r\n <div [innerHTML]=\"'igo.integration.searchResultsTool.examples' | translate | sanitizeHtml\"></div>\r\n</section>\r\n</div>\r\n\r\n<igo-flexible\r\n *ngIf=\"(debouncedEmpty$ | async) === false\"\r\n #topPanel\r\n initial=\"100%\"\r\n initialMobile=\"100%\"\r\n collapsed=\"calc(100% - 58px)\"\r\n collapsedMobile=\"calc(100% - 58px)\"\r\n expanded=\"60%\"\r\n expandedMobile=\"60%\"\r\n [state]=\"(feature$ |\u00A0async) ? topPanelState : 'initial'\">\r\n\r\n <div class=\"igo-content\">\r\n <igo-search-results\r\n [store]=\"store\"\r\n [showIcons]=\"showIcons\"\r\n [term]=\"term\"\r\n [termSplitter]=\"termSplitter\"\r\n [settingsChange$]=\"settingsChange$\"\r\n placeholder=\"false\"\r\n (resultFocus)=\"onResultFocus($event)\"\r\n (resultSelect)=\"onResultSelect($event)\"\r\n (resultUnfocus)=\"onResultUnfocus($event)\"\r\n (resultMouseenter)=\"onResultFocus($event)\"\r\n (resultMouseleave)=\"onResultUnfocus($event)\"\r\n (moreResults)=\"onSearch($event)\"\r\n [map]=\"map\">\r\n <ng-template #igoSearchItemToolbar let-result=\"result\">\r\n <igo-search-add-button\r\n [map]=\"map\"\r\n [store]=\"store\"\r\n [stores]=\"stores\"\r\n [layer]=\"result\"\r\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\">\r\n </igo-search-add-button>\r\n </ng-template>\r\n </igo-search-results>\r\n </div>\r\n\r\n <div igoFlexibleFill class=\"igo-content\">\r\n <igo-panel [title]=\"featureTitle\" *ngIf=\"feature$ |\u00A0async\" (click)=\"toggleTopPanel($event)\" [cursorPointer]=\"true\">\r\n\r\n <button\r\n mat-icon-button\r\n panelLeftButton\r\n class=\"igo-icon-button\"\r\n (click)=\"toggleTopPanel()\">\r\n <mat-icon [svgIcon]=\"(topPanelState$ | async) === 'collapsed' ? 'arrow-up' : 'arrow-down'\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"feature.geometry\"\r\n mat-icon-button\r\n panelRightButton\r\n class=\"igo-icon-button\"\r\n [matTooltip]=\"((isSelectedResultOutOfView$ | async) ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView' : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip') | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"zoomToFeatureExtent()\">\r\n <mat-icon\r\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\r\n matBadgeColor=\"accent\"\r\n matBadgeSize=\"small\"\r\n [matBadgeHidden]=\"(isSelectedResultOutOfView$ | async)===false\" \r\n svgIcon=\"magnify-plus-outline\"></mat-icon>\r\n </button>\r\n\r\n <igo-feature-details\r\n igoFeatureDetailsDirective\r\n [feature]=\"feature$ | async\"\r\n [map]=\"map\"\r\n [toolbox]=\"toolState.toolbox\"\r\n (routingEvent)=\"getRoute()\">\r\n </igo-feature-details>\r\n </igo-panel>\r\n </div>\r\n\r\n</igo-flexible>\r\n" }]
|
|
586
|
+
}], function () { return [{ type: i1.MapState }, { type: i2.SearchState }, { type: i0.ElementRef }, { type: i3.ToolState }, { type: i4.DirectionState }, { type: i5.ConfigService }]; }, { showIcons: [{
|
|
587
587
|
type: Input
|
|
588
588
|
}], topPanelStateDefault: [{
|
|
589
589
|
type: Input
|
|
590
590
|
}], topPanelState: [{
|
|
591
591
|
type: Input
|
|
592
592
|
}] }); })();
|
|
593
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy10b29sL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtdG9vbC9zZWFyY2gtcmVzdWx0cy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUdwQyxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBRUwsYUFBYSxFQUViLGNBQWMsRUFDZCxpQkFBaUIsRUFFbEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLE9BQU8sRUFFUCxhQUFhLEVBR2IsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsYUFBYSxFQUNiLG9CQUFvQixFQUNwQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixZQUFZLEVBR2IsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lD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RUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUM3QztpQkFFRjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNGLENBQUE7b0dBbGpCWSwwQkFBMEI7NkVBQTFCLDBCQUEwQjtRQ3BFdkMsNkVBTU07O1FBRU4sK0ZBMEVlOzs7UUFsRlQsNkdBQW9FO1FBU3ZFLGVBQXlDO1FBQXpDLDBFQUF5Qzs7QUQyRC9CLDBCQUEwQjtJQVZ0QyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUscUNBQXFDO1FBQzVDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7R0FNVywwQkFBMEIsQ0FrakJ0QztTQWxqQlksMEJBQTBCO3VGQUExQiwwQkFBMEI7Y0FMdEMsU0FBUzsyQkFDRSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU07dU5BTXRDLFNBQVM7a0JBQWpCLEtBQUs7WUFLRyxvQkFBb0I7a0JBQTVCLEtBQUs7WUErREYsYUFBYTtrQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBvbEZvcm1hdEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBvbFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IHBvaW50T25GZWF0dXJlIGZyb20gJ0B0dXJmL3BvaW50LW9uLWZlYXR1cmUnO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlTdG9yZSxcbiAgVG9vbENvbXBvbmVudCxcbiAgRmxleGlibGVTdGF0ZSxcbiAgZ2V0RW50aXR5VGl0bGUsXG4gIEZsZXhpYmxlQ29tcG9uZW50LFxuICBFbnRpdHlTdGF0ZVxufSBmcm9tICdAaWdvMi9jb21tb24nO1xuXG5pbXBvcnQge1xuICBGRUFUVVJFLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlTW90aW9uLFxuICBTZWFyY2hSZXN1bHQsXG4gIElnb01hcCxcbiAgbW92ZVRvT2xGZWF0dXJlcyxcbiAgUmVzZWFyY2gsXG4gIGZlYXR1cmVzQXJlVG9vRGVlcEluVmlldyxcbiAgZmVhdHVyZVRvT2wsXG4gIGZlYXR1cmVGcm9tT2wsXG4gIGdldENvbW1vblZlY3RvclN0eWxlLFxuICBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlLFxuICBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCxcbiAgZmVhdHVyZXNBcmVPdXRPZlZpZXcsXG4gIHJvdW5kQ29vcmRUbyxcbiAgRmVhdHVyZVdpdGhEcmF3LFxuICBGZWF0dXJlU3RvcmVcbn0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcblxuaW1wb3J0IHsgU2VhcmNoU3RhdGUgfSBmcm9tICcuLi9zZWFyY2guc3RhdGUnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IERpcmVjdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aW9ucy9kaXJlY3Rpb25zLnN0YXRlJztcbmltcG9ydCB7IERyYXdTdGF0ZSB9IGZyb20gJy4uLy4uL2RyYXcnO1xuXG4vKipcbiAqIFRvb2wgdG8gYnJvd3NlIHRoZSBzZWFyY2ggcmVzdWx0c1xuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdzZWFyY2hSZXN1bHRzJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuc2VhcmNoUmVzdWx0cycsXG4gIGljb246ICdtYWduaWZ5J1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zZWFyY2gtcmVzdWx0cy10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIHRvIHNob3cgaGlkZSByZXN1bHRzIGljb25zXG4gICAqL1xuICBASW5wdXQoKSBzaG93SWNvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHRvcCBwYW5lbCBkZWZhdWx0IHN0YXRlXG4gICAqL1xuICBASW5wdXQoKSB0b3BQYW5lbFN0YXRlRGVmYXVsdDogc3RyaW5nID0gJ2V4cGFuZGVkJztcblxuICBwcml2YXRlIGhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzaG93UmVzdWx0c0dlb21ldHJpZXMkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGdldFJvdXRlJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzaG93blJlc3VsdHNHZW9tZXRyaWVzOiBGZWF0dXJlW10gPSBbXTtcbiAgcHJpdmF0ZSBzaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXM6IEZlYXR1cmVbXSA9IFtdO1xuICBwcml2YXRlIGZvY3VzZWRSZXN1bHQkOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUmVzdWx0PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHB1YmxpYyBpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGFic3RyYWN0Rm9jdXNlZFJlc3VsdDogRmVhdHVyZTtcbiAgcHJpdmF0ZSBhYnN0cmFjdFNlbGVjdGVkUmVzdWx0OiBGZWF0dXJlO1xuXG4gIHB1YmxpYyBkZWJvdW5jZWRFbXB0eSQgOkJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgZGVib3VuY2VkRW1wdHkkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdG9yZSBob2xkaW5nIHRoZSBzZWFyY2ggcmVzdWx0c1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBzdG9yZSgpOiBFbnRpdHlTdG9yZTxTZWFyY2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zdG9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgdG8gZGlzcGxheSB0aGUgcmVzdWx0cyBvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBnZXQgZmVhdHVyZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZSA/IGdldEVudGl0eVRpdGxlKHRoaXMuZmVhdHVyZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgZmVhdHVyZSQoKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVWaWV3XG4gICAgICAuZmlyc3RCeSQoKGUpID0+IGUuc3RhdGUuZm9jdXNlZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgKHRoaXMuZmVhdHVyZSA9IGVsZW1lbnRcbiAgICAgICAgICAgID8gKGVsZW1lbnQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGZlYXR1cmU6IEZlYXR1cmU7XG5cbiAgcHVibGljIHRlcm0gPSAnJztcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgc2V0dGluZ3NDaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyB0b3BQYW5lbFN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmxleGlibGVTdGF0ZT4oJ2luaXRpYWwnKTtcbiAgcHJpdmF0ZSB0b3BQYW5lbFN0YXRlJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKVxuICBzZXQgdG9wUGFuZWxTdGF0ZSh2YWx1ZTogRmxleGlibGVTdGF0ZSkge1xuICAgIHRoaXMudG9wUGFuZWxTdGF0ZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHRvcFBhbmVsU3RhdGUoKTogRmxleGlibGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMudG9wUGFuZWxTdGF0ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgdGVybVNwbGl0dGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybVNwbGl0dGVyJC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0ID0gbmV3IG9sRm9ybWF0R2VvSlNPTigpO1xuXG4gIGdldCBzdG9yZXMoKTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoRHJhdz5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd1N0YXRlLnNlYXJjaExheWVyU3RvcmVzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTdGF0ZTogU2VhcmNoU3RhdGUsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25TdGF0ZTogRGlyZWN0aW9uU3RhdGUsXG4gICAgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGRyYXdTdGF0ZTogRHJhd1N0YXRlXG4gICkge1xuICAgIHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24gPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZyhcbiAgICAgICdoYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbidcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtJCQgPSB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm0kLnN1YnNjcmliZShcbiAgICAgIChzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHNlYXJjaFRlcm0gIT09IHVuZGVmaW5lZCAmJiBzZWFyY2hUZXJtICE9PSBudWxsICYmIHNlYXJjaFRlcm0gIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy50ZXJtID0gc2VhcmNoVGVybTtcbiAgICAgICAgICB0aGlzLmRlYm91bmNlZEVtcHR5JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hUZXJtID09PSAnJykge1xuICAgICAgICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgZm9yIChjb25zdCByZXMgb2YgdGhpcy5zdG9yZS5zdGF0ZVZpZXcuYWxsJCgpLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5zdG9yZS5zdGF0ZS5nZXQocmVzLmVudGl0eSkuc2VsZWN0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2V4cGFuZGVkJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFNldHRpbmdzQ2hhbmdlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZSQubmV4dCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudG9wUGFuZWxTdGF0ZSQkID0gdGhpcy50b3BQYW5lbFN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaWdvTGlzdCA9IHRoaXMuY29tcHV0ZUVsZW1lbnRSZWYoKVswXTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzFdO1xuICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIFRvIGJlIHN1cmUgdGhlIGZsZXhpYmxlIGNvbXBvbmVudCBoYXMgYmVlbiBkaXNwbGF5ZWQgeWV0XG4gICAgICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpZ29MaXN0LCBzZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRqdXN0VG9wUGFuZWwoaWdvTGlzdCwgc2VsZWN0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgRmxleGlibGVDb21wb25lbnQudHJhbnNpdGlvblRpbWUgKyA1MCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5oYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0YXRlLmZvY3VzZWRPclJlc29sdXRpb24kJCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLmZvY3VzZWRPclJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQsXG4gICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcbiAgICAgICAgXSkuc3Vic2NyaWJlKChidW5jaDogW1NlYXJjaFJlc3VsdDxGZWF0dXJlPiwgbnVtYmVyXSkgPT5cbiAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0RW1waGFzaXMoYnVuY2hbMF0sICdmb2N1c2VkJylcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkT3JSZXNvbHV0aW9uJCQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZE9yUmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZFJlc3VsdCQsXG4gICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcbiAgICAgICAgXSkuc3Vic2NyaWJlKChidW5jaDogW1NlYXJjaFJlc3VsdDxGZWF0dXJlPiwgbnVtYmVyXSkgPT5cbiAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0RW1waGFzaXMoYnVuY2hbMF0sICdzZWxlY3RlZCcpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubW9uaXRvclJlc3VsdE91dE9mVmlldygpO1xuXG4gICAgdGhpcy5zaG93UmVzdWx0c0dlb21ldHJpZXMkJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkJCxcbiAgICAgIHRoaXMuc3RvcmUuc3RhdGVWaWV3LmFsbCQoKSxcbiAgICAgIHRoaXMuZm9jdXNlZFJlc3VsdCQsXG4gICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkUmVzdWx0JCxcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybSQsXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJFxuICAgIF0pLnN1YnNjcmliZSgoYnVuY2g6IFtib29sZWFuLCB7IGVudGl0eTogU2VhcmNoUmVzdWx0LCBzdGF0ZTogRW50aXR5U3RhdGUgfVtdLCBTZWFyY2hSZXN1bHQsIFNlYXJjaFJlc3VsdCwgc3RyaW5nLCBudW1iZXJdKSA9PiB7XG5cbiAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQgPSBidW5jaFswXTtcbiAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSBidW5jaFsxXTtcblxuICAgICAgaWYgKHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5jbGVhckZlYXR1cmVFbXBoYXNpcygnc2hvd24nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd25SZXN1bHRzR2VvbWV0cmllcy5tYXAocmVzdWx0ID0+IHRoaXMubWFwLnF1ZXJ5UmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShyZXN1bHQpKTtcbiAgICAgIGNvbnN0IGZlYXR1cmVUb0hhbmRsZUdlb20gPSBzZWFyY2hSZXN1bHRzXG4gICAgICAgIC5maWx0ZXIocmVzdWx0ID0+XG4gICAgICAgICAgcmVzdWx0LmVudGl0eS5tZXRhLmRhdGFUeXBlID09PSBGRUFUVVJFICYmXG4gICAgICAgICAgcmVzdWx0LmVudGl0eS5kYXRhLmdlb21ldHJ5ICYmXG4gICAgICAgICAgIXJlc3VsdC5zdGF0ZS5zZWxlY3RlZCAmJlxuICAgICAgICAgICFyZXN1bHQuc3RhdGUuZm9jdXNlZCk7XG5cbiAgICAgIGZlYXR1cmVUb0hhbmRsZUdlb20ubWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChzZWFyY2hSZXN1bHRzR2VvbWV0cnlFbmFibGVkKSB7XG4gICAgICAgICAgcmVzdWx0LmVudGl0eS5kYXRhLm1ldGEuc3R5bGUgPVxuICAgICAgICAgICAgZ2V0Q29tbW9uVmVjdG9yU3R5bGUoXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgeyBmZWF0dXJlOiByZXN1bHQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSB8IG9sRmVhdHVyZTxPbEdlb21ldHJ5PiB9LFxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlLFxuICAgICAgICAgICAgICAgIHJlc3VsdC5lbnRpdHkuc3R5bGU/LmJhc2UgPyByZXN1bHQuZW50aXR5LnN0eWxlLmJhc2UgOiB7fVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICB0aGlzLnNob3duUmVzdWx0c0dlb21ldHJpZXMucHVzaChyZXN1bHQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSk7XG4gICAgICAgICAgdGhpcy5tYXAucXVlcnlSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKHJlc3VsdC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlLCBGZWF0dXJlTW90aW9uLk5vbmUpO1xuICAgICAgICAgIGlmICh0aGlzLmhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0RW1waGFzaXMocmVzdWx0LmVudGl0eSBhcyBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sICdzaG93bicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRlYm91bmNlZEVtcHR5JCQgPSB0aGlzLnN0b3JlLnN0YXRlVmlldy5lbXB0eSQucGlwZShkZWJvdW5jZVRpbWUoMTUwMCkpLnN1YnNjcmliZShlbXB0eSA9PiB0aGlzLmRlYm91bmNlZEVtcHR5JC5uZXh0KGVtcHR5KSk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JSZXN1bHRPdXRPZlZpZXcoKSB7XG4gICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnN0YXRlJCxcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VsZWN0ZWRSZXN1bHQkXG4gICAgXSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgLnN1YnNjcmliZSgoYnVuY2gpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZXN1bHQgPSBidW5jaFsxXSBhcyBTZWFyY2hSZXN1bHQ8RmVhdHVyZT47XG4gICAgICAgIGlmICghc2VsZWN0ZWRSZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRSZXN1bHQuZGF0YS5nZW9tZXRyeSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT2xGZWF0dXJlID0gZmVhdHVyZVRvT2woXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPbEZlYXR1cmVFeHRlbnQgPSBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCh0aGlzLm1hcCwgW1xuICAgICAgICAgICAgc2VsZWN0ZWRPbEZlYXR1cmVcbiAgICAgICAgICBdKTtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckLm5leHQoXG4gICAgICAgICAgICBmZWF0dXJlc0FyZU91dE9mVmlldyh0aGlzLm1hcCwgc2VsZWN0ZWRPbEZlYXR1cmVFeHRlbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmVzdWx0RW1waGFzaXMoXG4gICAgcmVzdWx0OiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4sXG4gICAgdHJpZ2dlcjogJ3NlbGVjdGVkJyB8ICdmb2N1c2VkJyB8ICdzaG93bicgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgaWYgKHRyaWdnZXIgIT09ICdzaG93bicpIHtcbiAgICAgIHRoaXMuY2xlYXJGZWF0dXJlRW1waGFzaXModHJpZ2dlcik7XG4gICAgfVxuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQuZGF0YS5nZW9tZXRyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBteU9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKHJlc3VsdC5kYXRhLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gbXlPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICBpZiAoZmVhdHVyZXNBcmVUb29EZWVwSW5WaWV3KHRoaXMubWFwLCBvbEdlb21ldHJ5LmdldEV4dGVudCgpIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLCAwLjAwMjUpKSB7XG4gICAgICBjb25zdCBleHRlbnQgPSBvbEdlb21ldHJ5LmdldEV4dGVudCgpO1xuICAgICAgY29uc3QgeCA9IGV4dGVudFswXSArIChleHRlbnRbMl0gLSBleHRlbnRbMF0pIC8gMjtcbiAgICAgIGNvbnN0IHkgPSBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDI7XG4gICAgICBjb25zdCBmZWF0dXJlMSA9IG5ldyBvbEZlYXR1cmUoe1xuICAgICAgICBuYW1lOiBgJHt0cmlnZ2VyfUFic3RyYWN0UmVzdWx0J2AsXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgb2xQb2ludChbeCwgeV0pXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFic3RyYWN0UmVzdWx0ID0gZmVhdHVyZUZyb21PbChmZWF0dXJlMSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG5cbiAgICAgIGxldCBjb21wdXRlZFN0eWxlO1xuICAgICAgbGV0IHpJbmRleE9mZnNldCA9IDA7XG5cbiAgICAgIHN3aXRjaCAodHJpZ2dlcikge1xuICAgICAgICBjYXNlICdmb2N1c2VkJzpcbiAgICAgICAgICBjb21wdXRlZFN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sXG4gICAgICAgICAgICAgIHsgZmVhdHVyZTogYWJzdHJhY3RSZXN1bHQgfSxcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcbiAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5mb2N1cyA/IHJlc3VsdC5zdHlsZS5mb2N1cyA6IHt9KSk7XG4gICAgICAgICAgekluZGV4T2Zmc2V0ID0gMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2hvd24nOlxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTdHlsZShPYmplY3QuYXNzaWduKHt9LFxuICAgICAgICAgICAgeyBmZWF0dXJlOiBhYnN0cmFjdFJlc3VsdCB9LFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGUsXG4gICAgICAgICAgICByZXN1bHQuc3R5bGU/LmJhc2UgPyByZXN1bHQuc3R5bGUuYmFzZSA6IHt9KSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlbGVjdGVkJzpcbiAgICAgICAgICBjb21wdXRlZFN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sXG4gICAgICAgICAgICAgIHsgZmVhdHVyZTogYWJzdHJhY3RSZXN1bHQgfSxcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uc2VsZWN0aW9uID8gcmVzdWx0LnN0eWxlLnNlbGVjdGlvbiA6IHt9KSk7XG4gICAgICAgICAgekluZGV4T2Zmc2V0ID0gMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGFic3RyYWN0UmVzdWx0Lm1ldGEuc3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgICAgYWJzdHJhY3RSZXN1bHQubWV0YS5zdHlsZS5zZXRaSW5kZXgoMjAwMCArIHpJbmRleE9mZnNldCk7XG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKGFic3RyYWN0UmVzdWx0LCBGZWF0dXJlTW90aW9uLk5vbmUpO1xuICAgICAgaWYgKHRyaWdnZXIgPT09ICdmb2N1c2VkJykge1xuICAgICAgICB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCA9IGFic3RyYWN0UmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKHRyaWdnZXIgPT09ICdzZWxlY3RlZCcpIHtcbiAgICAgICAgdGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0ID0gYWJzdHJhY3RSZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ3Nob3duJykge1xuICAgICAgICB0aGlzLnNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllcy5wdXNoKGFic3RyYWN0UmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZlYXR1cmVFbXBoYXNpcyh0cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmVhdHVyZUVtcGhhc2lzKHRyaWdnZXI6ICdzZWxlY3RlZCcgfCAnZm9jdXNlZCcgfCAnc2hvd24nKSB7XG4gICAgaWYgKHRyaWdnZXIgPT09ICdmb2N1c2VkJyAmJiB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCkge1xuICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZSh0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCk7XG4gICAgICB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRyaWdnZXIgPT09ICdzZWxlY3RlZCcgJiYgdGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0KSB7XG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHRoaXMuYWJzdHJhY3RTZWxlY3RlZFJlc3VsdCk7XG4gICAgICB0aGlzLmFic3RyYWN0U2VsZWN0ZWRSZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0cmlnZ2VyID09PSAnc2hvd24nKSB7XG4gICAgICB0aGlzLnNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllcy5tYXAoc2hvd25SZXN1bHQgPT4gdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShzaG93blJlc3VsdCkpO1xuICAgICAgdGhpcy5zaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRvcFBhbmVsU3RhdGUkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoVGVybSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQkKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93UmVzdWx0c0dlb21ldHJpZXMkJCkge1xuICAgICAgdGhpcy5zaG93UmVzdWx0c0dlb21ldHJpZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5nZXRSb3V0ZSQkKSB7XG4gICAgICB0aGlzLmdldFJvdXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVib3VuY2VkRW1wdHkkJCkge1xuICAgICAgdGhpcy5kZWJvdW5jZWRFbXB0eSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgd2hlbiBpdCdzIGJlaW5nIGZvY3VzZWRcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSByZXN1bHQgQSBzZWFyY2ggcmVzdWx0IHRoYXQgY291bGQgYmUgYSBmZWF0dXJlXG4gICAqL1xuICBvblJlc3VsdEZvY3VzKHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy5mb2N1c2VkUmVzdWx0JC5uZXh0KHJlc3VsdCk7XG4gICAgaWYgKHJlc3VsdC5tZXRhLmRhdGFUeXBlID09PSBGRUFUVVJFICYmIHJlc3VsdC5kYXRhLmdlb21ldHJ5KSB7XG4gICAgICByZXN1bHQuZGF0YS5tZXRhLnN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSxcbiAgICAgICAgICB7IGZlYXR1cmU6IHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT4gfSxcbiAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzLFxuICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fSkpO1xuXG4gICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZChyZXN1bHQubWV0YS5pZCk7XG4gICAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgICBmZWF0dXJlLnNldFN0eWxlKHJlc3VsdC5kYXRhLm1ldGEuc3R5bGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUsIEZlYXR1cmVNb3Rpb24uTm9uZSk7XG4gICAgfVxuICB9XG5cbiAgb25SZXN1bHRVbmZvY3VzKHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy5mb2N1c2VkUmVzdWx0JC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgaWYgKHJlc3VsdC5tZXRhLmRhdGFUeXBlICE9PSBGRUFUVVJFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkuc2VsZWN0ZWQgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5kYXRhU291cmNlLm9sLmdldEZlYXR1cmVCeUlkKHJlc3VsdC5tZXRhLmlkKTtcbiAgICAgIGlmIChmZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgICAgICAgeyBmZWF0dXJlOiByZXN1bHQuZGF0YSBhcyBGZWF0dXJlIHwgb2xGZWF0dXJlPE9sR2VvbWV0cnk+IH0sXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzLFxuICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5mb2N1cyA/IHJlc3VsdC5zdHlsZS5mb2N1cyA6IHt9KSk7XG4gICAgICAgIGZlYXR1cmUuc2V0U3R5bGUoc3R5bGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgd2hlbiBpdCdzIGJlaW5nIHNlbGVjdGVkXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZSBvciBzb21lIGxheWVyIG9wdGlvbnNcbiAgICovXG4gIG9uUmVzdWx0U2VsZWN0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuZGF0YVNvdXJjZS5vbC5jbGVhcigpO1xuICAgIHRoaXMudHJ5QWRkRmVhdHVyZVRvTWFwKHJlc3VsdCk7XG4gICAgdGhpcy5zZWFyY2hTdGF0ZS5zZXRTZWxlY3RlZFJlc3VsdChyZXN1bHQpO1xuXG4gICAgaWYgKHRoaXMudG9wUGFuZWxTdGF0ZSA9PT0gJ2luaXRpYWwnKSB7XG4gICAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlRGVmYXVsdCAhPT0gJ2NvbGxhcHNlZCcpIHtcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2V4cGFuZGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdjb2xsYXBzZWQnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRvcFBhbmVsU3RhdGUgPT09ICdleHBhbmRlZCcpIHtcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmNvbXB1dGVFbGVtZW50UmVmKClbMF07XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY29tcHV0ZUVsZW1lbnRSZWYoKVsxXTtcbiAgICAgIGlmICghdGhpcy5pc1Njcm9sbGVkSW50b1ZpZXcoaWdvTGlzdCwgc2VsZWN0ZWQpKSB7XG4gICAgICAgIHRoaXMuYWRqdXN0VG9wUGFuZWwoaWdvTGlzdCwgc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGV2ZW50OiB7IHJlc2VhcmNoOiBSZXNlYXJjaDsgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gfSkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBldmVudC5yZXN1bHRzO1xuICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSB0aGlzLnN0b3JlLmVudGl0aWVzJC52YWx1ZVxuICAgICAgLmZpbHRlcigocmVzdWx0OiBTZWFyY2hSZXN1bHQpID0+IHJlc3VsdC5zb3VyY2UgIT09IGV2ZW50LnJlc2VhcmNoLnNvdXJjZSlcbiAgICAgIC5jb25jYXQocmVzdWx0cyk7XG5cbiAgICB0aGlzLnN0b3JlLmxvYWQobmV3UmVzdWx0cyk7XG5cbiAgICBmb3IgKGNvbnN0IHJlcyBvZiB0aGlzLnN0b3JlLmFsbCgpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcykuZm9jdXNlZCA9PT0gdHJ1ZSAmJlxuICAgICAgICB0aGlzLnN0b3JlLnN0YXRlLmdldChyZXMpLnNlbGVjdGVkICE9PSB0cnVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUocmVzLCB7IGZvY3VzZWQ6IGZhbHNlIH0sIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaWdvTGlzdCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpZ28tbGlzdCcpO1xuICAgICAgbGV0IG1vcmVSZXN1bHRzO1xuICAgICAgZXZlbnQucmVzZWFyY2gucmVxdWVzdC5zdWJzY3JpYmUoKHNvdXJjZSkgPT4ge1xuICAgICAgICBpZiAoIXNvdXJjZVswXSB8fCAhc291cmNlWzBdLnNvdXJjZSkge1xuICAgICAgICAgIG1vcmVSZXN1bHRzID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VbMF0uc291cmNlLmdldElkKCkgPT09ICdpY2hlcmNoZScpIHtcbiAgICAgICAgICBtb3JlUmVzdWx0cyA9IGlnb0xpc3QucXVlcnlTZWxlY3RvcignLmljaGVyY2hlIC5tb3JlUmVzdWx0cycpO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ2lsYXllcicpIHtcbiAgICAgICAgICBtb3JlUmVzdWx0cyA9IGlnb0xpc3QucXVlcnlTZWxlY3RvcignLmlsYXllciAubW9yZVJlc3VsdHMnKTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VbMF0uc291cmNlLmdldElkKCkgPT09ICdub21pbmF0aW0nKSB7XG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy5ub21pbmF0aW0gLm1vcmVSZXN1bHRzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy4nICsgc291cmNlWzBdLnNvdXJjZS5nZXRJZCgpICsgJyAubW9yZVJlc3VsdHMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBtb3JlUmVzdWx0cyAhPT0gbnVsbCAmJlxuICAgICAgICAgICF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpZ29MaXN0LCBtb3JlUmVzdWx0cylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWdvTGlzdC5zY3JvbGxUb3AgPVxuICAgICAgICAgICAgbW9yZVJlc3VsdHMub2Zmc2V0VG9wICtcbiAgICAgICAgICAgIG1vcmVSZXN1bHRzLm9mZnNldEhlaWdodCAtXG4gICAgICAgICAgICBpZ29MaXN0LmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIGNvbXB1dGVFbGVtZW50UmVmKCkge1xuICAgIGNvbnN0IGl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lnby1zZWFyY2gtcmVzdWx0cy1pdGVtJyk7XG4gICAgY29uc3QgaWdvTGlzdCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcbiAgICAgICdpZ28tbGlzdCdcbiAgICApWzBdO1xuICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGl0ZW1zW2ldLmNsYXNzTmFtZS5pbmNsdWRlcygnaWdvLWxpc3QtaXRlbS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2lnb0xpc3QsIHNlbGVjdGVkSXRlbV07XG4gIH1cblxuICBhZGp1c3RUb3BQYW5lbChlbGVtU291cmNlLCBlbGVtKSB7XG4gICAgaWYgKCF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtU291cmNlLCBlbGVtKSkge1xuICAgICAgZWxlbVNvdXJjZS5zY3JvbGxUb3AgPVxuICAgICAgICBlbGVtLm9mZnNldFRvcCArXG4gICAgICAgIGVsZW0uY2hpbGRyZW5bMF0ub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgZWxlbVNvdXJjZS5jbGllbnRIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlVG9wUGFuZWwoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYoZXZlbnQgJiYgKChldmVudC50YXJnZXQgYXMgYW55KT8uY2xhc3NOYW1lICE9PSAnaWdvLXBhbmVsLXRpdGxlJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudG9wUGFuZWxTdGF0ZSA9PT0gJ2V4cGFuZGVkJykge1xuICAgICAgICB0aGlzLnRvcFBhbmVsU3RhdGUgPSAnY29sbGFwc2VkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdleHBhbmRlZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgem9vbVRvRmVhdHVyZUV4dGVudCgpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlLmdlb21ldHJ5KSB7XG4gICAgICBjb25zdCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKHRoaXMuZmVhdHVyZSwge1xuICAgICAgICBkYXRhUHJvamVjdGlvbjogdGhpcy5mZWF0dXJlLnByb2plY3Rpb24sXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICB9KTtcbiAgICAgIG1vdmVUb09sRmVhdHVyZXModGhpcy5tYXAsIFtsb2NhbE9sRmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uWm9vbSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgb3ZlcmxheVxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZVxuICAgKi9cbiAgcHJpdmF0ZSB0cnlBZGRGZWF0dXJlVG9NYXAocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0Lm1ldGEuZGF0YVR5cGUgIT09IEZFQVRVUkUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmUgPSAocmVzdWx0IGFzIFNlYXJjaFJlc3VsdDxGZWF0dXJlPikuZGF0YTtcblxuICAgIC8vIFNvbWV0aGltZXMgZmVhdHVyZXMgaGF2ZSBubyBnZW9tZXRyeS4gSXQgaGFwcGVucyB3aXRoIHNvbWUgR2V0RmVhdHVyZUluZm9cbiAgICBpZiAoIWZlYXR1cmUuZ2VvbWV0cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmZWF0dXJlLm1ldGEuc3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSxcbiAgICAgICAgeyBmZWF0dXJlIH0sXG4gICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlU2VsZWN0aW9uLFxuICAgICAgICByZXN1bHQuc3R5bGU/LnNlbGVjdGlvbiA/IHJlc3VsdC5zdHlsZS5zZWxlY3Rpb24gOiB7fSkpO1xuXG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkuYWRkRmVhdHVyZShmZWF0dXJlKTtcbiAgfVxuXG4gIGlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtU291cmNlLCBlbGVtKSB7XG4gICAgY29uc3QgcGFkZGluZyA9IDY7XG4gICAgY29uc3QgZG9jVmlld1RvcCA9IGVsZW1Tb3VyY2Uuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IGRvY1ZpZXdCb3R0b20gPSBkb2NWaWV3VG9wICsgZWxlbVNvdXJjZS5jbGllbnRIZWlnaHQ7XG5cbiAgICBjb25zdCBlbGVtVG9wID0gZWxlbS5vZmZzZXRUb3A7XG4gICAgY29uc3QgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLmNsaWVudEhlaWdodCArIHBhZGRpbmc7XG4gICAgcmV0dXJuIGVsZW1Cb3R0b20gPD0gZG9jVmlld0JvdHRvbSAmJiBlbGVtVG9wID49IGRvY1ZpZXdUb3A7XG4gIH1cblxuICBnZXRSb3V0ZSgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnZGlyZWN0aW9ucycpO1xuICAgIHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS5jbGVhclN0b3BzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsZXQgcm91dGluZ0Nvb3JkTG9hZGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5nZXRSb3V0ZSQkKSB7IHRoaXMuZ2V0Um91dGUkJC51bnN1YnNjcmliZSgpOyB9XG4gICAgICB0aGlzLmdldFJvdXRlJCQgPSB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQuc3Vic2NyaWJlKChpbml0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQudmFsdWUgJiYgIXJvdXRpbmdDb29yZExvYWRlZCkge1xuICAgICAgICAgIHJvdXRpbmdDb29yZExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc3RvcCA9IHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS5hbGwoKS5maW5kKChlKSA9PiBlLnBvc2l0aW9uID09PSAxKTtcbiAgICAgICAgICBsZXQgY29vcmQ7XG4gICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZS5nZW9tZXRyeSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgICAgICAgIGNvb3JkID0gW3RoaXMuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgdGhpcy5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gcG9pbnRPbkZlYXR1cmUodGhpcy5mZWF0dXJlLmdlb21ldHJ5KTtcbiAgICAgICAgICAgICAgY29vcmQgPSBbcG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcC50ZXh0ID0gdGhpcy5mZWF0dXJlVGl0bGU7XG4gICAgICAgICAgc3RvcC5jb29yZGluYXRlcyA9IGNvb3JkO1xuICAgICAgICAgIHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS51cGRhdGUoc3RvcCk7XG4gICAgICAgICAgaWYgKHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kLnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc3RvcCA9IHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZS5hbGwoKS5maW5kKChlKSA9PiBlLnBvc2l0aW9uID09PSAwKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oY3VycmVudFBvcy5wb3NpdGlvbiwgY3VycmVudFBvcy5wcm9qZWN0aW9uLCAnRVBTRzo0MzI2Jyk7XG4gICAgICAgICAgICBjb25zdCBjb29yZDogW251bWJlcixudW1iZXJdID0gcm91bmRDb29yZFRvKFtjdXJyZW50Q29vcmRbMF0sIGN1cnJlbnRDb29yZFsxXV0sIDYpO1xuICAgICAgICAgICAgc3RvcC50ZXh0ID0gY29vcmQuam9pbignLCcpO1xuICAgICAgICAgICAgc3RvcC5jb29yZGluYXRlcyA9IGNvb3JkO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLnVwZGF0ZShzdG9wKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMjUwKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIighc3RvcmUgfHwgc3RvcmUuc3RhdGVWaWV3LmVtcHR5KSAmJiAoZGVib3VuY2VkRW1wdHkkIHwgYXN5bmMpXCIgc3R5bGU9XCJtYXJnaW46IDEwcHg7XCI+XG4gIDxzZWN0aW9uIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8aDQ+PHN0cm9uZz57eyAnaWdvLmludGVncmF0aW9uLnNlYXJjaFJlc3VsdHNUb29sLm5vUmVzdWx0cycgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz48L2g0PlxuICAgIDxwPjxzdHJvbmc+e3sgJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5kb1NlYXJjaCcgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz48L3A+XG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cIidpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuZXhhbXBsZXMnIHwgdHJhbnNsYXRlIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+XG48L3NlY3Rpb24+XG48L2Rpdj5cblxuPGlnby1mbGV4aWJsZVxuICAqbmdJZj1cIihkZWJvdW5jZWRFbXB0eSQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgI3RvcFBhbmVsXG4gIGluaXRpYWw9XCIxMDAlXCJcbiAgaW5pdGlhbE1vYmlsZT1cIjEwMCVcIlxuICBjb2xsYXBzZWQ9XCJjYWxjKDEwMCUgLSA1OHB4KVwiXG4gIGNvbGxhcHNlZE1vYmlsZT1cImNhbGMoMTAwJSAtIDU4cHgpXCJcbiAgZXhwYW5kZWQ9XCI2MCVcIlxuICBleHBhbmRlZE1vYmlsZT1cIjYwJVwiXG4gIFtzdGF0ZV09XCIoZmVhdHVyZSQgfMKgYXN5bmMpID8gdG9wUGFuZWxTdGF0ZSA6ICdpbml0aWFsJ1wiPlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28tY29udGVudFwiPlxuICAgIDxpZ28tc2VhcmNoLXJlc3VsdHNcbiAgICAgIFtzdG9yZV09XCJzdG9yZVwiXG4gICAgICBbc2hvd0ljb25zXT1cInNob3dJY29uc1wiXG4gICAgICBbdGVybV09XCJ0ZXJtXCJcbiAgICAgIFt0ZXJtU3BsaXR0ZXJdPVwidGVybVNwbGl0dGVyXCJcbiAgICAgIFtzZXR0aW5nc0NoYW5nZSRdPVwic2V0dGluZ3NDaGFuZ2UkXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZmFsc2VcIlxuICAgICAgKHJlc3VsdEZvY3VzKT1cIm9uUmVzdWx0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAocmVzdWx0U2VsZWN0KT1cIm9uUmVzdWx0U2VsZWN0KCRldmVudClcIlxuICAgICAgKHJlc3VsdFVuZm9jdXMpPVwib25SZXN1bHRVbmZvY3VzKCRldmVudClcIlxuICAgICAgKHJlc3VsdE1vdXNlZW50ZXIpPVwib25SZXN1bHRGb2N1cygkZXZlbnQpXCJcbiAgICAgIChyZXN1bHRNb3VzZWxlYXZlKT1cIm9uUmVzdWx0VW5mb2N1cygkZXZlbnQpXCJcbiAgICAgIChtb3JlUmVzdWx0cyk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgIFttYXBdPVwibWFwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2lnb1NlYXJjaEl0ZW1Ub29sYmFyIGxldC1yZXN1bHQ9XCJyZXN1bHRcIj5cbiAgICAgICAgPGlnby1zZWFyY2gtYWRkLWJ1dHRvblxuICAgICAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgICAgICBbc3RvcmVdPVwic3RvcmVcIlxuICAgICAgICAgIFtzdG9yZXNdPVwic3RvcmVzXCJcbiAgICAgICAgICBbbGF5ZXJdPVwicmVzdWx0XCI+XG4gICAgICAgIDwvaWdvLXNlYXJjaC1hZGQtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lnby1zZWFyY2gtcmVzdWx0cz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZ29GbGV4aWJsZUZpbGwgY2xhc3M9XCJpZ28tY29udGVudFwiPlxuICAgIDxpZ28tcGFuZWwgW3RpdGxlXT1cImZlYXR1cmVUaXRsZVwiICpuZ0lmPVwiZmVhdHVyZSQgfMKgYXN5bmNcIiAoY2xpY2spPVwidG9nZ2xlVG9wUGFuZWwoJGV2ZW50KVwiIFtjdXJzb3JQb2ludGVyXT1cInRydWVcIj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgcGFuZWxMZWZ0QnV0dG9uXG4gICAgICAgIGNsYXNzPVwiaWdvLWljb24tYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRvcFBhbmVsKClcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIih0b3BQYW5lbFN0YXRlJCB8IGFzeW5jKSA9PT0gJ2NvbGxhcHNlZCcgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWRvd24nXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZmVhdHVyZS5nZW9tZXRyeVwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBwYW5lbFJpZ2h0QnV0dG9uXG4gICAgICAgIGNsYXNzPVwiaWdvLWljb24tYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiKChpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKSA/ICdpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuem9vbU9uRmVhdHVyZVRvb2x0aXBPdXRPZlZpZXcnIDogJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC56b29tT25GZWF0dXJlVG9vbHRpcCcpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIChjbGljayk9XCJ6b29tVG9GZWF0dXJlRXh0ZW50KClcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgIFttYXRCYWRnZV09XCIoaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQgfCBhc3luYykgPyAnIScgOiAnJ1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQgfCBhc3luYyk9PT1mYWxzZVwiICAgICBcbiAgICAgICAgc3ZnSWNvbj1cIm1hZ25pZnktcGx1cy1vdXRsaW5lXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aWdvLWZlYXR1cmUtZGV0YWlsc1xuICAgICAgICBpZ29GZWF0dXJlRGV0YWlsc0RpcmVjdGl2ZVxuICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlJCB8IGFzeW5jXCJcbiAgICAgICAgW21hcF09XCJtYXBcIlxuICAgICAgICBbdG9vbGJveF09XCJ0b29sU3RhdGUudG9vbGJveFwiXG4gICAgICAgIChyb3V0aW5nRXZlbnQpPVwiZ2V0Um91dGUoKVwiPlxuICAgICAgPC9pZ28tZmVhdHVyZS1kZXRhaWxzPlxuICAgIDwvaWdvLXBhbmVsPlxuICA8L2Rpdj5cblxuPC9pZ28tZmxleGlibGU+XG4iXX0=
|
|
593
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy10b29sL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMtdG9vbC9zZWFyY2gtcmVzdWx0cy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUdwQyxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBRUwsYUFBYSxFQUViLGNBQWMsRUFDZCxpQkFBaUIsRUFFbEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLE9BQU8sRUFFUCxhQUFhLEVBR2IsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsYUFBYSxFQUNiLG9CQUFvQixFQUNwQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixZQUFZLEVBRWIsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUM3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LENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25GLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDN0M7aUJBRUY7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRixDQUFBO29HQXJqQlksMEJBQTBCOzZFQUExQiwwQkFBMEI7UUNsRXZDLDZFQU1NOztRQUVOLCtGQTJFZTs7O1FBbkZULDZHQUFvRTtRQVN2RSxlQUF5QztRQUF6QywwRUFBeUM7O0FEeUQvQiwwQkFBMEI7SUFWdEMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHFDQUFxQztRQUM1QyxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDO0dBTVcsMEJBQTBCLENBcWpCdEM7U0FyakJZLDBCQUEwQjt1RkFBMUIsMEJBQTBCO2NBTHRDLFNBQVM7MkJBQ0UseUJBQXlCLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNOytMQU10QyxTQUFTO2tCQUFqQixLQUFLO1lBS0csb0JBQW9CO2tCQUE1QixLQUFLO1lBZ0VGLGFBQWE7a0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBvbEZvcm1hdEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xyXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgb2xQb2ludCBmcm9tICdvbC9nZW9tL1BvaW50JztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuXHJcbmltcG9ydCBwb2ludE9uRmVhdHVyZSBmcm9tICdAdHVyZi9wb2ludC1vbi1mZWF0dXJlJztcclxuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEVudGl0eVN0b3JlLFxyXG4gIFRvb2xDb21wb25lbnQsXHJcbiAgRmxleGlibGVTdGF0ZSxcclxuICBnZXRFbnRpdHlUaXRsZSxcclxuICBGbGV4aWJsZUNvbXBvbmVudCxcclxuICBFbnRpdHlTdGF0ZVxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZFQVRVUkUsXHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBJZ29NYXAsXHJcbiAgbW92ZVRvT2xGZWF0dXJlcyxcclxuICBSZXNlYXJjaCxcclxuICBmZWF0dXJlc0FyZVRvb0RlZXBJblZpZXcsXHJcbiAgZmVhdHVyZVRvT2wsXHJcbiAgZmVhdHVyZUZyb21PbCxcclxuICBnZXRDb21tb25WZWN0b3JTdHlsZSxcclxuICBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlLFxyXG4gIGNvbXB1dGVPbEZlYXR1cmVzRXh0ZW50LFxyXG4gIGZlYXR1cmVzQXJlT3V0T2ZWaWV3LFxyXG4gIHJvdW5kQ29vcmRUbyxcclxuICBGZWF0dXJlU3RvcmVcclxufSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuXHJcbmltcG9ydCB7IFNlYXJjaFN0YXRlIH0gZnJvbSAnLi4vc2VhcmNoLnN0YXRlJztcclxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uU3RhdGUgfSBmcm9tICcuLi8uLi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2wgdG8gYnJvd3NlIHRoZSBzZWFyY2ggcmVzdWx0c1xyXG4gKi9cclxuQFRvb2xDb21wb25lbnQoe1xyXG4gIG5hbWU6ICdzZWFyY2hSZXN1bHRzJyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5zZWFyY2hSZXN1bHRzJyxcclxuICBpY29uOiAnbWFnbmlmeSdcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiB0byBzaG93IGhpZGUgcmVzdWx0cyBpY29uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dJY29uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZSB0aGUgdG9wIHBhbmVsIGRlZmF1bHQgc3RhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0b3BQYW5lbFN0YXRlRGVmYXVsdDogc3RyaW5nID0gJ2V4cGFuZGVkJztcclxuXHJcbiAgcHJpdmF0ZSBoYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzYXZlU2VhcmNoUmVzdWx0SW5MYXllcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNob3dSZXN1bHRzR2VvbWV0cmllcyQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzaG93blJlc3VsdHNHZW9tZXRyaWVzOiBGZWF0dXJlW10gPSBbXTtcclxuICBwcml2YXRlIHNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllczogRmVhdHVyZVtdID0gW107XHJcbiAgcHJpdmF0ZSBmb2N1c2VkUmVzdWx0JDogQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFJlc3VsdD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuICBwdWJsaWMgaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBwcml2YXRlIGlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgYWJzdHJhY3RGb2N1c2VkUmVzdWx0OiBGZWF0dXJlO1xyXG4gIHByaXZhdGUgYWJzdHJhY3RTZWxlY3RlZFJlc3VsdDogRmVhdHVyZTtcclxuXHJcbiAgcHVibGljIGRlYm91bmNlZEVtcHR5JCA6QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcclxuICBwcml2YXRlIGRlYm91bmNlZEVtcHR5JCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcmUgaG9sZGluZyB0aGUgc2VhcmNoIHJlc3VsdHNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgc3RvcmUoKTogRW50aXR5U3RvcmU8U2VhcmNoUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCB0byBkaXNwbGF5IHRoZSByZXN1bHRzIG9uXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZlYXR1cmVUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZSA/IGdldEVudGl0eVRpdGxlKHRoaXMuZmVhdHVyZSkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZmVhdHVyZSQoKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZVZpZXdcclxuICAgICAgLmZpcnN0QnkkKChlKSA9PiBlLnN0YXRlLmZvY3VzZWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChcclxuICAgICAgICAgIChlbGVtZW50KSA9PlxyXG4gICAgICAgICAgKHRoaXMuZmVhdHVyZSA9IGVsZW1lbnRcclxuICAgICAgICAgICAgPyAoZWxlbWVudC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlKVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmVhdHVyZTogRmVhdHVyZTtcclxuXHJcbiAgcHVibGljIHRlcm0gPSAnJztcclxuICBwcml2YXRlIHNlYXJjaFRlcm0kJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwdWJsaWMgc2V0dGluZ3NDaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xyXG5cclxuICBwdWJsaWMgdG9wUGFuZWxTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZsZXhpYmxlU3RhdGU+KCdpbml0aWFsJyk7XHJcbiAgcHJpdmF0ZSB0b3BQYW5lbFN0YXRlJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdG9wUGFuZWxTdGF0ZSh2YWx1ZTogRmxleGlibGVTdGF0ZSkge1xyXG4gICAgdGhpcy50b3BQYW5lbFN0YXRlJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IHRvcFBhbmVsU3RhdGUoKTogRmxleGlibGVTdGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy50b3BQYW5lbFN0YXRlJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0ZXJtU3BsaXR0ZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm1TcGxpdHRlciQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdCA9IG5ldyBvbEZvcm1hdEdlb0pTT04oKTtcclxuXHJcbiAgZ2V0IHN0b3JlcygpOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hMYXllclN0b3JlcztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHNlYXJjaFN0YXRlOiBTZWFyY2hTdGF0ZSxcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgdG9vbFN0YXRlOiBUb29sU3RhdGUsXHJcbiAgICBwcml2YXRlIGRpcmVjdGlvblN0YXRlOiBEaXJlY3Rpb25TdGF0ZSxcclxuICAgIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaGFzRmVhdHVyZUVtcGhhc2lzT25TZWxlY3Rpb24gPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZyhcclxuICAgICAgJ2hhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXIgPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZyhcclxuICAgICAgJ3NhdmVTZWFyY2hSZXN1bHRJbkxheWVyJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtJCQgPSB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaFRlcm0kLnN1YnNjcmliZShcclxuICAgICAgKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChzZWFyY2hUZXJtICE9PSB1bmRlZmluZWQgJiYgc2VhcmNoVGVybSAhPT0gbnVsbCAmJiBzZWFyY2hUZXJtICE9PSAnJykge1xyXG4gICAgICAgICAgdGhpcy50ZXJtID0gc2VhcmNoVGVybTtcclxuICAgICAgICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoVGVybSA9PT0gJycpIHtcclxuICAgICAgICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmVzIG9mIHRoaXMuc3RvcmUuc3RhdGVWaWV3LmFsbCQoKS52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5zdG9yZS5zdGF0ZS5nZXQocmVzLmVudGl0eSkuc2VsZWN0ZWQgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvcFBhbmVsU3RhdGUgPSAnZXhwYW5kZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hTZXR0aW5nc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZSQubmV4dCh0cnVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudG9wUGFuZWxTdGF0ZSQkID0gdGhpcy50b3BQYW5lbFN0YXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBpZ29MaXN0ID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzBdO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY29tcHV0ZUVsZW1lbnRSZWYoKVsxXTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAvLyBUbyBiZSBzdXJlIHRoZSBmbGV4aWJsZSBjb21wb25lbnQgaGFzIGJlZW4gZGlzcGxheWVkIHlldFxyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsZWRJbnRvVmlldyhpZ29MaXN0LCBzZWxlY3RlZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGp1c3RUb3BQYW5lbChpZ29MaXN0LCBzZWxlY3RlZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgRmxleGlibGVDb21wb25lbnQudHJhbnNpdGlvblRpbWUgKyA1MCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWFyY2hTdGF0ZS5mb2N1c2VkT3JSZXNvbHV0aW9uJCQpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLmZvY3VzZWRPclJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICAgICAgdGhpcy5mb2N1c2VkUmVzdWx0JCxcclxuICAgICAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXHJcbiAgICAgICAgXSkuc3Vic2NyaWJlKChidW5jaDogW1NlYXJjaFJlc3VsdDxGZWF0dXJlPiwgbnVtYmVyXSkgPT5cclxuICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRFbXBoYXNpcyhidW5jaFswXSwgJ2ZvY3VzZWQnKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZE9yUmVzb2x1dGlvbiQkKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZE9yUmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlbGVjdGVkUmVzdWx0JCxcclxuICAgICAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXHJcbiAgICAgICAgXSkuc3Vic2NyaWJlKChidW5jaDogW1NlYXJjaFJlc3VsdDxGZWF0dXJlPiwgbnVtYmVyXSkgPT5cclxuICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRFbXBoYXNpcyhidW5jaFswXSwgJ3NlbGVjdGVkJylcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vbml0b3JSZXN1bHRPdXRPZlZpZXcoKTtcclxuXHJcbiAgICB0aGlzLnNob3dSZXN1bHRzR2VvbWV0cmllcyQkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCQsXHJcbiAgICAgIHRoaXMuc3RvcmUuc3RhdGVWaWV3LmFsbCQoKSxcclxuICAgICAgdGhpcy5mb2N1c2VkUmVzdWx0JCxcclxuICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZFJlc3VsdCQsXHJcbiAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybSQsXHJcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXHJcbiAgICBdKS5zdWJzY3JpYmUoKGJ1bmNoOiBbYm9vbGVhbiwgeyBlbnRpdHk6IFNlYXJjaFJlc3VsdCwgc3RhdGU6IEVudGl0eVN0YXRlIH1bXSwgU2VhcmNoUmVzdWx0LCBTZWFyY2hSZXN1bHQsIHN0cmluZywgbnVtYmVyXSkgPT4ge1xyXG5cclxuICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0c0dlb21ldHJ5RW5hYmxlZCA9IGJ1bmNoWzBdO1xyXG4gICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gYnVuY2hbMV07XHJcblxyXG4gICAgICBpZiAodGhpcy5oYXNGZWF0dXJlRW1waGFzaXNPblNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuY2xlYXJGZWF0dXJlRW1waGFzaXMoJ3Nob3duJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93blJlc3VsdHNHZW9tZXRyaWVzLm1hcChyZXN1bHQgPT4gdGhpcy5tYXAucXVlcnlSZXN1bHRzT3ZlcmxheS5yZW1vdmVGZWF0dXJlKHJlc3VsdCkpO1xyXG4gICAgICBjb25zdCBmZWF0dXJlVG9IYW5kbGVHZW9tID0gc2VhcmNoUmVzdWx0c1xyXG4gICAgICAgIC5maWx0ZXIocmVzdWx0ID0+XHJcbiAgICAgICAgICByZXN1bHQuZW50aXR5Lm1ldGEuZGF0YVR5cGUgPT09IEZFQVRVUkUgJiZcclxuICAgICAgICAgIHJlc3VsdC5lbnRpdHkuZGF0YS5nZW9tZXRyeSAmJlxyXG4gICAgICAgICAgIXJlc3VsdC5zdGF0ZS5zZWxlY3RlZCAmJlxyXG4gICAgICAgICAgIXJlc3VsdC5zdGF0ZS5mb2N1c2VkKTtcclxuXHJcbiAgICAgIGZlYXR1cmVUb0hhbmRsZUdlb20ubWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHNlYXJjaFJlc3VsdHNHZW9tZXRyeUVuYWJsZWQpIHtcclxuICAgICAgICAgIHJlc3VsdC5lbnRpdHkuZGF0YS5tZXRhLnN0eWxlID1cclxuICAgICAgICAgICAgZ2V0Q29tbW9uVmVjdG9yU3R5bGUoXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgeyBmZWF0dXJlOiByZXN1bHQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSB8IG9sRmVhdHVyZTxPbEdlb21ldHJ5PiB9LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGUsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQuZW50aXR5LnN0eWxlPy5iYXNlID8gcmVzdWx0LmVudGl0eS5zdHlsZS5iYXNlIDoge31cclxuICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgIHRoaXMuc2hvd25SZXN1bHRzR2VvbWV0cmllcy5wdXNoKHJlc3VsdC5lbnRpdHkuZGF0YSBhcyBGZWF0dXJlKTtcclxuICAgICAgICAgIHRoaXMubWFwLnF1ZXJ5UmVzdWx0c092ZXJsYXkuYWRkRmVhdHVyZShyZXN1bHQuZW50aXR5LmRhdGEgYXMgRmVhdHVyZSwgRmVhdHVyZU1vdGlvbi5Ob25lKTtcclxuICAgICAgICAgIGlmICh0aGlzLmhhc0ZlYXR1cmVFbXBoYXNpc09uU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRFbXBoYXNpcyhyZXN1bHQuZW50aXR5IGFzIFNlYXJjaFJlc3VsdDxGZWF0dXJlPiwgJ3Nob3duJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkJCA9IHRoaXMuc3RvcmUuc3RhdGVWaWV3LmVtcHR5JC5waXBlKGRlYm91bmNlVGltZSgxNTAwKSkuc3Vic2NyaWJlKGVtcHR5ID0+IHRoaXMuZGVib3VuY2VkRW1wdHkkLm5leHQoZW1wdHkpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9uaXRvclJlc3VsdE91dE9mVmlldygpIHtcclxuICAgIHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnN0YXRlJCxcclxuICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWxlY3RlZFJlc3VsdCRcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChidW5jaCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUmVzdWx0ID0gYnVuY2hbMV0gYXMgU2VhcmNoUmVzdWx0PEZlYXR1cmU+O1xyXG4gICAgICAgIGlmICghc2VsZWN0ZWRSZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFJlc3VsdE91dE9mVmlldyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RlZFJlc3VsdC5kYXRhLmdlb21ldHJ5KSB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKFxyXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3VsdC5kYXRhLFxyXG4gICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPbEZlYXR1cmVFeHRlbnQgPSBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCh0aGlzLm1hcCwgW1xyXG4gICAgICAgICAgICBzZWxlY3RlZE9sRmVhdHVyZVxyXG4gICAgICAgICAgXSk7XHJcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRSZXN1bHRPdXRPZlZpZXckLm5leHQoXHJcbiAgICAgICAgICAgIGZlYXR1cmVzQXJlT3V0T2ZWaWV3KHRoaXMubWFwLCBzZWxlY3RlZE9sRmVhdHVyZUV4dGVudClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRSZXN1bHRFbXBoYXNpcyhcclxuICAgIHJlc3VsdDogU2VhcmNoUmVzdWx0PEZlYXR1cmU+LFxyXG4gICAgdHJpZ2dlcjogJ3NlbGVjdGVkJyB8ICdmb2N1c2VkJyB8ICdzaG93bicgfCB1bmRlZmluZWRcclxuICApIHtcclxuICAgIGlmICh0cmlnZ2VyICE9PSAnc2hvd24nKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJGZWF0dXJlRW1waGFzaXModHJpZ2dlcik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LmRhdGEuZ2VvbWV0cnkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXlPbEZlYXR1cmUgPSBmZWF0dXJlVG9PbChyZXN1bHQuZGF0YSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gbXlPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcclxuICAgIGlmIChmZWF0dXJlc0FyZVRvb0RlZXBJblZpZXcodGhpcy5tYXAsIG9sR2VvbWV0cnkuZ2V0RXh0ZW50KCkgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIDAuMDAyNSkpIHtcclxuICAgICAgY29uc3QgZXh0ZW50ID0gb2xHZW9tZXRyeS5nZXRFeHRlbnQoKTtcclxuICAgICAgY29uc3QgeCA9IGV4dGVudFswXSArIChleHRlbnRbMl0gLSBleHRlbnRbMF0pIC8gMjtcclxuICAgICAgY29uc3QgeSA9IGV4dGVudFsxXSArIChleHRlbnRbM10gLSBleHRlbnRbMV0pIC8gMjtcclxuICAgICAgY29uc3QgZmVhdHVyZTEgPSBuZXcgb2xGZWF0dXJlKHtcclxuICAgICAgICBuYW1lOiBgJHt0cmlnZ2VyfUFic3RyYWN0UmVzdWx0J2AsXHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBvbFBvaW50KFt4LCB5XSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGFic3RyYWN0UmVzdWx0ID0gZmVhdHVyZUZyb21PbChmZWF0dXJlMSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcblxyXG4gICAgICBsZXQgY29tcHV0ZWRTdHlsZTtcclxuICAgICAgbGV0IHpJbmRleE9mZnNldCA9IDA7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRyaWdnZXIpIHtcclxuICAgICAgICBjYXNlICdmb2N1c2VkJzpcclxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlKFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICAgICAgICAgIHsgZmVhdHVyZTogYWJzdHJhY3RSZXN1bHQgfSxcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlLnNlYXJjaE92ZXJsYXlTdHlsZUZvY3VzLFxyXG4gICAgICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fSkpO1xyXG4gICAgICAgICAgekluZGV4T2Zmc2V0ID0gMjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3Nob3duJzpcclxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21tb25WZWN0b3JTdHlsZShPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICAgICAgICB7IGZlYXR1cmU6IGFic3RyYWN0UmVzdWx0IH0sXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoT3ZlcmxheVN0eWxlLFxyXG4gICAgICAgICAgICByZXN1bHQuc3R5bGU/LmJhc2UgPyByZXN1bHQuc3R5bGUuYmFzZSA6IHt9KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzZWxlY3RlZCc6XHJcbiAgICAgICAgICBjb21wdXRlZFN0eWxlID0gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSxcclxuICAgICAgICAgICAgICB7IGZlYXR1cmU6IGFic3RyYWN0UmVzdWx0IH0sXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVTZWxlY3Rpb24sXHJcbiAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5zZWxlY3Rpb24gPyByZXN1bHQuc3R5bGUuc2VsZWN0aW9uIDoge30pKTtcclxuICAgICAgICAgIHpJbmRleE9mZnNldCA9IDE7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBhYnN0cmFjdFJlc3VsdC5tZXRhLnN0eWxlID0gY29tcHV0ZWRTdHlsZTtcclxuICAgICAgYWJzdHJhY3RSZXN1bHQubWV0YS5zdHlsZS5zZXRaSW5kZXgoMjAwMCArIHpJbmRleE9mZnNldCk7XHJcbiAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmFkZEZlYXR1cmUoYWJzdHJhY3RSZXN1bHQsIEZlYXR1cmVNb3Rpb24uTm9uZSk7XHJcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnZm9jdXNlZCcpIHtcclxuICAgICAgICB0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCA9IGFic3RyYWN0UmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnc2VsZWN0ZWQnKSB7XHJcbiAgICAgICAgdGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0ID0gYWJzdHJhY3RSZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRyaWdnZXIgPT09ICdzaG93bicpIHtcclxuICAgICAgICB0aGlzLnNob3duUmVzdWx0c0VtcGhhc2lzR2VvbWV0cmllcy5wdXNoKGFic3RyYWN0UmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckZlYXR1cmVFbXBoYXNpcyh0cmlnZ2VyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJGZWF0dXJlRW1waGFzaXModHJpZ2dlcjogJ3NlbGVjdGVkJyB8ICdmb2N1c2VkJyB8ICdzaG93bicpIHtcclxuICAgIGlmICh0cmlnZ2VyID09PSAnZm9jdXNlZCcgJiYgdGhpcy5hYnN0cmFjdEZvY3VzZWRSZXN1bHQpIHtcclxuICAgICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZSh0aGlzLmFic3RyYWN0Rm9jdXNlZFJlc3VsdCk7XHJcbiAgICAgIHRoaXMuYWJzdHJhY3RGb2N1c2VkUmVzdWx0ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHRyaWdnZXIgPT09ICdzZWxlY3RlZCcgJiYgdGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0KSB7XHJcbiAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LnJlbW92ZUZlYXR1cmUodGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0KTtcclxuICAgICAgdGhpcy5hYnN0cmFjdFNlbGVjdGVkUmVzdWx0ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgaWYgKHRyaWdnZXIgPT09ICdzaG93bicpIHtcclxuICAgICAgdGhpcy5zaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXMubWFwKHNob3duUmVzdWx0ID0+IHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LnJlbW92ZUZlYXR1cmUoc2hvd25SZXN1bHQpKTtcclxuICAgICAgdGhpcy5zaG93blJlc3VsdHNFbXBoYXNpc0dlb21ldHJpZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy50b3BQYW5lbFN0YXRlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQpIHtcclxuICAgICAgdGhpcy5pc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNob3dSZXN1bHRzR2VvbWV0cmllcyQkKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdHNHZW9tZXRyaWVzJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdldFJvdXRlJCQpIHtcclxuICAgICAgdGhpcy5nZXRSb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZWRFbXB0eSQkKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VkRW1wdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCBhIGZlYXR1cmUgdG8gdGhlIG1hcCB3aGVuIGl0J3MgYmVpbmcgZm9jdXNlZFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqIEBwYXJhbSByZXN1bHQgQSBzZWFyY2ggcmVzdWx0IHRoYXQgY291bGQgYmUgYSBmZWF0dXJlXHJcbiAgICovXHJcbiAgb25SZXN1bHRGb2N1cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xyXG4gICAgdGhpcy5mb2N1c2VkUmVzdWx0JC5uZXh0KHJlc3VsdCk7XHJcbiAgICBpZiAocmVzdWx0Lm1ldGEuZGF0YVR5cGUgPT09IEZFQVRVUkUgJiYgcmVzdWx0LmRhdGEuZ2VvbWV0cnkpIHtcclxuICAgICAgcmVzdWx0LmRhdGEubWV0YS5zdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSxcclxuICAgICAgICAgIHsgZmVhdHVyZTogcmVzdWx0LmRhdGEgYXMgRmVhdHVyZSB8IG9sRmVhdHVyZTxPbEdlb21ldHJ5PiB9LFxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcclxuICAgICAgICAgIHJlc3VsdC5zdHlsZT8uZm9jdXMgPyByZXN1bHQuc3R5bGUuZm9jdXMgOiB7fSkpO1xyXG5cclxuICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQocmVzdWx0Lm1ldGEuaWQpO1xyXG4gICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgIGZlYXR1cmUuc2V0U3R5bGUocmVzdWx0LmRhdGEubWV0YS5zdHlsZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmFkZEZlYXR1cmUocmVzdWx0LmRhdGEgYXMgRmVhdHVyZSwgRmVhdHVyZU1vdGlvbi5Ob25lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzdWx0VW5mb2N1cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xyXG4gICAgdGhpcy5mb2N1c2VkUmVzdWx0JC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICBpZiAocmVzdWx0Lm1ldGEuZGF0YVR5cGUgIT09IEZFQVRVUkUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN0b3JlLnN0YXRlLmdldChyZXN1bHQpLnNlbGVjdGVkID09PSB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5kYXRhU291cmNlLm9sLmdldEZlYXR1cmVCeUlkKHJlc3VsdC5tZXRhLmlkKTtcclxuICAgICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LFxyXG4gICAgICAgICAgICB7IGZlYXR1cmU6IHJlc3VsdC5kYXRhIGFzIEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT4gfSxcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVGb2N1cyxcclxuICAgICAgICAgICAgcmVzdWx0LnN0eWxlPy5mb2N1cyA/IHJlc3VsdC5zdHlsZS5mb2N1cyA6IHt9KSk7XHJcbiAgICAgICAgZmVhdHVyZS5zZXRTdHlsZShzdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tYXAuc2VhcmNoUmVzdWx0c092ZXJsYXkucmVtb3ZlRmVhdHVyZShyZXN1bHQuZGF0YSBhcyBGZWF0dXJlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgYSBmZWF0dXJlIHRvIHRoZSBtYXAgd2hlbiBpdCdzIGJlaW5nIHNlbGVjdGVkXHJcbiAgICogQGludGVybmFsXHJcbiAgICogQHBhcmFtIHJlc3VsdCBBIHNlYXJjaCByZXN1bHQgdGhhdCBjb3VsZCBiZSBhIGZlYXR1cmUgb3Igc29tZSBsYXllciBvcHRpb25zXHJcbiAgICovXHJcbiAgb25SZXN1bHRTZWxlY3QocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIHRoaXMubWFwLnNlYXJjaFJlc3VsdHNPdmVybGF5LmRhdGFTb3VyY2Uub2wuY2xlYXIoKTtcclxuICAgIHRoaXMudHJ5QWRkRmVhdHVyZVRvTWFwKHJlc3VsdCk7XHJcbiAgICB0aGlzLnNlYXJjaFN0YXRlLnNldFNlbGVjdGVkUmVzdWx0KHJlc3VsdCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9wUGFuZWxTdGF0ZSA9PT0gJ2luaXRpYWwnKSB7XHJcbiAgICAgIGlmICh0aGlzLnRvcFBhbmVsU3RhdGVEZWZhdWx0ICE9PSAnY29sbGFwc2VkJykge1xyXG4gICAgICAgIHRoaXMudG9wUGFuZWxTdGF0ZSA9ICdleHBhbmRlZCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2NvbGxhcHNlZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlID09PSAnZXhwYW5kZWQnKSB7XHJcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmNvbXB1dGVFbGVtZW50UmVmKClbMF07XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb21wdXRlRWxlbWVudFJlZigpWzFdO1xyXG4gICAgICBpZiAoIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGlnb0xpc3QsIHNlbGVjdGVkKSkge1xyXG4gICAgICAgIHRoaXMuYWRqdXN0VG9wUGFuZWwoaWdvTGlzdCwgc2VsZWN0ZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChldmVudDogeyByZXNlYXJjaDogUmVzZWFyY2g7IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdIH0pIHtcclxuICAgIGNvbnN0IHJlc3VsdHMgPSBldmVudC5yZXN1bHRzO1xyXG4gICAgY29uc3QgbmV3UmVzdWx0cyA9IHRoaXMuc3RvcmUuZW50aXRpZXMkLnZhbHVlXHJcbiAgICAgIC5maWx0ZXIoKHJlc3VsdDogU2VhcmNoUmVzdWx0KSA9PiByZXN1bHQuc291cmNlICE9PSBldmVudC5yZXNlYXJjaC5zb3VyY2UpXHJcbiAgICAgIC5jb25jYXQocmVzdWx0cyk7XHJcblxyXG4gICAgdGhpcy5zdG9yZS5sb2FkKG5ld1Jlc3VsdHMpO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmVzIG9mIHRoaXMuc3RvcmUuYWxsKCkpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcykuZm9jdXNlZCA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlcykuc2VsZWN0ZWQgIT09IHRydWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUocmVzLCB7IGZvY3VzZWQ6IGZhbHNlIH0sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaWdvLWxpc3QnKTtcclxuICAgICAgbGV0IG1vcmVSZXN1bHRzO1xyXG4gICAgICBldmVudC5yZXNlYXJjaC5yZXF1ZXN0LnN1YnNjcmliZSgoc291cmNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFzb3VyY2VbMF0gfHwgIXNvdXJjZVswXS5zb3VyY2UpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ2ljaGVyY2hlJykge1xyXG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy5pY2hlcmNoZSAubW9yZVJlc3VsdHMnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSA9PT0gJ2lsYXllcicpIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKCcuaWxheWVyIC5tb3JlUmVzdWx0cycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlWzBdLnNvdXJjZS5nZXRJZCgpID09PSAnbm9taW5hdGltJykge1xyXG4gICAgICAgICAgbW9yZVJlc3VsdHMgPSBpZ29MaXN0LnF1ZXJ5U2VsZWN0b3IoJy5ub21pbmF0aW0gLm1vcmVSZXN1bHRzJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1vcmVSZXN1bHRzID0gaWdvTGlzdC5xdWVyeVNlbGVjdG9yKCcuJyArIHNvdXJjZVswXS5zb3VyY2UuZ2V0SWQoKSArICcgLm1vcmVSZXN1bHRzJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBtb3JlUmVzdWx0cyAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGlnb0xpc3QsIG1vcmVSZXN1bHRzKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWdvTGlzdC5zY3JvbGxUb3AgPVxyXG4gICAgICAgICAgICBtb3JlUmVzdWx0cy5vZmZzZXRUb3AgK1xyXG4gICAgICAgICAgICBtb3JlUmVzdWx0cy5vZmZzZXRIZWlnaHQgLVxyXG4gICAgICAgICAgICBpZ29MaXN0LmNsaWVudEhlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIGNvbXB1dGVFbGVtZW50UmVmKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0nKTtcclxuICAgIGNvbnN0IGlnb0xpc3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXHJcbiAgICAgICdpZ28tbGlzdCdcclxuICAgIClbMF07XHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpdGVtc1tpXS5jbGFzc05hbWUuaW5jbHVkZXMoJ2lnby1saXN0LWl0ZW0tc2VsZWN0ZWQnKSkge1xyXG4gICAgICAgIHNlbGVjdGVkSXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2lnb0xpc3QsIHNlbGVjdGVkSXRlbV07XHJcbiAgfVxyXG5cclxuICBhZGp1c3RUb3BQYW5lbChlbGVtU291cmNlLCBlbGVtKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pKSB7XHJcbiAgICAgIGVsZW1Tb3VyY2Uuc2Nyb2xsVG9wID1cclxuICAgICAgICBlbGVtLm9mZnNldFRvcCArXHJcbiAgICAgICAgZWxlbS5jaGlsZHJlblswXS5vZmZzZXRIZWlnaHQgLVxyXG4gICAgICAgIGVsZW1Tb3VyY2UuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVG9wUGFuZWwoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZihldmVudCAmJiAoKGV2ZW50LnRhcmdldCBhcyBhbnkpPy5jbGFzc05hbWUgIT09ICdpZ28tcGFuZWwtdGl0bGUnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50b3BQYW5lbFN0YXRlID09PSAnZXhwYW5kZWQnKSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2NvbGxhcHNlZCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b3BQYW5lbFN0YXRlID0gJ2V4cGFuZGVkJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbVRvRmVhdHVyZUV4dGVudCgpIHtcclxuICAgIGlmICh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkpIHtcclxuICAgICAgY29uc3QgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmZvcm1hdC5yZWFkRmVhdHVyZSh0aGlzLmZlYXR1cmUsIHtcclxuICAgICAgICBkYXRhUHJvamVjdGlvbjogdGhpcy5mZWF0dXJlLnByb2plY3Rpb24sXHJcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgICAgfSk7XHJcbiAgICAgIG1vdmVUb09sRmVhdHVyZXModGhpcy5tYXAsIFtsb2NhbE9sRmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uWm9vbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcnkgdG8gYWRkIGEgZmVhdHVyZSB0byB0aGUgbWFwIG92ZXJsYXlcclxuICAgKiBAcGFyYW0gcmVzdWx0IEEgc2VhcmNoIHJlc3VsdCB0aGF0IGNvdWxkIGJlIGEgZmVhdHVyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJ5QWRkRmVhdHVyZVRvTWFwKHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XHJcbiAgICBpZiAocmVzdWx0Lm1ldGEuZGF0YVR5cGUgIT09IEZFQVRVUkUpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IGZlYXR1cmUgPSAocmVzdWx0IGFzIFNlYXJjaFJlc3VsdDxGZWF0dXJlPikuZGF0YTtcclxuXHJcbiAgICAvLyBTb21ldGhpbWVzIGZlYXR1cmVzIGhhdmUgbm8gZ2VvbWV0cnkuIEl0IGhhcHBlbnMgd2l0aCBzb21lIEdldEZlYXR1cmVJbmZvXHJcbiAgICBpZiAoIWZlYXR1cmUuZ2VvbWV0cnkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZlYXR1cmUubWV0YS5zdHlsZSA9IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sXHJcbiAgICAgICAgeyBmZWF0dXJlIH0sXHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZS5zZWFyY2hPdmVybGF5U3R5bGVTZWxlY3Rpb24sXHJcbiAgICAgICAgcmVzdWx0LnN0eWxlPy5zZWxlY3Rpb24gPyByZXN1bHQuc3R5bGUuc2VsZWN0aW9uIDoge30pKTtcclxuXHJcbiAgICB0aGlzLm1hcC5zZWFyY2hSZXN1bHRzT3ZlcmxheS5hZGRGZWF0dXJlKGZlYXR1cmUpO1xyXG4gIH1cclxuXHJcbiAgaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pIHtcclxuICAgIGNvbnN0IHBhZGRpbmcgPSA2O1xyXG4gICAgY29uc3QgZG9jVmlld1RvcCA9IGVsZW1Tb3VyY2Uuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgZG9jVmlld0JvdHRvbSA9IGRvY1ZpZXdUb3AgKyBlbGVtU291cmNlLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICBjb25zdCBlbGVtVG9wID0gZWxlbS5vZmZzZXRUb3A7XHJcbiAgICBjb25zdCBlbGVtQm90dG9tID0gZWxlbVRvcCArIGVsZW0uY2xpZW50SGVpZ2h0ICsgcGFkZGluZztcclxuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um91dGUoKSB7XHJcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnZGlyZWN0aW9ucycpO1xyXG4gICAgdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLmNsZWFyU3RvcHMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgcm91dGluZ0Nvb3JkTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmdldFJvdXRlJCQpIHsgdGhpcy5nZXRSb3V0ZSQkLnVuc3Vic2NyaWJlKCk7IH1cclxuICAgICAgdGhpcy5nZXRSb3V0ZSQkID0gdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoaW5pdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQudmFsdWUgJiYgIXJvdXRpbmdDb29yZExvYWRlZCkge1xyXG4gICAgICAgICAgcm91dGluZ0Nvb3JkTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuYWxsKCkuZmluZCgoZSkgPT4gZS5wb3NpdGlvbiA9PT0gMSk7XHJcbiAgICAgICAgICBsZXQgY29vcmQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlLmdlb21ldHJ5KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xyXG4gICAgICAgICAgICAgIGNvb3JkID0gW3RoaXMuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSwgdGhpcy5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBwb2ludCA9IHBvaW50T25GZWF0dXJlKHRoaXMuZmVhdHVyZS5nZW9tZXRyeSk7XHJcbiAgICAgICAgICAgICAgY29vcmQgPSBbcG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3RvcC50ZXh0ID0gdGhpcy5mZWF0dXJlVGl0bGU7XHJcbiAgICAgICAgICBzdG9wLmNvb3JkaW5hdGVzID0gY29vcmQ7XHJcbiAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUudXBkYXRlKHN0b3ApO1xyXG4gICAgICAgICAgaWYgKHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBvcyA9IHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUuYWxsKCkuZmluZCgoZSkgPT4gZS5wb3NpdGlvbiA9PT0gMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oY3VycmVudFBvcy5wb3NpdGlvbiwgY3VycmVudFBvcy5wcm9qZWN0aW9uLCAnRVBTRzo0MzI2Jyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkOiBbbnVtYmVyLG51bWJlcl0gPSByb3VuZENvb3JkVG8oW2N1cnJlbnRDb29yZFswXSwgY3VycmVudENvb3JkWzFdXSwgNik7XHJcbiAgICAgICAgICAgIHN0b3AudGV4dCA9IGNvb3JkLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgc3RvcC5jb29yZGluYXRlcyA9IGNvb3JkO1xyXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzU3RvcmUudXBkYXRlKHN0b3ApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIighc3RvcmUgfHwgc3RvcmUuc3RhdGVWaWV3LmVtcHR5KSAmJiAoZGVib3VuY2VkRW1wdHkkIHwgYXN5bmMpXCIgc3R5bGU9XCJtYXJnaW46IDEwcHg7XCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxyXG4gICAgPGg0PjxzdHJvbmc+e3sgJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5ub1Jlc3VsdHMnIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+PC9oND5cclxuICAgIDxwPjxzdHJvbmc+e3sgJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5kb1NlYXJjaCcgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz48L3A+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwiJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC5leGFtcGxlcycgfCB0cmFuc2xhdGUgfCBzYW5pdGl6ZUh0bWxcIj48L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcbjxpZ28tZmxleGlibGVcclxuICAqbmdJZj1cIihkZWJvdW5jZWRFbXB0eSQgfCBhc3luYykgPT09IGZhbHNlXCJcclxuICAjdG9wUGFuZWxcclxuICBpbml0aWFsPVwiMTAwJVwiXHJcbiAgaW5pdGlhbE1vYmlsZT1cIjEwMCVcIlxyXG4gIGNvbGxhcHNlZD1cImNhbGMoMTAwJSAtIDU4cHgpXCJcclxuICBjb2xsYXBzZWRNb2JpbGU9XCJjYWxjKDEwMCUgLSA1OHB4KVwiXHJcbiAgZXhwYW5kZWQ9XCI2MCVcIlxyXG4gIGV4cGFuZGVkTW9iaWxlPVwiNjAlXCJcclxuICBbc3RhdGVdPVwiKGZlYXR1cmUkIHzCoGFzeW5jKSA/IHRvcFBhbmVsU3RhdGUgOiAnaW5pdGlhbCdcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlnby1jb250ZW50XCI+XHJcbiAgICA8aWdvLXNlYXJjaC1yZXN1bHRzXHJcbiAgICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICAgIFtzaG93SWNvbnNdPVwic2hvd0ljb25zXCJcclxuICAgICAgW3Rlcm1dPVwidGVybVwiXHJcbiAgICAgIFt0ZXJtU3BsaXR0ZXJdPVwidGVybVNwbGl0dGVyXCJcclxuICAgICAgW3NldHRpbmdzQ2hhbmdlJF09XCJzZXR0aW5nc0NoYW5nZSRcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImZhbHNlXCJcclxuICAgICAgKHJlc3VsdEZvY3VzKT1cIm9uUmVzdWx0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgIChyZXN1bHRTZWxlY3QpPVwib25SZXN1bHRTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgIChyZXN1bHRVbmZvY3VzKT1cIm9uUmVzdWx0VW5mb2N1cygkZXZlbnQpXCJcclxuICAgICAgKHJlc3VsdE1vdXNlZW50ZXIpPVwib25SZXN1bHRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgKHJlc3VsdE1vdXNlbGVhdmUpPVwib25SZXN1bHRVbmZvY3VzKCRldmVudClcIlxyXG4gICAgICAobW9yZVJlc3VsdHMpPVwib25TZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgIFttYXBdPVwibWFwXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvU2VhcmNoSXRlbVRvb2xiYXIgbGV0LXJlc3VsdD1cInJlc3VsdFwiPlxyXG4gICAgICAgIDxpZ28tc2VhcmNoLWFkZC1idXR0b25cclxuICAgICAgICAgIFttYXBdPVwibWFwXCJcclxuICAgICAgICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICAgICAgICBbc3RvcmVzXT1cInN0b3Jlc1wiXHJcbiAgICAgICAgICBbbGF5ZXJdPVwicmVzdWx0XCJcclxuICAgICAgICAgIFtzYXZlU2VhcmNoUmVzdWx0SW5MYXllcl09XCJzYXZlU2VhcmNoUmVzdWx0SW5MYXllclwiPlxyXG4gICAgICAgIDwvaWdvLXNlYXJjaC1hZGQtYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9pZ28tc2VhcmNoLXJlc3VsdHM+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgaWdvRmxleGlibGVGaWxsIGNsYXNzPVwiaWdvLWNvbnRlbnRcIj5cclxuICAgIDxpZ28tcGFuZWwgW3RpdGxlXT1cImZlYXR1cmVUaXRsZVwiICpuZ0lmPVwiZmVhdHVyZSQgfMKgYXN5bmNcIiAoY2xpY2spPVwidG9nZ2xlVG9wUGFuZWwoJGV2ZW50KVwiIFtjdXJzb3JQb2ludGVyXT1cInRydWVcIj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBwYW5lbExlZnRCdXR0b25cclxuICAgICAgICBjbGFzcz1cImlnby1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRvcFBhbmVsKClcIj5cclxuICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiKHRvcFBhbmVsU3RhdGUkIHwgYXN5bmMpID09PSAnY29sbGFwc2VkJyA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bidcIj48L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImZlYXR1cmUuZ2VvbWV0cnlcIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIHBhbmVsUmlnaHRCdXR0b25cclxuICAgICAgICBjbGFzcz1cImlnby1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiKChpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKSA/ICdpZ28uaW50ZWdyYXRpb24uc2VhcmNoUmVzdWx0c1Rvb2wuem9vbU9uRmVhdHVyZVRvb2x0aXBPdXRPZlZpZXcnIDogJ2lnby5pbnRlZ3JhdGlvbi5zZWFyY2hSZXN1bHRzVG9vbC56b29tT25GZWF0dXJlVG9vbHRpcCcpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICAoY2xpY2spPVwiem9vbVRvRmVhdHVyZUV4dGVudCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgW21hdEJhZGdlXT1cIihpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKSA/ICchJyA6ICcnXCJcclxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihpc1NlbGVjdGVkUmVzdWx0T3V0T2ZWaWV3JCB8IGFzeW5jKT09PWZhbHNlXCIgICAgIFxyXG4gICAgICAgIHN2Z0ljb249XCJtYWduaWZ5LXBsdXMtb3V0bGluZVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGlnby1mZWF0dXJlLWRldGFpbHNcclxuICAgICAgICBpZ29GZWF0dXJlRGV0YWlsc0RpcmVjdGl2ZVxyXG4gICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmUkIHwgYXN5bmNcIlxyXG4gICAgICAgIFttYXBdPVwibWFwXCJcclxuICAgICAgICBbdG9vbGJveF09XCJ0b29sU3RhdGUudG9vbGJveFwiXHJcbiAgICAgICAgKHJvdXRpbmdFdmVudCk9XCJnZXRSb3V0ZSgpXCI+XHJcbiAgICAgIDwvaWdvLWZlYXR1cmUtZGV0YWlscz5cclxuICAgIDwvaWdvLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9pZ28tZmxleGlibGU+XHJcbiJdfQ==
|