@igo2/geo 1.11.1 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/bundles/igo2-geo.umd.js +3043 -1236
- package/bundles/igo2-geo.umd.js.map +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +1 -1
- package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library.module.js +1 -1
- package/esm2015/lib/catalog/catalog.module.js +1 -1
- package/esm2015/lib/catalog/index.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.abstract.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.enum.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.interface.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.service.js +113 -42
- package/esm2015/lib/catalog/shared/index.js +1 -1
- package/esm2015/lib/datasource/datasource.module.js +1 -1
- package/esm2015/lib/datasource/index.js +1 -1
- package/esm2015/lib/datasource/shared/capabilities.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasource.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/data.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/index.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +4 -1
- package/esm2015/lib/datasource/shared/datasources/wfs.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +5 -2
- package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.interface.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.providers.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.service.js +1 -1
- package/esm2015/lib/datasource/shared/options/options.service.js +1 -1
- package/esm2015/lib/datasource/utils/esri-style-generator.js +1 -1
- package/esm2015/lib/datasource/utils/index.js +1 -1
- package/esm2015/lib/datasource/utils/tilegrid.js +1 -1
- package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +1 -1
- package/esm2015/lib/directions/directions-buttons/index.js +1 -1
- package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +1 -1
- package/esm2015/lib/directions/directions-inputs/index.js +1 -1
- package/esm2015/lib/directions/directions-results/directions-results.component.js +1 -1
- package/esm2015/lib/directions/directions-results/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.interface.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.provider.js +1 -1
- package/esm2015/lib/directions/directions-sources/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +1 -1
- package/esm2015/lib/directions/directions.component.js +1 -1
- package/esm2015/lib/directions/directions.module.js +1 -1
- package/esm2015/lib/directions/index.js +1 -1
- package/esm2015/lib/directions/shared/directions-source.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.enum.js +1 -1
- package/esm2015/lib/directions/shared/directions.interface.js +1 -1
- package/esm2015/lib/directions/shared/directions.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.utils.js +1 -1
- package/esm2015/lib/directions/shared/index.js +1 -1
- package/esm2015/lib/directions/shared/store.js +1 -1
- package/esm2015/lib/download/download-button/download-button.component.js +1 -1
- package/esm2015/lib/download/download-button/index.js +1 -1
- package/esm2015/lib/download/download.module.js +1 -1
- package/esm2015/lib/download/index.js +1 -1
- package/esm2015/lib/download/shared/download.interface.js +1 -1
- package/esm2015/lib/download/shared/download.service.js +1 -1
- package/esm2015/lib/download/shared/index.js +1 -1
- package/esm2015/lib/draw/draw/draw-popup.component.js +21 -15
- package/esm2015/lib/draw/draw/draw-shorcuts.component.js +1 -1
- package/esm2015/lib/draw/draw/draw.component.js +185 -77
- package/esm2015/lib/draw/draw/draw.module.js +1 -1
- package/esm2015/lib/draw/drawingTool.module.js +1 -1
- package/esm2015/lib/draw/index.js +1 -1
- package/esm2015/lib/draw/shared/draw-icon.service.js +1 -1
- package/esm2015/lib/draw/shared/draw-style.service.js +24 -5
- package/esm2015/lib/draw/shared/draw.enum.js +17 -1
- package/esm2015/lib/draw/shared/draw.interface.js +1 -1
- package/esm2015/lib/draw/shared/draw.utils.js +1 -1
- package/esm2015/lib/draw/shared/index.js +1 -1
- package/esm2015/lib/feature/feature-details/feature-details.component.js +119 -43
- package/esm2015/lib/feature/feature-details/feature-details.directive.js +2 -57
- package/esm2015/lib/feature/feature-details/feature-details.module.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.component.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.module.js +1 -1
- package/esm2015/lib/feature/feature.module.js +1 -1
- package/esm2015/lib/feature/index.js +1 -1
- package/esm2015/lib/feature/shared/feature.enums.js +1 -1
- package/esm2015/lib/feature/shared/feature.interfaces.js +1 -1
- package/esm2015/lib/feature/shared/feature.utils.js +1 -1
- package/esm2015/lib/feature/shared/index.js +1 -1
- package/esm2015/lib/feature/shared/store.js +1 -1
- package/esm2015/lib/feature/shared/strategies/in-map-extent.js +1 -1
- package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +1 -1
- package/esm2015/lib/feature/shared/strategies/index.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading-layer.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading.js +1 -1
- package/esm2015/lib/feature/shared/strategies/selection.js +1 -1
- package/esm2015/lib/feature/shared/strategies.utils.js +1 -1
- package/esm2015/lib/filter/filter.module.js +6 -3
- package/esm2015/lib/filter/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +32 -7
- package/esm2015/lib/filter/ogc-filter-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +652 -290
- package/esm2015/lib/filter/ogc-filter-time/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +3 -2
- package/esm2015/lib/filter/ogc-filterable-list/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +1 -1
- package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +3 -2
- package/esm2015/lib/filter/shared/index.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter-time.service.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.js +17 -6
- package/esm2015/lib/filter/shared/ogc-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.service.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +1 -1
- package/esm2015/lib/filter/time-filter-button/index.js +1 -1
- package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +1 -1
- package/esm2015/lib/filter/time-filter-form/index.js +1 -1
- package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +1 -1
- package/esm2015/lib/filter/time-filter-item/index.js +1 -1
- package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +1 -1
- package/esm2015/lib/filter/time-filter-list/index.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +1 -1
- package/esm2015/lib/geo.module.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +1 -1
- package/esm2015/lib/geometry/geometry.module.js +1 -1
- package/esm2015/lib/geometry/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/draw.js +1 -1
- package/esm2015/lib/geometry/shared/controls/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
- package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.errors.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.interfaces.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.utils.js +1 -1
- package/esm2015/lib/geometry/shared/index.js +1 -1
- package/esm2015/lib/import-export/export-button/export-button.component.js +1 -1
- package/esm2015/lib/import-export/export-button/index.js +1 -1
- package/esm2015/lib/import-export/import-export/import-export.component.js +1 -1
- package/esm2015/lib/import-export/import-export/index.js +1 -1
- package/esm2015/lib/import-export/import-export.module.js +1 -1
- package/esm2015/lib/import-export/index.js +1 -1
- package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +1 -1
- package/esm2015/lib/import-export/shared/export.errors.js +1 -1
- package/esm2015/lib/import-export/shared/export.interface.js +1 -1
- package/esm2015/lib/import-export/shared/export.service.js +10 -2
- package/esm2015/lib/import-export/shared/export.type.js +1 -1
- package/esm2015/lib/import-export/shared/export.utils.js +1 -1
- package/esm2015/lib/import-export/shared/import.errors.js +1 -1
- package/esm2015/lib/import-export/shared/import.interface.js +1 -1
- package/esm2015/lib/import-export/shared/import.service.js +1 -1
- package/esm2015/lib/import-export/shared/import.utils.js +65 -38
- package/esm2015/lib/import-export/shared/index.js +1 -1
- package/esm2015/lib/import-export/style-list/index.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.interface.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.module.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.provider.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.service.js +1 -1
- package/esm2015/lib/layer/index.js +1 -1
- package/esm2015/lib/layer/layer-item/index.js +1 -1
- package/esm2015/lib/layer/layer-item/layer-item.component.js +15 -8
- package/esm2015/lib/layer/layer-legend/index.js +1 -1
- package/esm2015/lib/layer/layer-legend/layer-legend.component.js +6 -5
- package/esm2015/lib/layer/layer-legend-item/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +1 -1
- package/esm2015/lib/layer/layer-list/index.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list.component.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/index.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +1 -1
- package/esm2015/lib/layer/layer.module.js +1 -1
- package/esm2015/lib/layer/shared/clusterParam.js +1 -1
- package/esm2015/lib/layer/shared/index.js +1 -1
- package/esm2015/lib/layer/shared/layer.enums.js +1 -1
- package/esm2015/lib/layer/shared/layer.service.js +44 -20
- package/esm2015/lib/layer/shared/layers/any-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/any-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/index.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.js +94 -43
- package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vectortile-layer.js +1 -1
- package/esm2015/lib/layer/shared/style.service.js +80 -11
- package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
- package/esm2015/lib/layer/track-feature-button/index.js +1 -1
- package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +1 -1
- package/esm2015/lib/layer/utils/image-watcher.js +1 -1
- package/esm2015/lib/layer/utils/index.js +1 -1
- package/esm2015/lib/layer/utils/layer.utils.js +1 -1
- package/esm2015/lib/layer/utils/layerSync-watcher.js +1 -1
- package/esm2015/lib/layer/utils/outputLegend.js +5 -3
- package/esm2015/lib/layer/utils/tile-watcher.js +1 -1
- package/esm2015/lib/layer/utils/vector-watcher.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/index.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +1 -1
- package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +52 -17
- package/esm2015/lib/map/geolocate-button/index.js +1 -1
- package/esm2015/lib/map/index.js +2 -1
- package/esm2015/lib/map/info-section/index.js +1 -1
- package/esm2015/lib/map/info-section/info-section.component.js +1 -1
- package/esm2015/lib/map/map-browser/index.js +1 -1
- package/esm2015/lib/map/map-browser/map-browser.component.js +2 -2
- package/esm2015/lib/map/map-center/index.js +1 -1
- package/esm2015/lib/map/map-center/map-center.component.js +1 -1
- package/esm2015/lib/map/map.module.js +6 -1
- package/esm2015/lib/map/menu-button/index.js +1 -1
- package/esm2015/lib/map/menu-button/menu-button.component.js +1 -1
- package/esm2015/lib/map/offline-button/index.js +1 -1
- package/esm2015/lib/map/offline-button/offline-button.component.js +1 -1
- package/esm2015/lib/map/rotation-button/index.js +1 -1
- package/esm2015/lib/map/rotation-button/rotation-button.component.js +1 -1
- package/esm2015/lib/map/shared/controllers/controller.js +1 -1
- package/esm2015/lib/map/shared/controllers/geolocation.js +295 -0
- package/esm2015/lib/map/shared/controllers/index.js +2 -1
- package/esm2015/lib/map/shared/controllers/view.js +17 -1
- package/esm2015/lib/map/shared/hover-feature.directive.js +8 -7
- package/esm2015/lib/map/shared/index.js +1 -1
- package/esm2015/lib/map/shared/map-pointer-position.directive.js +1 -1
- package/esm2015/lib/map/shared/map.enums.js +1 -1
- package/esm2015/lib/map/shared/map.interface.js +1 -1
- package/esm2015/lib/map/shared/map.js +14 -135
- package/esm2015/lib/map/shared/map.service.js +1 -1
- package/esm2015/lib/map/shared/map.utils.js +1 -1
- package/esm2015/lib/map/shared/mapOffline.directive.js +1 -1
- package/esm2015/lib/map/shared/projection.interfaces.js +1 -1
- package/esm2015/lib/map/shared/projection.service.js +1 -1
- package/esm2015/lib/map/shared/projection.utils.js +1 -1
- package/esm2015/lib/map/swipe-control/index.js +1 -1
- package/esm2015/lib/map/swipe-control/swipe-control.component.js +1 -1
- package/esm2015/lib/map/utils/layer-watcher.js +1 -1
- package/esm2015/lib/map/wake-lock-button/index.js +2 -0
- package/esm2015/lib/map/wake-lock-button/wake-lock-button.component.js +122 -0
- package/esm2015/lib/map/zoom-button/index.js +1 -1
- package/esm2015/lib/map/zoom-button/zoom-button.component.js +1 -1
- package/esm2015/lib/measure/index.js +1 -1
- package/esm2015/lib/measure/measure.module.js +1 -1
- package/esm2015/lib/measure/measurer/measure-format.pipe.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-dialog.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-item.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer.module.js +1 -1
- package/esm2015/lib/measure/shared/index.js +1 -1
- package/esm2015/lib/measure/shared/measure.enum.js +1 -1
- package/esm2015/lib/measure/shared/measure.interfaces.js +1 -1
- package/esm2015/lib/measure/shared/measure.utils.js +1 -1
- package/esm2015/lib/metadata/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +1 -1
- package/esm2015/lib/metadata/metadata.module.js +1 -1
- package/esm2015/lib/metadata/shared/index.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.interface.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.service.js +1 -1
- package/esm2015/lib/offline/geoDB/geoDB.enums.js +6 -0
- package/esm2015/lib/offline/geoDB/geoDB.interface.js +2 -0
- package/esm2015/lib/offline/geoDB/geoDB.service.js +161 -0
- package/esm2015/lib/offline/geoDB/index.js +4 -0
- package/esm2015/lib/offline/index.js +3 -0
- package/esm2015/lib/offline/shared/geo-network.service.js +66 -0
- package/esm2015/lib/offline/shared/index.js +2 -0
- package/esm2015/lib/overlay/index.js +1 -1
- package/esm2015/lib/overlay/overlay.module.js +1 -1
- package/esm2015/lib/overlay/shared/index.js +1 -1
- package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.directive.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.enum.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.service.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.utils.js +3 -3
- package/esm2015/lib/print/index.js +1 -1
- package/esm2015/lib/print/print/print.component.js +1 -1
- package/esm2015/lib/print/print-form/index.js +1 -1
- package/esm2015/lib/print/print-form/print-form.component.js +1 -1
- package/esm2015/lib/print/print.module.js +1 -1
- package/esm2015/lib/print/shared/index.js +1 -1
- package/esm2015/lib/print/shared/print.interface.js +1 -1
- package/esm2015/lib/print/shared/print.service.js +22 -16
- package/esm2015/lib/print/shared/print.type.js +1 -1
- package/esm2015/lib/query/index.js +1 -1
- package/esm2015/lib/query/query.module.js +5 -4
- package/esm2015/lib/query/shared/index.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.providers.js +1 -1
- package/esm2015/lib/query/shared/query.directive.js +1 -1
- package/esm2015/lib/query/shared/query.enums.js +1 -1
- package/esm2015/lib/query/shared/query.interfaces.js +1 -1
- package/esm2015/lib/query/shared/query.service.js +33 -6
- package/esm2015/lib/query/shared/query.utils.js +1 -1
- package/esm2015/lib/search/index.js +1 -1
- package/esm2015/lib/search/search-bar/search-bar.component.js +1 -1
- package/esm2015/lib/search/search-bar/search-bar.module.js +1 -1
- package/esm2015/lib/search/search-bar/search-url-param.directive.js +1 -1
- package/esm2015/lib/search/search-results/search-results-add-button.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results-item.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.module.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.component.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.module.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.component.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.module.js +1 -1
- package/esm2015/lib/search/search.module.js +1 -1
- package/esm2015/lib/search/shared/index.js +1 -1
- package/esm2015/lib/search/shared/search-pointer-summary.directive.js +1 -1
- package/esm2015/lib/search/shared/search-source-service.providers.js +1 -1
- package/esm2015/lib/search/shared/search-source.service.js +1 -1
- package/esm2015/lib/search/shared/search.enums.js +1 -1
- package/esm2015/lib/search/shared/search.interfaces.js +1 -1
- package/esm2015/lib/search/shared/search.service.js +1 -1
- package/esm2015/lib/search/shared/search.utils.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/index.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.js +2 -2
- package/esm2015/lib/search/shared/sources/nominatim.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/source.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/source.js +2 -2
- package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/storedqueries.js +1 -1
- package/esm2015/lib/search/shared/sources/storedqueries.providers.js +1 -1
- package/esm2015/lib/toast/index.js +1 -1
- package/esm2015/lib/toast/toast.component.js +1 -1
- package/esm2015/lib/toast/toast.module.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.interface.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.js +1 -1
- package/esm2015/lib/utils/googleLinks.js +1 -1
- package/esm2015/lib/utils/id-generator.js +1 -1
- package/esm2015/lib/utils/index.js +1 -1
- package/esm2015/lib/utils/osmLinks.js +1 -1
- package/esm2015/lib/wkt/index.js +1 -1
- package/esm2015/lib/wkt/shared/index.js +1 -1
- package/esm2015/lib/wkt/shared/wkt.service.js +15 -15
- package/esm2015/lib/wkt/wkt.module.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/index.js +1 -1
- package/esm2015/lib/workspace/index.js +1 -1
- package/esm2015/lib/workspace/shared/edition-workspace.js +12 -4
- package/esm2015/lib/workspace/shared/edition-workspace.service.js +40 -13
- package/esm2015/lib/workspace/shared/feature-workspace.js +1 -1
- package/esm2015/lib/workspace/shared/feature-workspace.service.js +10 -5
- package/esm2015/lib/workspace/shared/index.js +1 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.js +1 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.service.js +10 -5
- package/esm2015/lib/workspace/shared/wms-workspace.service.js +31 -7
- package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
- package/esm2015/lib/workspace/widgets/index.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +1 -1
- package/esm2015/lib/workspace/widgets/widgets.js +1 -1
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +1 -1
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +1 -1
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +1 -1
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +1 -1
- package/esm2015/lib/workspace/workspace.module.js +1 -1
- package/esm2015/public_api.js +2 -1
- package/fesm2015/igo2-geo.js +2421 -937
- package/fesm2015/igo2-geo.js.map +1 -1
- package/lib/catalog/shared/catalog.interface.d.ts +9 -1
- package/lib/catalog/shared/catalog.service.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +7 -1
- package/lib/draw/draw/draw-popup.component.d.ts +4 -2
- package/lib/draw/draw/draw.component.d.ts +19 -2
- package/lib/draw/shared/draw-style.service.d.ts +6 -0
- package/lib/draw/shared/draw.enum.d.ts +15 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +12 -2
- package/lib/feature/feature-details/feature-details.directive.d.ts +2 -13
- package/lib/filter/filter.module.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +31 -13
- package/lib/filter/shared/ogc-filter.interface.d.ts +19 -2
- package/lib/import-export/shared/import.utils.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +1 -0
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/shared/layer.service.d.ts +6 -3
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +5 -1
- package/lib/layer/shared/style.service.d.ts +38 -3
- package/lib/layer/shared/vector-style.interface.d.ts +11 -0
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +8 -1
- package/lib/map/index.d.ts +1 -0
- package/lib/map/map.module.d.ts +13 -12
- package/lib/map/shared/controllers/geolocation.d.ts +111 -0
- package/lib/map/shared/controllers/index.d.ts +1 -0
- package/lib/map/shared/controllers/view.d.ts +7 -0
- package/lib/map/shared/hover-feature.directive.d.ts +1 -1
- package/lib/map/shared/map.d.ts +6 -19
- package/lib/map/shared/map.interface.d.ts +0 -1
- package/lib/map/wake-lock-button/index.d.ts +1 -0
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -0
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -0
- package/lib/offline/geoDB/geoDB.interface.d.ts +9 -0
- package/lib/offline/geoDB/geoDB.service.d.ts +35 -0
- package/lib/offline/geoDB/index.d.ts +3 -0
- package/lib/offline/index.d.ts +2 -0
- package/lib/offline/shared/geo-network.service.d.ts +28 -0
- package/lib/offline/shared/index.d.ts +1 -0
- package/lib/print/shared/print.service.d.ts +3 -2
- package/lib/query/query.module.d.ts +2 -1
- package/lib/query/shared/query.service.d.ts +7 -1
- package/lib/workspace/shared/edition-workspace.d.ts +2 -1
- package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/feature-workspace.service.d.ts +3 -2
- package/lib/workspace/shared/wfs-workspace.service.d.ts +3 -2
- package/lib/workspace/shared/wms-workspace.service.d.ts +5 -2
- package/ngcc.config.js +3 -3
- package/package.json +7 -5
- package/public_api.d.ts +1 -0
- package/style/geo.theming.scss +12 -12
|
@@ -71,7 +71,7 @@ export class OgcFilterWriter {
|
|
|
71
71
|
ogcFiltersOptions.geometryName = fieldNameGeometry;
|
|
72
72
|
ogcFiltersOptions.advancedOgcFilters = true;
|
|
73
73
|
if (ogcFiltersOptions.enabled && (ogcFiltersOptions.pushButtons || ogcFiltersOptions.checkboxes
|
|
74
|
-
|| ogcFiltersOptions.radioButtons || ogcFiltersOptions.select)) {
|
|
74
|
+
|| ogcFiltersOptions.radioButtons || ogcFiltersOptions.select || ogcFiltersOptions.autocomplete)) {
|
|
75
75
|
ogcFiltersOptions.advancedOgcFilters = false;
|
|
76
76
|
}
|
|
77
77
|
return ogcFiltersOptions;
|
|
@@ -180,7 +180,7 @@ export class OgcFilterWriter {
|
|
|
180
180
|
case OgcFilterOperator.BBOX.toLowerCase():
|
|
181
181
|
return olfilter.bbox(wfsGeometryName, wfsExtent, wfsSrsName);
|
|
182
182
|
case OgcFilterOperator.PropertyIsBetween.toLowerCase():
|
|
183
|
-
return olfilter.between(wfsPropertyName, wfsLowerBoundary, wfsUpperBoundary);
|
|
183
|
+
return olfilter.between(wfsPropertyName, wfsLowerBoundary || 1e40 * -1, wfsUpperBoundary || 1e40);
|
|
184
184
|
case OgcFilterOperator.Contains.toLowerCase():
|
|
185
185
|
return olfilter.contains(wfsGeometryName, geometry, wfsSrsName);
|
|
186
186
|
case OgcFilterOperator.During.toLowerCase():
|
|
@@ -200,7 +200,7 @@ export class OgcFilterWriter {
|
|
|
200
200
|
case OgcFilterOperator.PropertyIsLessThanOrEqualTo.toLowerCase():
|
|
201
201
|
return olfilter.lessThanOrEqualTo(wfsPropertyName, wfsExpression);
|
|
202
202
|
case OgcFilterOperator.PropertyIsLike.toLowerCase():
|
|
203
|
-
return olfilter.like(wfsPropertyName, wfsPattern.replace(/[()_]/gi, wfsSingleChar), wfsWildCard, wfsSingleChar, wfsEscapeChar, wfsMatchCase);
|
|
203
|
+
return olfilter.like(wfsPropertyName, wfsPattern ? wfsPattern.replace(/[()_]/gi, wfsSingleChar) : wfsWildCard, wfsWildCard, wfsSingleChar, wfsEscapeChar, wfsMatchCase);
|
|
204
204
|
case OgcFilterOperator.PropertyIsNotEqualTo.toLowerCase():
|
|
205
205
|
return olfilter.notEqualTo(wfsPropertyName, wfsExpression, wfsMatchCase);
|
|
206
206
|
case OgcFilterOperator.Within.toLowerCase():
|
|
@@ -539,7 +539,8 @@ export class OgcFilterWriter {
|
|
|
539
539
|
const conditions = [];
|
|
540
540
|
let filterQueryStringSelector = '';
|
|
541
541
|
let filterQueryStringAdvancedFilters = '';
|
|
542
|
-
if (ogcFilters.enabled && (ogcFilters.pushButtons || ogcFilters.checkboxes || ogcFilters.radioButtons || ogcFilters.select
|
|
542
|
+
if (ogcFilters.enabled && (ogcFilters.pushButtons || ogcFilters.checkboxes || ogcFilters.radioButtons || ogcFilters.select
|
|
543
|
+
|| ogcFilters.autocomplete)) {
|
|
543
544
|
let selectors;
|
|
544
545
|
if (ogcFilters.pushButtons) {
|
|
545
546
|
selectors = ogcFilters.pushButtons;
|
|
@@ -571,6 +572,13 @@ export class OgcFilterWriter {
|
|
|
571
572
|
conditions.push(condition);
|
|
572
573
|
}
|
|
573
574
|
}
|
|
575
|
+
if (ogcFilters.autocomplete) {
|
|
576
|
+
selectors = ogcFilters.autocomplete;
|
|
577
|
+
const selectConditions = this.formatGroupAndFilter(ogcFilters, selectors);
|
|
578
|
+
for (const condition of selectConditions) {
|
|
579
|
+
conditions.push(condition);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
574
582
|
if (conditions.length >= 1) {
|
|
575
583
|
filterQueryStringSelector = this.buildFilter(conditions.length === 1
|
|
576
584
|
? conditions[0]
|
|
@@ -595,7 +603,7 @@ export class OgcFilterWriter {
|
|
|
595
603
|
}
|
|
596
604
|
verifyMultipleEnableds(selectors) {
|
|
597
605
|
selectors.bundles.forEach(bundle => {
|
|
598
|
-
if (!bundle.multiple) {
|
|
606
|
+
if (!bundle.multiple && bundle.selectors) {
|
|
599
607
|
const enableds = bundle.selectors.reduce((list, filter, index) => (filter.enabled) === true ? list.concat(index) : list, []);
|
|
600
608
|
if (enableds.length > 1) {
|
|
601
609
|
enableds.splice(0, 1);
|
|
@@ -642,6 +650,9 @@ export class OgcFilterWriter {
|
|
|
642
650
|
else if (selectors.selectorType === 'select') {
|
|
643
651
|
ogcFilters.select = selectors;
|
|
644
652
|
}
|
|
653
|
+
else if (selectors.selectorType === 'autocomplete') {
|
|
654
|
+
ogcFilters.autocomplete = selectors;
|
|
655
|
+
}
|
|
645
656
|
return conditions;
|
|
646
657
|
}
|
|
647
658
|
formatProcessedOgcFilter(processedFilter, layersOrTypenames) {
|
|
@@ -679,4 +690,4 @@ export class OgcFilterWriter {
|
|
|
679
690
|
}
|
|
680
691
|
}
|
|
681
692
|
}
|
|
682
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBS3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUV2QixNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLG1CQUFjLEdBQWdDLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQUc7WUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsRUFBRTthQUNsQjtZQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLEVBQUU7YUFDbEI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLGNBQXdCLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQzFCO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDMUI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3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Z0JBQWdCLEVBQUUsRUFBRTtnQkFDeEQsYUFBYSxHQUFHLEdBQUcsYUFBYSxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQ3pELFNBQVMsRUFDVCxFQUFFLENBQ0gsR0FBRyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FDZixhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDL0QsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEZvcm1hdFdLVCBmcm9tICdvbC9mb3JtYXQvV0tUJztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyB1dWlkLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgT2djRmlsdGVyLFxuICBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gIE9nY0ZpbHRlcnNPcHRpb25zLFxuICBJZ29PZ2NTZWxlY3RvcixcbiAgU2VsZWN0b3JHcm91cCxcbiAgT2djU2VsZWN0b3JCdW5kbGVcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUsIE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHsgU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgJiYgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8IG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXNcbiAgICAgIHx8IG9nY0ZpbHRlcnNPcHRpb25zLnJhZGlvQnV0dG9ucyB8fCBvZ2NGaWx0ZXJzT3B0aW9ucy5zZWxlY3QpKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gICAgcHJvaj86IG9sUHJvamVjdGlvbixcbiAgICBmaWVsZE5hbWVHZW9tZXRyeT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG91ckJib3hGaWx0ZXI7XG4gICAgbGV0IGVuYWJsZUJib3g6IGJvb2xlYW47XG4gICAgaWYgKC9pbnRlcnNlY3RzfGNvbnRhaW5zfHdpdGhpbi9naS50ZXN0KEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKSkge1xuICAgICAgZW5hYmxlQmJveCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmFibGVCYm94ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGZpZWxkTmFtZUdlb21ldHJ5ID1cbiAgICAgICAgKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWVcbiAgICAgICAgICA6IGZpZWxkTmFtZUdlb21ldHJ5O1xuICAgIH1cbiAgICBpZiAoZXh0ZW50ICYmIGZpbHRlcnMpIHtcbiAgICAgIG91ckJib3hGaWx0ZXIgPSBvbGZpbHRlci5iYm94KGZpZWxkTmFtZUdlb21ldHJ5LCBleHRlbnQsIHByb2ouZ2V0Q29kZSgpKTtcbiAgICB9XG4gICAgbGV0IGZpbHRlckFzc2VtYmx5OiBPZ2NGaWx0ZXI7XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGZpbHRlcnMgPSB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICBwcm9qXG4gICAgICApO1xuICAgICAgaWYgKGV4dGVudCAmJiBlbmFibGVCYm94KSB7XG4gICAgICAgIGZpbHRlckFzc2VtYmx5ID0gb2xmaWx0ZXIuYW5kKFxuICAgICAgICAgIG91ckJib3hGaWx0ZXIsXG4gICAgICAgICAgdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVycywgb3B0aW9ucylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlckFzc2VtYmx5ID0gdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYmJveD0nICsgZXh0ZW50LmpvaW4oJywnKSArICcsJyArIHByb2ouZ2V0Q29kZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHdmc09wdGlvbnM6IFdyaXRlR2V0RmVhdHVyZU9wdGlvbnMgPSB7XG4gICAgICBzcnNOYW1lOiAnJyxcbiAgICAgIGZlYXR1cmVOUzogJycsXG4gICAgICBmZWF0dXJlUHJlZml4OiAnJyxcbiAgICAgIGZlYXR1cmVUeXBlczogWydmZWF0dXJlVHlwZXMnXSxcbiAgICAgIGZpbHRlcjogZmlsdGVyQXNzZW1ibHksXG4gICAgICBvdXRwdXRGb3JtYXQ6ICcnLFxuICAgICAgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeVxuICAgIH07XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBvbEZvcm1hdFdGUygpLndyaXRlR2V0RmVhdHVyZSh3ZnNPcHRpb25zKTtcbiAgICBjb25zdCBzdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHF1ZXJ5KTtcbiAgICBjb25zdCByZWdleHAxID0gL3R5cGVuYW1lcyAqPXx0eXBlbmFtZSAqPVxcXCJmZWF0dXJlVHlwZXNcXFwiICo+L2dpO1xuICAgIGNvbnN0IHJlZ2V4cDIgPSAvPFxcL1F1ZXJ5PjxcXC9HZXRGZWF0dXJlPi9naTtcblxuICAgIHJldHVybiAnZmlsdGVyPScgKyBzdHIuc3BsaXQocmVnZXhwMSlbMV0uc3BsaXQocmVnZXhwMilbMF07XG4gIH1cblxuICBwcml2YXRlIGJ1bmRsZUZpbHRlcihcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICkge1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgbG9naWNhbEFycmF5ID0gW107XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBsb2dpY2FsQXJyYXkucHVzaCh0aGlzLmJ1bmRsZUZpbHRlcihlbGVtZW50LCBvcHRpb25zKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsb2dpY2FsQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgbG9naWNhbEFycmF5OiB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJPYmplY3QuZmlsdGVycywgb3B0aW9ucylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcbiAgICAgICAgICBmaWx0ZXJPYmplY3QgYXMgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyKFxuICAgIGZpbHRlck9wdGlvbnMsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBPZ2NGaWx0ZXIge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyT3B0aW9ucy5vcGVyYXRvcjtcbiAgICBjb25zdCBsb2dpY2FsQXJyYXkgPSBmaWx0ZXJPcHRpb25zLmxvZ2ljYWxBcnJheTtcblxuICAgIGNvbnN0IHdmc1Byb3BlcnR5TmFtZSA9IGZpbHRlck9wdGlvbnMucHJvcGVydHlOYW1lO1xuICAgIGNvbnN0IHdmc1BhdHRlcm4gPSBmaWx0ZXJPcHRpb25zLnBhdHRlcm47XG4gICAgY29uc3Qgd2ZzTWF0Y2hDYXNlID0gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgIDogdHJ1ZTtcbiAgICBjb25zdCB3ZnNXaWxkQ2FyZCA9IGZpbHRlck9wdGlvbnMud2lsZENhcmQgPyBmaWx0ZXJPcHRpb25zLndpbGRDYXJkIDogJyonO1xuICAgIGNvbnN0IHdmc1NpbmdsZUNoYXIgPSBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA6ICcuJztcbiAgICBjb25zdCB3ZnNFc2NhcGVDaGFyID0gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgOiAnISc7XG5cbiAgICBjb25zdCB3ZnNMb3dlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy5sb3dlckJvdW5kYXJ5O1xuICAgIGNvbnN0IHdmc1VwcGVyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLnVwcGVyQm91bmRhcnk7XG5cbiAgICBjb25zdCB3ZnNHZW9tZXRyeU5hbWUgPSBmaWx0ZXJPcHRpb25zLmdlb21ldHJ5TmFtZTtcbiAgICBjb25zdCB3ZnNFeHRlbnQgPSBmaWx0ZXJPcHRpb25zLmV4dGVudDtcbiAgICBjb25zdCB3ZnNXa3RHZW9tZXRyeSA9IGZpbHRlck9wdGlvbnMud2t0X2dlb21ldHJ5O1xuICAgIGNvbnN0IHdmc1Nyc05hbWUgPSBmaWx0ZXJPcHRpb25zLnNyc05hbWVcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA6ICdFUFNHOjM4NTcnO1xuXG4gICAgY29uc3Qgd2ZzQmVnaW4gPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuYmVnaW4sXG4gICAgICBvcHRpb25zID8gb3B0aW9ucy5taW5EYXRlIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICBjb25zdCB3ZnNFbmQgPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuZW5kLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWF4RGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICBjb25zdCB3ZnNFeHByZXNzaW9uID0gZmlsdGVyT3B0aW9ucy5leHByZXNzaW9uO1xuXG4gICAgbGV0IGdlb21ldHJ5OiBvbEdlb21ldHJ5O1xuICAgIGlmICh3ZnNXa3RHZW9tZXRyeSkge1xuICAgICAgY29uc3Qgd2t0ID0gbmV3IG9sRm9ybWF0V0tUKCk7XG4gICAgICBnZW9tZXRyeSA9IHdrdC5yZWFkR2VvbWV0cnkod2ZzV2t0R2VvbWV0cnksIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb246IHdmc1Nyc05hbWUsXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lIHx8ICdFUFNHOjM4NTcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG9wZXJhdG9yLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQkJPWC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmJveCh3ZnNHZW9tZXRyeU5hbWUsIHdmc0V4dGVudCwgd2ZzU3JzTmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNCZXR3ZWVuLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5iZXR3ZWVuKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNMb3dlckJvdW5kYXJ5LFxuICAgICAgICAgIHdmc1VwcGVyQm91bmRhcnlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQ29udGFpbnMudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmNvbnRhaW5zKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmR1cmluZyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0JlZ2luLCB3ZnNFbmQpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24sIHdmc01hdGNoQ2FzZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pbnRlcnNlY3RzKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTnVsbC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaXNOdWxsKHdmc1Byb3BlcnR5TmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGlrZShcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhciksXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9yczoge30gPSB7fTtcbiAgICBsZXQgYWxsb3dlZE9wZXJhdG9ycztcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xuICAgIGxldCBpbmNsdWRlQ29udGFpbnM6IGJvb2xlYW47XG5cbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3Qgc3JjRmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XG4gICAgICBhbGxvd2VkT3BlcmF0b3JzID1cbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA/IHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgOiBkZWZhdWx0T3BlcmF0b3JzVHlwZTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcGVyYXRvcnNUeXBlID0gZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWwudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGluY2x1ZGVDb250YWlucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvd2VkT3BlcmF0b3JzID0gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgPyBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XG5cbiAgICBzd2l0Y2ggKGFsbG93ZWRPcGVyYXRvcnMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpYzpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuVGltZTpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNOdW1lcmljT3BlcmF0b3I6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcikge1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XG4gICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICB9O1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLldpdGhpbiA9IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfTtcbiAgICAgIGlmIChpbmNsdWRlQ29udGFpbnMpIHtcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xuICAgICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWZmZWN0aXZlT3BlcmF0b3JzO1xuICB9XG5cbiAgcHVibGljIGFkZEludGVyZmFjZUZpbHRlcihcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q/LFxuICAgIGdlb21ldHJ5TmFtZT8sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHBhcmVudExvZ2ljYWwgPSAnT3InXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICAgIGlmICghaWdvT2djRmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QgPSB7IG9wZXJhdG9yOiAnUHJvcGVydHlJc0VxdWFsVG8nIH07XG4gICAgfVxuICAgIGNvbnN0IGYgPSB7XG4gICAgICBwcm9wZXJ0eU5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgYWN0aXZlOiAnJyxcbiAgICAgIGZpbHRlcmlkOiB1dWlkKCksXG4gICAgICBzdGVwOiAnJyxcbiAgICAgIGJlZ2luOiAnJyxcbiAgICAgIGVuZDogJycsXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcbiAgICAgIGxvd2VyQm91bmRhcnk6ICcnLFxuICAgICAgdXBwZXJCb3VuZGFyeTogJycsXG4gICAgICBleHByZXNzaW9uOiAnJyxcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgd2lsZENhcmQ6ICcqJyxcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcbiAgICAgIGVzY2FwZUNoYXI6ICchJyxcbiAgICAgIG1hdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXG4gICAgICBpZ29TTlJDOiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogJycsXG4gICAgICBnZW9tZXRyeTogJycsXG4gICAgICB3a3RfZ2VvbWV0cnk6ICcnLFxuICAgICAgZXh0ZW50OiAnJyxcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgcGFyZW50TG9naWNhbDogJycsXG4gICAgICBsZXZlbDogMFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGYsXG4gICAgICB7XG4gICAgICAgIHBhcmVudExvZ2ljYWwsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBnZW9tZXRyeU5hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlckFycmF5ID0gW107XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBmaWx0ZXJBcnJheS5wdXNoKFxuICAgICAgICAgIHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWw6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcbiAgICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBhY3RpdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0OiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuZmlsdGVyaWRcbiAgICAgIDogdXVpZCgpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmFjdGl2ZVxuICAgICAgOiBhY3RpdmU7XG5cbiAgICBjb25zdCBzcnNOYW1lID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdzcnNOYW1lJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LnNyc05hbWVcbiAgICAgIDogcHJvalxuICAgICAgPyBwcm9qLmdldENvZGUoKVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGZpbHRlcmlkLFxuICAgICAgICBhY3RpdmU6IHN0YXR1cyxcbiAgICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnZml4ZWRFeHRlbnQnLFxuICAgICAgICBzcnNOYW1lXG4gICAgICB9LFxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0LFxuICAgICAgeyBnZW9tZXRyeU5hbWU6IGZpZWxkTmFtZUdlb21ldHJ5IH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlYnVpbHRJZ29PZ2NGaWx0ZXJPYmplY3RGcm9tU2VxdWVuY2UoXG4gICAgc2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXVxuICApOiBJZ29PZ2NGaWx0ZXJPYmplY3Qge1xuICAgIGlmIChzZXF1ZW5jZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID49IDEpIHtcbiAgICAgICAgbGV0IGxhc3RQYXJlbnRMb2dpY2FsID0gc2VxdWVuY2VbMF0ucGFyZW50TG9naWNhbDtcbiAgICAgICAgbGV0IG5leHRFbGVtZW50OiBhbnk7XG4gICAgICAgIGxldCBsb2dpY2FsQXJyYXkgPSBbXTtcbiAgICAgICAgbGV0IGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICAgIHNlcXVlbmNlLmZvckVhY2goKHVpRmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVpRmlsdGVyKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHNlcXVlbmNlLmluZGV4T2YodWlGaWx0ZXIpO1xuICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgc2VxdWVuY2UubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBzZXF1ZW5jZVtpbmRleCArIDFdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LmFjdGl2ZTtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5maWx0ZXJpZDtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgIGxvZ2ljYWxBcnJheS5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXN0UGFyZW50TG9naWNhbCAhPT0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbCkge1xuICAgICAgICAgICAgaWYgKGxvZ2ljYWxBcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgJ1lvdSBtdXN0IHNldCBhdCAnICtcbiAgICAgICAgICAgICAgICAgICdsZWFzdCB0d28gb3BlcmF0b3IgaW4gYSBsb2dpY2FsICgnICtcbiAgICAgICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsICtcbiAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgeyBsb2dpY2FsOiBsYXN0UGFyZW50TG9naWNhbCwgZmlsdGVyczogbG9naWNhbEFycmF5IH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgbG9naWNhbEFycmF5ID0gW2xhc3RQcm9jZXNzZWRGaWx0ZXJdO1xuICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCA9IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9yczogSWdvT2djU2VsZWN0b3IpOiBJZ29PZ2NTZWxlY3RvciB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0b3JzLmdyb3Vwcy5ldmVyeSgoZ3JvdXApID0+IGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3JzO1xuICAgIH1cbiAgICBsZXQgc2VsZWN0b3I6IElnb09nY1NlbGVjdG9yO1xuICAgIGlmIChzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XG4gICAgICBpZiAoIXNlbGVjdG9ycy5idW5kbGVzLmV2ZXJ5KChidW5kbGUpID0+IGJ1bmRsZS5pZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1lvdSBtdXN0IHNldCBhbiBpZCBmb3IgZWFjaCBvZiB5b3VyIGJ1bmRsZXMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAudGl0bGUgPSBncm91cC50aXRsZSA/IGdyb3VwLnRpdGxlIDogZ3JvdXAubmFtZTtcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgc2VsZWN0b3IuYnVuZGxlcy5maWx0ZXIoKGIpID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhiLmlkKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIXNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3IuYnVuZGxlcylcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcbiAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICAgICAgKSBhcyBPZ2NTZWxlY3RvckJ1bmRsZVtdXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICAgIF0sXG4gICAgICAgIHNlbGVjdG9yVHlwZTogc2VsZWN0b3Iuc2VsZWN0b3JUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXNlbGVjdG9yLmdyb3Vwcy5maW5kKChzZWxlY3Rvckdyb3VwKSA9PiBzZWxlY3Rvckdyb3VwLmVuYWJsZWQpKSB7XG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICAgIHByb2o/OiBvbFByb2plY3Rpb25cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBvZ2NGaWx0ZXJzID0gb3B0aW9ucy5vZ2NGaWx0ZXJzO1xuICAgIGlmICghb2djRmlsdGVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3IgPSAnJztcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSAnJztcbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8IG9nY0ZpbHRlcnMuY2hlY2tib3hlcyB8fCBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyB8fCBvZ2NGaWx0ZXJzLnNlbGVjdCkpIHtcbiAgICAgIGxldCBzZWxlY3RvcnM7XG4gICAgICBpZiAob2djRmlsdGVycy5wdXNoQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zO1xuICAgICAgICBjb25zdCBwdXNoQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcHVzaENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuY2hlY2tib3hlcykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXM7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY2hlY2tib3hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucztcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCByYWRpb0NvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9yc0NvcnIpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiByYWRpb0NvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuc2VsZWN0KSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuc2VsZWN0O1xuICAgICAgICBjb25zdCBzZWxlY3RvcnNDb3JyID0gdGhpcy52ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9yc0NvcnIpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgICAgY29uZGl0aW9ucy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gY29uZGl0aW9uc1swXVxuICAgICAgICAgICAgOiB7IGxvZ2ljYWw6ICdBbmQnLCBmaWx0ZXJzOiBjb25kaXRpb25zIH0sXG4gICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgIHByb2osXG4gICAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnMuZW5hYmxlZCAmJiBvZ2NGaWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lID0gb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgfHwgZmllbGROYW1lR2VvbWV0cnk7XG4gICAgICBjb25zdCBpZ29GaWx0ZXJzID0gb2djRmlsdGVycy5maWx0ZXJzO1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSB0aGlzLmJ1aWxkRmlsdGVyKFxuICAgICAgICBpZ29GaWx0ZXJzLFxuICAgICAgICBleHRlbnQsXG4gICAgICAgIHByb2osXG4gICAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZyA9IG9nY0ZpbHRlcnMuYWR2YW5jZWRPZ2NGaWx0ZXJzXG4gICAgICA/IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzXG4gICAgICA6IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3I7XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5MQVlFUlNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZyxcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5wYXJhbXMuZmVhdHVyZVR5cGVzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJRdWVyeVN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyB2ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycy5idW5kbGVzLmZvckVhY2goYnVuZGxlID0+IHtcbiAgICAgIGlmICghYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRzID0gYnVuZGxlLnNlbGVjdG9ycy5yZWR1Y2UoKGxpc3QsIGZpbHRlciwgaW5kZXgpID0+IChmaWx0ZXIuZW5hYmxlZCkgPT09IHRydWUgPyBsaXN0LmNvbmNhdChpbmRleCkgOiBsaXN0LCBbXSk7XG4gICAgICAgIGlmIChlbmFibGVkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZW5hYmxlZHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgIGVuYWJsZWRzLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgICAgICAgYnVuZGxlLnNlbGVjdG9yc1tpbmRleF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzOiBPZ2NGaWx0ZXJzT3B0aW9ucywgc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzID0gdGhpcy5jb21wdXRlSWdvU2VsZWN0b3IoXG4gICAgICBzZWxlY3RvcnNcbiAgICApO1xuICAgIGNvbnN0IHNlbGVjdG9yQnVuZGxlID0gc2VsZWN0b3JzLmdyb3Vwcy5maW5kKFxuICAgICAgKGcpID0+IGcuZW5hYmxlZFxuICAgICkuY29tcHV0ZWRTZWxlY3RvcnM7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIHNlbGVjdG9yQnVuZGxlLm1hcCgoYnVuZGxlKSA9PiB7XG4gICAgICBjb25zdCBidW5kbGVDb25kaXRpb24gPSBbXTtcbiAgICAgIGNvbnN0IHNlbGVjdG9yc1R5cGUgPSBidW5kbGUuc2VsZWN0b3JzIGFzIGFueTtcbiAgICAgIGlmICghc2VsZWN0b3JzVHlwZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZWxlY3RvcnNUeXBlXG4gICAgICAgIC5maWx0ZXIoKG9nY3NlbGVjdG9yKSA9PiBvZ2NzZWxlY3Rvci5lbmFibGVkID09PSB0cnVlKVxuICAgICAgICAuZm9yRWFjaCgoZW5hYmxlZFNlbGVjdG9yKSA9PiBidW5kbGVDb25kaXRpb24ucHVzaChlbmFibGVkU2VsZWN0b3IuZmlsdGVycykpO1xuICAgICAgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGJ1bmRsZUNvbmRpdGlvblswXSk7XG4gICAgICB9IGVsc2UgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgbG9naWNhbDogYnVuZGxlLmxvZ2ljYWwsXG4gICAgICAgICAgZmlsdGVyczogYnVuZGxlQ29uZGl0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdwdXNoQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5wdXNoQnV0dG9ucyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdyYWRpb0J1dHRvbicpIHtcbiAgICAgIG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuc2VsZWN0ID0gc2VsZWN0b3JzO1xuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgcHJvY2Vzc2VkRmlsdGVyOiBzdHJpbmcsXG4gICAgbGF5ZXJzT3JUeXBlbmFtZXM6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXIpIHtyZXR1cm4gdW5kZWZpbmVkO307XG4gICAgbGV0IGFwcGxpZWRGaWx0ZXIgPSAnJztcbiAgICBpZiAocHJvY2Vzc2VkRmlsdGVyLmxlbmd0aCA9PT0gMCAmJiBsYXllcnNPclR5cGVuYW1lcy5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICBhcHBsaWVkRmlsdGVyID0gcHJvY2Vzc2VkRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXllcnNPclR5cGVuYW1lcy5zcGxpdCgnLCcpLmZvckVhY2goKGxheWVyT3JUeXBlbmFtZXMpID0+IHtcbiAgICAgICAgYXBwbGllZEZpbHRlciA9IGAke2FwcGxpZWRGaWx0ZXJ9KCR7cHJvY2Vzc2VkRmlsdGVyLnJlcGxhY2UoXG4gICAgICAgICAgJ2ZpbHRlcj0nLFxuICAgICAgICAgICcnXG4gICAgICAgICl9KWA7XG4gICAgICB9KTtcbiAgICB9XG4gICAgYXBwbGllZEZpbHRlciA9IGFwcGxpZWRGaWx0ZXIucmVwbGFjZSgvXFwoXFwpL2csICcnKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9XG4gICAgICBhcHBsaWVkRmlsdGVyLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoJ2ZpbHRlcj0nLCAnJylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlO1xuICB9XG5cbiAgcHVibGljIHBhcnNlRmlsdGVyT3B0aW9uRGF0ZSh2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ3RvZGF5Jykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
693
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBS3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUV2QixNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLG1CQUFjLEdBQWdDLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQUc7WUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsRUFBRTthQUNsQjtZQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLEVBQUU7YUFDbEI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLGNBQXdCLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQzFCO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDMUI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3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LE9BQU8sRUFBRTtZQUM1QixPQUFPLFNBQVMsQ0FBQztTQUNsQjthQUFNLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb2xmaWx0ZXIgZnJvbSAnb2wvZm9ybWF0L2ZpbHRlcic7XHJcbmltcG9ydCBvbEZvcm1hdFdLVCBmcm9tICdvbC9mb3JtYXQvV0tUJztcclxuaW1wb3J0IG9sRm9ybWF0V0ZTLCB7IFdyaXRlR2V0RmVhdHVyZU9wdGlvbnMgfSBmcm9tICdvbC9mb3JtYXQvV0ZTJztcclxuaW1wb3J0IG9sR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcblxyXG5pbXBvcnQgb2xQcm9qZWN0aW9uIGZyb20gJ29sL3Byb2ovUHJvamVjdGlvbic7XHJcblxyXG5pbXBvcnQgeyB1dWlkLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgT2djRmlsdGVyLFxyXG4gIElnb09nY0ZpbHRlck9iamVjdCxcclxuICBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucyxcclxuICBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcclxuICBJZ29PZ2NTZWxlY3RvcixcclxuICBTZWxlY3Rvckdyb3VwLFxyXG4gIE9nY1NlbGVjdG9yQnVuZGxlXHJcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yVHlwZSwgT2djRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuL29nYy1maWx0ZXIuZW51bSc7XHJcbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuXHJcbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xyXG4gIHByaXZhdGUgZmlsdGVyU2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcGVyYXRvcnMgPSB7XHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgIH0sXHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgIH0sXHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UgYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydzdHJpbmcnXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2VlbiBhcyBzdHJpbmddOiB7XHJcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXHJcbiAgICB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZyBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcclxuICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHMgYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiB0cnVlLFxyXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4gYXMgc3RyaW5nXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxyXG4gIH07XHJcblxyXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zOiBPZ2NGaWx0ZXJzT3B0aW9ucyxcclxuICAgIGZpZWxkTmFtZUdlb21ldHJ5OiBzdHJpbmcsXHJcbiAgICBzcmNUeXBlPzogc3RyaW5nXHJcbiAgKTogT2djRmlsdGVyc09wdGlvbnMge1xyXG4gICAgbGV0IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSB0cnVlOyAvLyBkZWZhdWx0IHZhbHVlcyBmb3Igd2ZzLlxyXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcclxuICAgICAgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zID0gb2djRmlsdGVyc09wdGlvbnMgfHwge307XHJcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lbmFibGVkID1cclxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlXHJcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lbmFibGVkO1xyXG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxyXG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZSA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlXHJcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmdlb21ldHJ5TmFtZSA9IGZpZWxkTmFtZUdlb21ldHJ5O1xyXG5cclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XHJcbiAgICBpZiAob2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJiAob2djRmlsdGVyc09wdGlvbnMucHVzaEJ1dHRvbnMgfHwgb2djRmlsdGVyc09wdGlvbnMuY2hlY2tib3hlc1xyXG4gICAgICB8fCBvZ2NGaWx0ZXJzT3B0aW9ucy5yYWRpb0J1dHRvbnMgfHwgb2djRmlsdGVyc09wdGlvbnMuc2VsZWN0IHx8IG9nY0ZpbHRlcnNPcHRpb25zLmF1dG9jb21wbGV0ZSkpIHtcclxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuYWR2YW5jZWRPZ2NGaWx0ZXJzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2djRmlsdGVyc09wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYnVpbGRGaWx0ZXIoXHJcbiAgICBmaWx0ZXJzPzogSWdvT2djRmlsdGVyT2JqZWN0LFxyXG4gICAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXHJcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uLFxyXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGxldCBvdXJCYm94RmlsdGVyO1xyXG4gICAgbGV0IGVuYWJsZUJib3g6IGJvb2xlYW47XHJcbiAgICBpZiAoL2ludGVyc2VjdHN8Y29udGFpbnN8d2l0aGluL2dpLnRlc3QoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpKSB7XHJcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVuYWJsZUJib3ggPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlcnMpIHtcclxuICAgICAgZmllbGROYW1lR2VvbWV0cnkgPVxyXG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgID8gKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWVcclxuICAgICAgICAgIDogZmllbGROYW1lR2VvbWV0cnk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXh0ZW50ICYmIGZpbHRlcnMpIHtcclxuICAgICAgb3VyQmJveEZpbHRlciA9IG9sZmlsdGVyLmJib3goZmllbGROYW1lR2VvbWV0cnksIGV4dGVudCwgcHJvai5nZXRDb2RlKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbHRlckFzc2VtYmx5OiBPZ2NGaWx0ZXI7XHJcbiAgICBpZiAoZmlsdGVycykge1xyXG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgcHJvalxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZXh0ZW50ICYmIGVuYWJsZUJib3gpIHtcclxuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcclxuICAgICAgICAgIG91ckJib3hGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsdGVyQXNzZW1ibHkgPSB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdiYm94PScgKyBleHRlbnQuam9pbignLCcpICsgJywnICsgcHJvai5nZXRDb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgd2ZzT3B0aW9uczogV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyA9IHtcclxuICAgICAgc3JzTmFtZTogJycsXHJcbiAgICAgIGZlYXR1cmVOUzogJycsXHJcbiAgICAgIGZlYXR1cmVQcmVmaXg6ICcnLFxyXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyQXNzZW1ibHksXHJcbiAgICAgIG91dHB1dEZvcm1hdDogJycsXHJcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHF1ZXJ5KTtcclxuICAgIGNvbnN0IHJlZ2V4cDEgPSAvdHlwZW5hbWVzICo9fHR5cGVuYW1lICo9XFxcImZlYXR1cmVUeXBlc1xcXCIgKj4vZ2k7XHJcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XHJcblxyXG4gICAgcmV0dXJuICdmaWx0ZXI9JyArIHN0ci5zcGxpdChyZWdleHAxKVsxXS5zcGxpdChyZWdleHAyKVswXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVuZGxlRmlsdGVyKFxyXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgY29uc3QgbG9naWNhbEFycmF5ID0gW107XHJcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGxvZ2ljYWxBcnJheTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxyXG4gICAgICAgICAgICBsb2dpY2FsQXJyYXk6IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlck9iamVjdC5maWx0ZXJzLCBvcHRpb25zKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcclxuICAgICAgICAgIGZpbHRlck9iamVjdCBhcyBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucyxcclxuICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcclxuICAgIGZpbHRlck9wdGlvbnMsXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKTogT2djRmlsdGVyIHtcclxuICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyT3B0aW9ucy5vcGVyYXRvcjtcclxuICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IGZpbHRlck9wdGlvbnMubG9naWNhbEFycmF5O1xyXG5cclxuICAgIGNvbnN0IHdmc1Byb3BlcnR5TmFtZSA9IGZpbHRlck9wdGlvbnMucHJvcGVydHlOYW1lO1xyXG4gICAgY29uc3Qgd2ZzUGF0dGVybiA9IGZpbHRlck9wdGlvbnMucGF0dGVybjtcclxuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXHJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcclxuICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcclxuICAgIGNvbnN0IHdmc1NpbmdsZUNoYXIgPSBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcclxuICAgICAgOiAnLic7XHJcbiAgICBjb25zdCB3ZnNFc2NhcGVDaGFyID0gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXHJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXHJcbiAgICAgIDogJyEnO1xyXG5cclxuICAgIGNvbnN0IHdmc0xvd2VyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLmxvd2VyQm91bmRhcnk7XHJcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xyXG5cclxuICAgIGNvbnN0IHdmc0dlb21ldHJ5TmFtZSA9IGZpbHRlck9wdGlvbnMuZ2VvbWV0cnlOYW1lO1xyXG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XHJcbiAgICBjb25zdCB3ZnNXa3RHZW9tZXRyeSA9IGZpbHRlck9wdGlvbnMud2t0X2dlb21ldHJ5O1xyXG4gICAgY29uc3Qgd2ZzU3JzTmFtZSA9IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxyXG4gICAgICA6ICdFUFNHOjM4NTcnO1xyXG5cclxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXHJcbiAgICAgIGZpbHRlck9wdGlvbnMuYmVnaW4sXHJcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1pbkRhdGUgOiB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBjb25zdCB3ZnNFbmQgPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcclxuICAgICAgZmlsdGVyT3B0aW9ucy5lbmQsXHJcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcclxuXHJcbiAgICBsZXQgZ2VvbWV0cnk6IG9sR2VvbWV0cnk7XHJcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcclxuICAgICAgY29uc3Qgd2t0ID0gbmV3IG9sRm9ybWF0V0tUKCk7XHJcbiAgICAgIGdlb21ldHJ5ID0gd2t0LnJlYWRHZW9tZXRyeSh3ZnNXa3RHZW9tZXRyeSwge1xyXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxyXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lIHx8ICdFUFNHOjM4NTcnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAob3BlcmF0b3IudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmJveCh3ZnNHZW9tZXRyeU5hbWUsIHdmc0V4dGVudCwgd2ZzU3JzTmFtZSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcclxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcclxuICAgICAgICAgIHdmc0xvd2VyQm91bmRhcnkgfHwgMWU0MCotMSxcclxuICAgICAgICAgIHdmc1VwcGVyQm91bmRhcnkgfHwgMWU0MFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQ29udGFpbnMudG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuY29udGFpbnMod2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmR1cmluZyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0JlZ2luLCB3ZnNFbmQpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uLCB3ZnNNYXRjaENhc2UpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbi50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbih3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHMudG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaW50ZXJzZWN0cyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTnVsbC50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pc051bGwod2ZzUHJvcGVydHlOYW1lKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZS50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5saWtlKFxyXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgd2ZzUGF0dGVybiA/IHdmc1BhdHRlcm4ucmVwbGFjZSgvWygpX10vZ2ksIHdmc1NpbmdsZUNoYXIpOiB3ZnNXaWxkQ2FyZCxcclxuICAgICAgICAgIHdmc1dpbGRDYXJkLFxyXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcclxuICAgICAgICAgIHdmc0VzY2FwZUNoYXIsXHJcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdEVxdWFsVG8oXHJcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICB3ZnNFeHByZXNzaW9uLFxyXG4gICAgICAgICAgd2ZzTWF0Y2hDYXNlXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIud2l0aGluKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xyXG4gICAgICAvLyBMT0dJQ0FMXHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQW5kLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmFuZC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm9yLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuTm90LnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxyXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXHJcbiAgICBnZW9tZXRyeU5hbWUsXHJcbiAgICBsb2dpY2FsID0gJycsXHJcbiAgICBsZXZlbCA9IC0xXHJcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcclxuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxyXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcclxuICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxyXG4gICAgICAgICAgICBsb2dpY2FsLFxyXG4gICAgICAgICAgICBsZXZlbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XHJcbiAgICAgICAgbGV2ZWwgPSBsZXZlbCArIDE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXHJcbiAgICAgICAgICB0aGlzLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxyXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcclxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxyXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QubG9naWNhbCxcclxuICAgICAgICAgICAgbGV2ZWxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcclxuICAgICAgICAgIHRoaXMuYWRkSW50ZXJmYWNlRmlsdGVyKGZpbHRlck9iamVjdCwgZ2VvbWV0cnlOYW1lLCBsZXZlbCwgbG9naWNhbClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXF1ZW5jZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wdXRlQWxsb3dlZE9wZXJhdG9ycyhcclxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcclxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZyxcclxuICAgIGRlZmF1bHRPcGVyYXRvcnNUeXBlPzogT2djRmlsdGVyT3BlcmF0b3JUeXBlXHJcbiAgKSB7XHJcbiAgICBsZXQgZWZmZWN0aXZlT3BlcmF0b3JzOiB7fSA9IHt9O1xyXG4gICAgbGV0IGFsbG93ZWRPcGVyYXRvcnM7XHJcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xyXG4gICAgbGV0IGluY2x1ZGVDb250YWluczogYm9vbGVhbjtcclxuXHJcbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xyXG4gICAgICBjb25zdCBzcmNGaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlOYW1lKTtcclxuICAgICAgYWxsb3dlZE9wZXJhdG9ycyA9XHJcbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcclxuICAgICAgICAgID8gc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcclxuICAgICAgICAgIDogZGVmYXVsdE9wZXJhdG9yc1R5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkcykge1xyXG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICghZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPSBmaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxyXG4gICAgICAgICAgICBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuU3BhdGlhbC50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cclxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT0gT2djRmlsdGVyT3BlcmF0b3JUeXBlLkFsbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaW5jbHVkZUNvbnRhaW5zID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFsbG93ZWRPcGVyYXRvcnMgPSBhbGxvd2VkT3BlcmF0b3JzXHJcbiAgICAgID8gYWxsb3dlZE9wZXJhdG9yc1xyXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XHJcblxyXG4gICAgc3dpdGNoIChhbGxvd2VkT3BlcmF0b3JzLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHRoaXMub3BlcmF0b3JzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcclxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWM6XHJcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlRpbWU6XHJcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY051bWVyaWNPcGVyYXRvcjpcclxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbl06IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IpIHtcclxuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XHJcbiAgICAgICAgc3BhdGlhbDogdHJ1ZSxcclxuICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICB9O1xyXG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuV2l0aGluID0geyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9O1xyXG4gICAgICBpZiAoaW5jbHVkZUNvbnRhaW5zKSB7XHJcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xyXG4gICAgICAgICAgc3BhdGlhbDogdHJ1ZSxcclxuICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlZmZlY3RpdmVPcGVyYXRvcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSW50ZXJmYWNlRmlsdGVyKFxyXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0PyxcclxuICAgIGdlb21ldHJ5TmFtZT8sXHJcbiAgICBsZXZlbCA9IDAsXHJcbiAgICBwYXJlbnRMb2dpY2FsID0gJ09yJ1xyXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xyXG4gICAgaWYgKCFpZ29PZ2NGaWx0ZXJPYmplY3QpIHtcclxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0ID0geyBvcGVyYXRvcjogJ1Byb3BlcnR5SXNFcXVhbFRvJyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZiA9IHtcclxuICAgICAgcHJvcGVydHlOYW1lOiAnJyxcclxuICAgICAgb3BlcmF0b3I6ICcnLFxyXG4gICAgICBhY3RpdmU6ICcnLFxyXG4gICAgICBmaWx0ZXJpZDogdXVpZCgpLFxyXG4gICAgICBzdGVwOiAnJyxcclxuICAgICAgYmVnaW46ICcnLFxyXG4gICAgICBlbmQ6ICcnLFxyXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcclxuICAgICAgbG93ZXJCb3VuZGFyeTogJycsXHJcbiAgICAgIHVwcGVyQm91bmRhcnk6ICcnLFxyXG4gICAgICBleHByZXNzaW9uOiAnJyxcclxuICAgICAgcGF0dGVybjogJycsXHJcbiAgICAgIHdpbGRDYXJkOiAnKicsXHJcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcclxuICAgICAgZXNjYXBlQ2hhcjogJyEnLFxyXG4gICAgICBtYXRjaENhc2U6IHRydWUsXHJcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXHJcbiAgICAgIGlnb1NOUkM6ICcnLFxyXG4gICAgICBnZW9tZXRyeU5hbWU6ICcnLFxyXG4gICAgICBnZW9tZXRyeTogJycsXHJcbiAgICAgIHdrdF9nZW9tZXRyeTogJycsXHJcbiAgICAgIGV4dGVudDogJycsXHJcbiAgICAgIHNyc05hbWU6ICcnLFxyXG4gICAgICBwYXJlbnRMb2dpY2FsOiAnJyxcclxuICAgICAgbGV2ZWw6IDBcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIGYsXHJcbiAgICAgIHtcclxuICAgICAgICBwYXJlbnRMb2dpY2FsLFxyXG4gICAgICAgIGxldmVsLFxyXG4gICAgICAgIGdlb21ldHJ5TmFtZVxyXG4gICAgICB9LFxyXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcclxuICAgIGZpbHRlck9iamVjdDogYW55LFxyXG4gICAgZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICBwcm9qOiBvbFByb2plY3Rpb24sXHJcbiAgICBhY3RpdmUgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgZmlsdGVyQXJyYXkgPSBbXTtcclxuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGZpbHRlckFycmF5LnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXHJcbiAgICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxyXG4gICAgICAgICAgICBwcm9qLFxyXG4gICAgICAgICAgICBhY3RpdmVcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZpbHRlckFycmF5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICB7fSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbG9naWNhbDogZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcclxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcclxuICAgICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgICAgICBwcm9qLFxyXG4gICAgICAgICAgICAgIGFjdGl2ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJQcm9wZXJ0aWVzKFxyXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXHJcbiAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgIHByb2osXHJcbiAgICAgICAgICBhY3RpdmVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXHJcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXHJcbiAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcclxuICAgIGFjdGl2ZSA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxyXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5maWx0ZXJpZFxyXG4gICAgICA6IHV1aWQoKTtcclxuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcclxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuYWN0aXZlXHJcbiAgICAgIDogYWN0aXZlO1xyXG5cclxuICAgIGNvbnN0IHNyc05hbWUgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ3Nyc05hbWUnKVxyXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5zcnNOYW1lXHJcbiAgICAgIDogcHJvalxyXG4gICAgICA/IHByb2ouZ2V0Q29kZSgpXHJcbiAgICAgIDogJ0VQU0c6Mzg1Nyc7XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHt9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyaWQsXHJcbiAgICAgICAgYWN0aXZlOiBzdGF0dXMsXHJcbiAgICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnZml4ZWRFeHRlbnQnLFxyXG4gICAgICAgIHNyc05hbWVcclxuICAgICAgfSxcclxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0LFxyXG4gICAgICB7IGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnkgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWJ1aWx0SWdvT2djRmlsdGVyT2JqZWN0RnJvbVNlcXVlbmNlKFxyXG4gICAgc2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXVxyXG4gICk6IElnb09nY0ZpbHRlck9iamVjdCB7XHJcbiAgICBpZiAoc2VxdWVuY2UgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID49IDEpIHtcclxuICAgICAgICBsZXQgbGFzdFBhcmVudExvZ2ljYWwgPSBzZXF1ZW5jZVswXS5wYXJlbnRMb2dpY2FsO1xyXG4gICAgICAgIGxldCBuZXh0RWxlbWVudDogYW55O1xyXG4gICAgICAgIGxldCBsb2dpY2FsQXJyYXkgPSBbXTtcclxuICAgICAgICBsZXQgbGFzdFByb2Nlc3NlZEZpbHRlcjtcclxuICAgICAgICBzZXF1ZW5jZS5mb3JFYWNoKCh1aUZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVpRmlsdGVyKTtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2VxdWVuY2UuaW5kZXhPZih1aUZpbHRlcik7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBzZXF1ZW5jZVtpbmRleCArIDFdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBlbGVtZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuYWN0aXZlO1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuZmlsdGVyaWQ7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5wYXJlbnRMb2dpY2FsO1xyXG4gICAgICAgICAgbG9naWNhbEFycmF5LnB1c2goZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gZWxlbWVudDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFBhcmVudExvZ2ljYWwgIT09IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWwpIHtcclxuICAgICAgICAgICAgaWYgKGxvZ2ljYWxBcnJheS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdZb3UgbXVzdCBzZXQgYXQgJyArXHJcbiAgICAgICAgICAgICAgICAgICdsZWFzdCB0d28gb3BlcmF0b3IgaW4gYSBsb2dpY2FsICgnICtcclxuICAgICAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgK1xyXG4gICAgICAgICAgICAgICAgICAnKSdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICB7IGxvZ2ljYWw6IGxhc3RQYXJlbnRMb2dpY2FsLCBmaWx0ZXJzOiBsb2dpY2FsQXJyYXkgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbG9naWNhbEFycmF5ID0gW2xhc3RQcm9jZXNzZWRGaWx0ZXJdO1xyXG4gICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsID0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnM6IElnb09nY1NlbGVjdG9yKTogSWdvT2djU2VsZWN0b3Ige1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RvcnMuZ3JvdXBzLmV2ZXJ5KChncm91cCkgPT4gZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgIT09IHVuZGVmaW5lZClcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gc2VsZWN0b3JzO1xyXG4gICAgfVxyXG4gICAgbGV0IHNlbGVjdG9yOiBJZ29PZ2NTZWxlY3RvcjtcclxuICAgIGlmIChzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XHJcbiAgICAgIGlmICghc2VsZWN0b3JzLmJ1bmRsZXMuZXZlcnkoKGJ1bmRsZSkgPT4gYnVuZGxlLmlkICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgJ1lvdSBtdXN0IHNldCBhbiBpZCBmb3IgZWFjaCBvZiB5b3VyIGJ1bmRsZXMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XHJcbiAgICAgIHNlbGVjdG9yLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xyXG4gICAgICAgIGdyb3VwLnRpdGxlID0gZ3JvdXAudGl0bGUgPyBncm91cC50aXRsZSA6IGdyb3VwLm5hbWU7XHJcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XHJcbiAgICAgICAgZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgPSBPYmplY3RVdGlscy5jb3B5RGVlcChcclxuICAgICAgICAgIHNlbGVjdG9yLmJ1bmRsZXMuZmlsdGVyKChiKSA9PiBncm91cC5pZHMuaW5jbHVkZXMoYi5pZCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKCFzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XHJcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcclxuICAgICAgc2VsZWN0b3IuZ3JvdXBzID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcclxuICAgICAgICAgIG5hbWU6ICdncm91cDEnLFxyXG4gICAgICAgICAgY29tcHV0ZWRTZWxlY3RvcnM6IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9yLmJ1bmRsZXMpXHJcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RvciA9IHtcclxuICAgICAgICBidW5kbGVzOiBzZWxlY3RvcnMgYXMgYW55LFxyXG4gICAgICAgIGdyb3VwczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ2dyb3VwMScsXHJcbiAgICAgICAgICAgIG5hbWU6ICdncm91cDEnLFxyXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXHJcbiAgICAgICAgICAgICAgc2VsZWN0b3JzXHJcbiAgICAgICAgICAgICkgYXMgT2djU2VsZWN0b3JCdW5kbGVbXVxyXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzZWxlY3RvclR5cGU6IHNlbGVjdG9yLnNlbGVjdG9yVHlwZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZWxlY3Rvci5ncm91cHMuZmluZCgoc2VsZWN0b3JHcm91cCkgPT4gc2VsZWN0b3JHcm91cC5lbmFibGVkKSkge1xyXG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2VsZWN0b3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlT2djRmlsdGVyc0FwcGxpZWRWYWx1ZShcclxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICAgIGZpZWxkTmFtZUdlb21ldHJ5OiBzdHJpbmcsXHJcbiAgICBleHRlbnQ/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcclxuICAgIHByb2o/OiBvbFByb2plY3Rpb25cclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgb2djRmlsdGVycyA9IG9wdGlvbnMub2djRmlsdGVycztcclxuICAgIGlmICghb2djRmlsdGVycykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XHJcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9ICcnO1xyXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gJyc7XHJcbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8IG9nY0ZpbHRlcnMuY2hlY2tib3hlcyB8fCBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyB8fCBvZ2NGaWx0ZXJzLnNlbGVjdFxyXG4gICAgICB8fCBvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSkpIHtcclxuICAgICAgbGV0IHNlbGVjdG9ycztcclxuICAgICAgaWYgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMpIHtcclxuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zO1xyXG4gICAgICAgIGNvbnN0IHB1c2hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzLCBzZWxlY3RvcnMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHB1c2hDb25kaXRpb25zKSB7XHJcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9nY0ZpbHRlcnMuY2hlY2tib3hlcykge1xyXG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuY2hlY2tib3hlcztcclxuICAgICAgICBjb25zdCBjaGVja2JveENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9ycyk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY2hlY2tib3hDb25kaXRpb25zKSB7XHJcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zKSB7XHJcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5yYWRpb0J1dHRvbnM7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xyXG4gICAgICAgIGNvbnN0IHJhZGlvQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzQ29ycik7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcmFkaW9Db25kaXRpb25zKSB7XHJcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9nY0ZpbHRlcnMuc2VsZWN0KSB7XHJcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5zZWxlY3Q7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9yc0NvcnIpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcclxuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob2djRmlsdGVycy5hdXRvY29tcGxldGUpIHtcclxuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZTtcclxuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzLCBzZWxlY3RvcnMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcclxuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gdGhpcy5idWlsZEZpbHRlcihcclxuICAgICAgICAgIGNvbmRpdGlvbnMubGVuZ3RoID09PSAxXHJcbiAgICAgICAgICAgID8gY29uZGl0aW9uc1swXVxyXG4gICAgICAgICAgICA6IHsgbG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSxcclxuICAgICAgICAgIGV4dGVudCxcclxuICAgICAgICAgIHByb2osXHJcbiAgICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChvZ2NGaWx0ZXJzLmVuYWJsZWQgJiYgb2djRmlsdGVycy5maWx0ZXJzKSB7XHJcbiAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lID0gb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgfHwgZmllbGROYW1lR2VvbWV0cnk7XHJcbiAgICAgIGNvbnN0IGlnb0ZpbHRlcnMgPSBvZ2NGaWx0ZXJzLmZpbHRlcnM7XHJcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gdGhpcy5idWlsZEZpbHRlcihcclxuICAgICAgICBpZ29GaWx0ZXJzLFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICBwcm9qLFxyXG4gICAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lLFxyXG4gICAgICAgIG9wdGlvbnNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmcgPSBvZ2NGaWx0ZXJzLmFkdmFuY2VkT2djRmlsdGVyc1xyXG4gICAgICA/IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzXHJcbiAgICAgIDogZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvcjtcclxuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXHJcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXHJcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5wYXJhbXMuTEFZRVJTXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd2ZzJykge1xyXG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxyXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxyXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLmZlYXR1cmVUeXBlc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJRdWVyeVN0cmluZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycykge1xyXG4gICAgc2VsZWN0b3JzLmJ1bmRsZXMuZm9yRWFjaChidW5kbGUgPT4ge1xyXG4gICAgICBpZiAoIWJ1bmRsZS5tdWx0aXBsZSAmJiBidW5kbGUuc2VsZWN0b3JzKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZHMgPSBidW5kbGUuc2VsZWN0b3JzLnJlZHVjZSgobGlzdCwgZmlsdGVyLCBpbmRleCkgPT4gKGZpbHRlci5lbmFibGVkKSA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsIFtdKTtcclxuICAgICAgICBpZiAoZW5hYmxlZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgZW5hYmxlZHMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgZW5hYmxlZHMuZm9yRWFjaChpbmRleCA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5zZWxlY3RvcnNbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCBzZWxlY3RvcnMpIHtcclxuICAgIHNlbGVjdG9ycyA9IHRoaXMuY29tcHV0ZUlnb1NlbGVjdG9yKFxyXG4gICAgICBzZWxlY3RvcnNcclxuICAgICk7XHJcbiAgICBjb25zdCBzZWxlY3RvckJ1bmRsZSA9IHNlbGVjdG9ycy5ncm91cHMuZmluZChcclxuICAgICAgKGcpID0+IGcuZW5hYmxlZFxyXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcclxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcclxuICAgIHNlbGVjdG9yQnVuZGxlLm1hcCgoYnVuZGxlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xyXG4gICAgICBjb25zdCBzZWxlY3RvcnNUeXBlID0gYnVuZGxlLnNlbGVjdG9ycyBhcyBhbnk7XHJcbiAgICAgIGlmICghc2VsZWN0b3JzVHlwZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBzZWxlY3RvcnNUeXBlXHJcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXHJcbiAgICAgICAgLmZvckVhY2goKGVuYWJsZWRTZWxlY3RvcikgPT4gYnVuZGxlQ29uZGl0aW9uLnB1c2goZW5hYmxlZFNlbGVjdG9yLmZpbHRlcnMpKTtcclxuICAgICAgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcclxuICAgICAgfSBlbHNlIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICBsb2dpY2FsOiBidW5kbGUubG9naWNhbCxcclxuICAgICAgICAgIGZpbHRlcnM6IGJ1bmRsZUNvbmRpdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nKSB7XHJcbiAgICAgIG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgPSBzZWxlY3RvcnM7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdjaGVja2JveCcpIHtcclxuICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzID0gc2VsZWN0b3JzO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAncmFkaW9CdXR0b24nKSB7XHJcbiAgICAgIG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zID0gc2VsZWN0b3JzO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnc2VsZWN0Jykge1xyXG4gICAgICBvZ2NGaWx0ZXJzLnNlbGVjdCA9IHNlbGVjdG9ycztcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcclxuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUgPSBzZWxlY3RvcnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZGl0aW9ucztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXHJcbiAgICBwcm9jZXNzZWRGaWx0ZXI6IHN0cmluZyxcclxuICAgIGxheWVyc09yVHlwZW5hbWVzOiBzdHJpbmdcclxuICApOiBzdHJpbmcge1xyXG5cclxuICAgIGlmICghcHJvY2Vzc2VkRmlsdGVyKSB7cmV0dXJuIHVuZGVmaW5lZDt9O1xyXG4gICAgbGV0IGFwcGxpZWRGaWx0ZXIgPSAnJztcclxuICAgIGlmIChwcm9jZXNzZWRGaWx0ZXIubGVuZ3RoID09PSAwICYmIGxheWVyc09yVHlwZW5hbWVzLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcclxuICAgICAgYXBwbGllZEZpbHRlciA9IHByb2Nlc3NlZEZpbHRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxheWVyc09yVHlwZW5hbWVzLnNwbGl0KCcsJykuZm9yRWFjaCgobGF5ZXJPclR5cGVuYW1lcykgPT4ge1xyXG4gICAgICAgIGFwcGxpZWRGaWx0ZXIgPSBgJHthcHBsaWVkRmlsdGVyfSgke3Byb2Nlc3NlZEZpbHRlci5yZXBsYWNlKFxyXG4gICAgICAgICAgJ2ZpbHRlcj0nLFxyXG4gICAgICAgICAgJydcclxuICAgICAgICApfSlgO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGFwcGxpZWRGaWx0ZXIgPSBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoL1xcKFxcKS9nLCAnJyk7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9XHJcbiAgICAgIGFwcGxpZWRGaWx0ZXIubGVuZ3RoID4gMFxyXG4gICAgICAgID8gYXBwbGllZEZpbHRlci5yZXBsYWNlKCdmaWx0ZXI9JywgJycpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gZmlsdGVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFyc2VGaWx0ZXJPcHRpb25EYXRlKHZhbHVlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAndG9kYXknKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -43,4 +43,4 @@ OGCFilterService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OGCFilt
|
|
|
43
43
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OGCFilterService, [{
|
|
44
44
|
type: Injectable
|
|
45
45
|
}], function () { return []; }, null); })();
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUkvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLGdCQUFlLENBQUM7SUFFVCxXQUFXLENBQUMsYUFBNEIsRUFBRSxZQUFvQjtRQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4SCxhQUFhLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxhQUFzQztRQUNuRSxNQUFNLE9BQU8sR0FBUSxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQzNDLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFOUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUM1RCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMseUJBQXlCLENBQ3BFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUMxQixPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUNuQyxJQUFJLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3JELElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzNDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLDZCQUE2QixDQUNwRixPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDMUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDcEMsQ0FBQzthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sdUJBQXVCLENBQUMsYUFBc0M7UUFDbkUsTUFBTSxPQUFPLEdBQVEsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDNUQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLHlCQUF5QixDQUNwRSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDMUIsT0FBTyxDQUFDLGlCQUFpQixFQUN6QixTQUFTLEVBQ1QsSUFBSSxDQUNMLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsR0FBRyxlQUFlLENBQUMsNkJBQTZCO2dCQUNwRixzRUFBc0U7Z0JBQ3RFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUMxQixPQUFPLENBQUMsaUJBQWlCLENBQzFCLENBQUM7YUFDSDtZQUNELElBQUksQ0FBQyxXQUFXLENBQ2QsYUFBOEIsRUFDOUIsZUFBZSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDdEQsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsYUFBYSxDQUFDLE9BQU8sQ0FDcEIsQ0FDRixDQUFDO1lBQ0YsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDekI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNILENBQUM7O2dGQTdEVSxnQkFBZ0I7c0VBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0I7dUZBQWhCLGdCQUFnQjtjQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xyXG5cclxuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlJztcclxuaW1wb3J0IHsgT2djRmlsdGVyV3JpdGVyIH0gZnJvbSAnLi9vZ2MtZmlsdGVyJztcclxuaW1wb3J0IHsgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE9HQ0ZpbHRlclNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHVibGljIGZpbHRlckJ5T2djKHdtc0RhdGFzb3VyY2U6IFdNU0RhdGFTb3VyY2UsIGZpbHRlclN0cmluZzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihmaWx0ZXJTdHJpbmcsIHdtc0RhdGFzb3VyY2Uub3B0aW9ucy5wYXJhbXMuTEFZRVJTKTtcclxuICAgIHdtc0RhdGFzb3VyY2Uub2wudXBkYXRlUGFyYW1zKHsgRklMVEVSOiBhcHBsaWVkRmlsdGVyIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE9nY1dGU0ZpbHRlcnNPcHRpb25zKHdmc0RhdGFzb3VyY2U6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKSB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB3ZnNEYXRhc291cmNlLm9wdGlvbnM7XHJcbiAgICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMub2djRmlsdGVycy5lbmFibGVkICYmIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzKSB7XHJcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzID0gb2djRmlsdGVyV3JpdGVyLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXHJcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMsXHJcbiAgICAgICAgb3B0aW9ucy5wYXJhbXNXRlMuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgbmV3IG9sUHJvamVjdGlvbih7IGNvZGU6IG9wdGlvbnMucGFyYW1zV0ZTLnNyc05hbWUgfSksXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIW9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzKSB7XHJcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMgPSBvZ2NGaWx0ZXJXcml0ZXIuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXHJcbiAgICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcclxuICAgICAgICAgIG9wdGlvbnMucGFyYW1zV0ZTLmZpZWxkTmFtZUdlb21ldHJ5XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE9nY1dNU0ZpbHRlcnNPcHRpb25zKHdtc0RhdGFzb3VyY2U6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKSB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB3bXNEYXRhc291cmNlLm9wdGlvbnM7XHJcbiAgICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMub2djRmlsdGVycy5lbmFibGVkICYmIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzKSB7XHJcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzID0gb2djRmlsdGVyV3JpdGVyLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXHJcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMsXHJcbiAgICAgICAgb3B0aW9ucy5maWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIW9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzKSB7XHJcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMgPSBvZ2NGaWx0ZXJXcml0ZXIuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXHJcbiAgICAgICAgICAvLyBXaXRoIHNvbWUgd21zIHNlcnZlciwgdGhpcyBwYXJhbSBtdXN0IGJlIHNldCB0byBtYWtlIHNwYXRpYWxzIGNhbGwuXHJcbiAgICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcclxuICAgICAgICAgIG9wdGlvbnMuZmllbGROYW1lR2VvbWV0cnlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsdGVyQnlPZ2MoXHJcbiAgICAgICAgd21zRGF0YXNvdXJjZSBhcyBXTVNEYXRhU291cmNlLFxyXG4gICAgICAgIG9nY0ZpbHRlcldyaXRlci5idWlsZEZpbHRlcihvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICB3bXNEYXRhc291cmNlLm9wdGlvbnNcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIG9wdGlvbnMuZmlsdGVyZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMgPSB1bmRlZmluZWQ7XHJcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzID0gW107XHJcbiAgICAgIG9wdGlvbnMuZmlsdGVyZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -20,4 +20,4 @@ export var SpatialFilterItemType;
|
|
|
20
20
|
SpatialFilterItemType["Address"] = "Address";
|
|
21
21
|
SpatialFilterItemType["Thematics"] = "Thematics";
|
|
22
22
|
})(SpatialFilterItemType || (SpatialFilterItemType = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxzQkFTWDtBQVRELFdBQVksc0JBQXNCO0lBQzlCLGlEQUF1QixDQUFBO0lBQ3ZCLHFDQUFXLENBQUE7SUFDWCwyQ0FBaUIsQ0FBQTtJQUNqQiw2Q0FBbUIsQ0FBQTtJQUNuQiwrQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBVyxDQUFBO0lBQ1gsNkNBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQVRXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFTakM7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQ3pCLDhDQUF5QixDQUFBO0lBQ3pCLHdDQUFtQixDQUFBO0lBQ25CLG9DQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxxQkFHWDtBQUhELFdBQVkscUJBQXFCO0lBQzdCLDRDQUFtQixDQUFBO0lBQ25CLGdEQUF1QixDQUFBO0FBQzNCLENBQUMsRUFIVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBR2hDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSB7XHJcbiAgICBBZG1SZWdpb24gPSAnQWRtUmVnaW9uJyxcclxuICAgIE11biA9ICdNdW4nLFxyXG4gICAgQXJyb25kID0gJ0Fycm9uZCcsXHJcbiAgICBDaXJjRmVkID0gJ0NpcmNGZWQnLFxyXG4gICAgQ2lyY1Byb3YgPSAnQ2lyY1Byb3YnLFxyXG4gICAgRGlyUmVnID0gJ0RpclJlZycsXHJcbiAgICBNUkMgPSAnTVJDJyxcclxuICAgIFJlZ1RvdXIgPSAnUmVnVG91cidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU3BhdGlhbEZpbHRlclR5cGUge1xyXG4gICAgUHJlZGVmaW5lZCA9ICdQcmVkZWZpbmVkJyxcclxuICAgIFBvbHlnb24gPSAnUG9seWdvbicsXHJcbiAgICBQb2ludCA9ICdQb2ludCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlIHtcclxuICAgIEFkZHJlc3MgPSAnQWRkcmVzcycsXHJcbiAgICBUaGVtYXRpY3MgPSAnVGhlbWF0aWNzJ1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU3BhdGlhbEZpbHRlclRoZW1hdGljIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY2hpbGRyZW4/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXTtcclxuICBncm91cD86IHN0cmluZztcclxuICBzb3VyY2U/OiBzdHJpbmc7XHJcbiAgemVyb1Jlc3VsdHM/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNwYXRpYWxGaWx0ZXJPcHRpb25zIHtcclxuICB1cmw/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -266,4 +266,4 @@ SpatialFilterService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Spa
|
|
|
266
266
|
providedIn: 'root'
|
|
267
267
|
}]
|
|
268
268
|
}], function () { return [{ type: i1.HttpClient }, { type: i2.LanguageService }, { type: i2.ConfigService }]; }, null); })();
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNsQixNQUFNLHVCQUF1QixDQUFDOzs7O0FBTS9CLE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLFlBQ1UsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsYUFBNEI7UUFGNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0Qi9CLFlBQU8sR0FBVyw2Q0FBNkMsQ0FBQztRQUV2RTs7V0FFRztRQUNJLGtCQUFhLEdBQUc7WUFDckIsU0FBUyxFQUFFLFVBQVU7WUFDckIsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixPQUFPLEVBQUUsVUFBVTtZQUNuQixRQUFRLEVBQUUsV0FBVztZQUNyQixNQUFNLEVBQUUsU0FBUztZQUNqQixHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQU9BLElBQUksQ0FBQyxPQUFPO1lBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTSxFQUFFLEtB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LEdBQUcsQ0FBVSxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxXQUFXLEVBQ3BEO29CQUNFLE1BQU0sRUFBRTt3QkFDTixRQUFRLEVBQUUsS0FBSzt3QkFDZixZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtxQkFDaEM7aUJBQ0YsQ0FDRjtxQkFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNOLENBQUMsQ0FBQyxJQUFJLEdBQUc7d0JBQ1AsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTt3QkFDckIsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRzt3QkFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRztxQkFDeEIsQ0FBQztvQkFDRixPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0w7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDYixJQUFJLENBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsRUFBRTtnQkFDbEQsTUFBTTtnQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7YUFDN0IsQ0FBQztpQkFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNOLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7d0ZBOVRVLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQixtQkFGbkIsTUFBTTt1RkFFUCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcbiAgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxuICBTcGF0aWFsRmlsdGVyVHlwZVxufSBmcm9tICcuL3NwYXRpYWwtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHsgU3BhdGlhbEZpbHRlclRoZW1hdGljIH0gZnJvbSAnLi9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTcGF0aWFsRmlsdGVyU2VydmljZSB7XG4gIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9nZW9lZ2wubXNwLmdvdXYucWMuY2EvYXBpcy90ZXJyYXBpLyc7XG5cbiAgLypcbiAgICogVHlwZSBhc3NvY2lhdGlvbiB3aXRoIFVSTFxuICAgKi9cbiAgcHVibGljIHVybEZpbHRlckxpc3QgPSB7XG4gICAgQWRtUmVnaW9uOiAncmVnYWRtaW4nLFxuICAgIEFycm9uZDogJ2Fycm9uZGlzc2VtZW50cycsXG4gICAgQ2lyY0ZlZDogJ2NpcmMtZmVkJyxcbiAgICBDaXJjUHJvdjogJ2NpcmMtcHJvdicsXG4gICAgRGlyUmVnOiAnZGlyLXJlZycsXG4gICAgTVJDOiAnbXJjJyxcbiAgICBNdW46ICdtdW5pY2lwYWxpdGVzJyxcbiAgICBSZWdUb3VyOiAndG91cmlzbWUnLFxuICAgIGJvcm5lczogJ2Jvcm5lcy1zdW1pJyxcbiAgICBoeWRybzogJ2h5ZHJvJyxcbiAgICByb3V0ZXM6ICdyb3V0ZXMnXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYmFzZVVybCA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdzcGF0aWFsRmlsdGVyLnVybCcpIHx8IHRoaXMuYmFzZVVybDtcbiAgfVxuXG4gIGdldEtleUJ5VmFsdWUob2JqZWN0LCB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLmZpbmQoa2V5ID0+IG9iamVjdFtrZXldID09PSB2YWx1ZSk7XG4gIH1cblxuICAvKlxuICAgKiBMb2FkaW5nIGRhdGEgZm9yIHNwYXRpYWwgZmlsdGVyIGxpc3QgY29tcG9uZW50IChOTyBHRU9NRVRSWSlcbiAgICovXG4gIGxvYWRGaWx0ZXJMaXN0KHR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUpOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT4ge1xuICAgIGNvbnN0IHVybFBhdGggPSB0eXBlIGFzIHN0cmluZztcbiAgICBpZiAodXJsUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcbiAgICAgICAgICB0aGlzLmJhc2VVcmwgKyB0aGlzLnVybEZpbHRlckxpc3RbdXJsUGF0aF1cbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoZmVhdHVyZUNvbGxlY3Rpb24gPT5cbiAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLm1hcChmID0+IHtcbiAgICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIExvYWRpbmcgaXRlbSBsaXN0IChTVFJJTkcpXG4gICAqL1xuICBsb2FkVGhlbWF0aWNzTGlzdCgpIHtcbiAgICBjb25zdCB1cmwgPSAndHlwZXMnO1xuICAgIGNvbnN0IGl0ZW1zOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYmFzZVVybCArIHVybCkucGlwZShcbiAgICAgIG1hcCgodHlwZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGUuc3RhcnRzV2l0aCgnbGlldXgnKSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNvdXJjZTogdHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBzdWJzdHIgPSB0eXBlLnN1YnN0cmluZyg2LCB0eXBlLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN1YnN0cjtcbiAgICAgICAgICAgIGlmIChzdWJzdHIuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHN1YnN0ci5pbmRleE9mKCcuJyk7XG4gICAgICAgICAgICAgIG5hbWUgPSBzdWJzdHIuc3Vic3RyaW5nKGluZGV4ICsgMSwgc3Vic3RyLmxlbmd0aCk7XG4gICAgICAgICAgICAgIHN1YnN0ciA9IHN1YnN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5uYW1lID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5ncm91cCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ3JvdXAuJyArIHN1YnN0clxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBpdGVtLmdyb3VwID0gc3Vic3RyLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgc3Vic3RyLnN1YnN0cmluZygxLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRLZXlCeVZhbHVlKHRoaXMudXJsRmlsdGVyTGlzdCwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHR5cGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0S2V5QnlWYWx1ZSh0aGlzLnVybEZpbHRlckxpc3QsIHR5cGUpO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpdGVtLnNvdXJjZSA9IHR5cGU7XG5cbiAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKlxuICAgKiBMb2FkaW5nIGRhdGEgZm9yIHNwYXRpYWwgZmlsdGVyIGl0ZW0gY29tcG9uZW50IChBZGRyZXNzIG9yIFRoZW1hdGljcykgZGVwZW5kcyBvbiBwcmVkZWZpbmVkIHpvbmUgb3IgZHJhdyB6b25lIChmZWF0dXJlKVxuICAgKi9cbiAgbG9hZEZpbHRlckl0ZW0oXG4gICAgZmVhdHVyZSxcbiAgICBpdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxuICAgIHR5cGU/OiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLFxuICAgIHRoZW1hdGljPzogU3BhdGlhbEZpbHRlclRoZW1hdGljLFxuICAgIGJ1ZmZlcj86IG51bWJlclxuICApIHtcbiAgICBpZiAodHlwZSkge1xuICAgICAgLy8gUHJlZGVmaW5lZCB0eXBlXG4gICAgICBjb25zdCB1cmxUeXBlID0gdHlwZSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyB0aGlzLnVybEZpbHRlckxpc3RbdXJsVHlwZV07XG4gICAgICBsZXQgdXJsSXRlbSA9ICcnO1xuICAgICAgaWYgKGl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcykge1xuICAgICAgICB1cmxJdGVtID0gJ2FkcmVzc2VzJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQ8eyBmZWF0dXJlczogRmVhdHVyZVtdIH0+KFxuICAgICAgICAgICAgdXJsICsgJy8nICsgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGUgKyAnLycgKyB1cmxJdGVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnLFxuICAgICAgICAgICAgICAgIGljb246ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBidWZmZXJJbnB1dDogYnVmZmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgc2ltcGxpZmllZDogJzEwMCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcChmZWF0dXJlQ29sbGVjdGlvbiA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoZiA9PiB7XG4gICAgICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICAgICAgaWQ6IGYucHJvcGVydGllcy5jb2RlLFxuICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLkFkZHJlc3MnXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgaWNvbjogKGYgYXMgYW55KS5pY29uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlbWF0aWNzIHNlYXJjaFxuICAgICAgICB1cmxJdGVtID0gdGhlbWF0aWMuc291cmNlO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgLmdldDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4oXG4gICAgICAgICAgICB1cmwgKyAnLycgKyBmZWF0dXJlLnByb3BlcnRpZXMuY29kZSArICcvJyArIHVybEl0ZW0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGdlb21ldHJ5OiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgaWNvbjogJ3RydWUnLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBzaW1wbGlmaWVkOiAnMTAwJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLm1hcChmID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhlbWF0aWMubmFtZSxcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRHJhdyB0eXBlXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnbG9jYXRlJztcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcbiAgICAgICAgY29uc3QgdXJsSXRlbSA9ICc/dHlwZT1hZHJlc3Nlcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4odXJsICsgdXJsSXRlbSwge1xuICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgIGljb246ICd0cnVlJyxcbiAgICAgICAgICAgIGxvYzogSlNPTi5zdHJpbmdpZnkoZmVhdHVyZSksXG4gICAgICAgICAgICBidWZmZXJJbnB1dDogYnVmZmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzaW1wbGlmaWVkOiAnMTAwJ1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoZmVhdHVyZUNvbGxlY3Rpb24gPT5cbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKGYgPT4ge1xuICAgICAgICAgICAgICAgIGYubWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5BZGRyZXNzJ1xuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZW1hdGljcyBzZWFyY2hcbiAgICAgICAgY29uc3QgdXJsSXRlbSA9ICc/dHlwZT0nICsgdGhlbWF0aWMuc291cmNlO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgLnBvc3Q8eyBmZWF0dXJlczogRmVhdHVyZVtdIH0+KHVybCArIHVybEl0ZW0sIHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiAndHJ1ZScsXG4gICAgICAgICAgICBpY29uOiAndHJ1ZScsXG4gICAgICAgICAgICBsb2M6IEpTT04uc3RyaW5naWZ5KGZlYXR1cmUpLFxuICAgICAgICAgICAgYnVmZmVySW5wdXQ6IGJ1ZmZlci50b1N0cmluZygpLFxuICAgICAgICAgICAgc2ltcGxpZmllZDogJzEwMCdcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLm1hcChmID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhlbWF0aWMubmFtZSxcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBHZXQgb25lIHRlcnJpdG9yeSBieSBpZCAoV0lUSCBHRU9NRVRSWSlcbiAgICovXG4gIGxvYWRJdGVtQnlJZChcbiAgICBmZWF0dXJlOiBGZWF0dXJlLFxuICAgIHR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGVcbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XG4gICAgY29uc3QgZmVhdHVyZVR5cGUgPSB0aGlzLnVybEZpbHRlckxpc3RbdHlwZV07XG4gICAgY29uc3QgZmVhdHVyZUNvZGUgPSAnLycgKyBmZWF0dXJlLnByb3BlcnRpZXMuY29kZTtcbiAgICBpZiAoZmVhdHVyZVR5cGUgJiYgZmVhdHVyZUNvZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxGZWF0dXJlPih0aGlzLmJhc2VVcmwgKyBmZWF0dXJlVHlwZSArIGZlYXR1cmVDb2RlLCB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoZiA9PiB7XG4gICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgYWxpYXM6IGYucHJvcGVydGllcy5ub20sXG4gICAgICAgICAgICAgIHRpdGxlOiBmLnByb3BlcnRpZXMubm9tXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBHZXQgYnVmZmVyIGdlb21ldHJ5XG4gICAqL1xuICBsb2FkQnVmZmVyR2VvbWV0cnkoXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcbiAgICBmaWx0ZXJUeXBlOiBTcGF0aWFsRmlsdGVyVHlwZSxcbiAgICBidWZmZXI/OiBudW1iZXIsXG4gICAgdHlwZT86IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUsXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZT4ge1xuICAgIGlmIChmaWx0ZXJUeXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcbiAgICAgIGNvbnN0IGZlYXR1cmVDb2RlID0gJy8nICsgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGU7XG4gICAgICBpZiAoZmVhdHVyZVR5cGUgJiYgZmVhdHVyZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQ8RmVhdHVyZT4odGhpcy5iYXNlVXJsICsgZmVhdHVyZVR5cGUgKyBmZWF0dXJlQ29kZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICcxMDAnLFxuICAgICAgICAgICAgICAgIGJ1ZmZlck91dHB1dDogYnVmZmVyLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcChmID0+IHtcbiAgICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICBhbGlhczogZi5wcm9wZXJ0aWVzLm5vbSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZi5wcm9wZXJ0aWVzLm5vbVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxGZWF0dXJlPih0aGlzLmJhc2VVcmwgKyAnZ2Vvc3BhdGlhbC9idWZmZXI/Jywge1xuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBsb2M6IEpTT04uc3RyaW5naWZ5KGZlYXR1cmUpXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChmID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNsQixNQUFNLHVCQUF1QixDQUFDOzs7O0FBTS9CLE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLFlBQ1UsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsYUFBNEI7UUFGNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0Qi9CLFlBQU8sR0FBVyw2Q0FBNkMsQ0FBQztRQUV2RTs7V0FFRztRQUNJLGtCQUFhLEdBQUc7WUFDckIsU0FBUyxFQUFFLFVBQVU7WUFDckIsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixPQUFPLEVBQUUsVUFBVTtZQUNuQixRQUFRLEVBQUUsV0FBVztZQUNyQixNQUFNLEVBQUUsU0FBUztZQUNqQixHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQU9BLElBQUksQ0FBQyxPQUFPO1lBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTSxFQUFFLEtB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LEdBQUcsQ0FBVSxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxXQUFXLEVBQ3BEO29CQUNFLE1BQU0sRUFBRTt3QkFDTixRQUFRLEVBQUUsS0FBSzt3QkFDZixZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtxQkFDaEM7aUJBQ0YsQ0FDRjtxQkFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNOLENBQUMsQ0FBQyxJQUFJLEdBQUc7d0JBQ1AsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTt3QkFDckIsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRzt3QkFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRztxQkFDeEIsQ0FBQztvQkFDRixPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0w7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDYixJQUFJLENBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsRUFBRTtnQkFDbEQsTUFBTTtnQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7YUFDN0IsQ0FBQztpQkFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNOLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7d0ZBOVRVLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQixtQkFGbkIsTUFBTTt1RkFFUCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQnO1xyXG5pbXBvcnQge1xyXG4gIFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUsXHJcbiAgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxyXG4gIFNwYXRpYWxGaWx0ZXJUeXBlXHJcbn0gZnJvbSAnLi9zcGF0aWFsLWZpbHRlci5lbnVtJztcclxuaW1wb3J0IHsgU3BhdGlhbEZpbHRlclRoZW1hdGljIH0gZnJvbSAnLi9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9nZW9lZ2wubXNwLmdvdXYucWMuY2EvYXBpcy90ZXJyYXBpLyc7XHJcblxyXG4gIC8qXHJcbiAgICogVHlwZSBhc3NvY2lhdGlvbiB3aXRoIFVSTFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cmxGaWx0ZXJMaXN0ID0ge1xyXG4gICAgQWRtUmVnaW9uOiAncmVnYWRtaW4nLFxyXG4gICAgQXJyb25kOiAnYXJyb25kaXNzZW1lbnRzJyxcclxuICAgIENpcmNGZWQ6ICdjaXJjLWZlZCcsXHJcbiAgICBDaXJjUHJvdjogJ2NpcmMtcHJvdicsXHJcbiAgICBEaXJSZWc6ICdkaXItcmVnJyxcclxuICAgIE1SQzogJ21yYycsXHJcbiAgICBNdW46ICdtdW5pY2lwYWxpdGVzJyxcclxuICAgIFJlZ1RvdXI6ICd0b3VyaXNtZScsXHJcbiAgICBib3JuZXM6ICdib3JuZXMtc3VtaScsXHJcbiAgICBoeWRybzogJ2h5ZHJvJyxcclxuICAgIHJvdXRlczogJ3JvdXRlcydcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYmFzZVVybCA9XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3NwYXRpYWxGaWx0ZXIudXJsJykgfHwgdGhpcy5iYXNlVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0S2V5QnlWYWx1ZShvYmplY3QsIHZhbHVlKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5maW5kKGtleSA9PiBvYmplY3Rba2V5XSA9PT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBMb2FkaW5nIGRhdGEgZm9yIHNwYXRpYWwgZmlsdGVyIGxpc3QgY29tcG9uZW50IChOTyBHRU9NRVRSWSlcclxuICAgKi9cclxuICBsb2FkRmlsdGVyTGlzdCh0eXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHtcclxuICAgIGNvbnN0IHVybFBhdGggPSB0eXBlIGFzIHN0cmluZztcclxuICAgIGlmICh1cmxQYXRoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcclxuICAgICAgICAgIHRoaXMuYmFzZVVybCArIHRoaXMudXJsRmlsdGVyTGlzdFt1cmxQYXRoXVxyXG4gICAgICAgIClcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIG1hcChmZWF0dXJlQ29sbGVjdGlvbiA9PlxyXG4gICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoZiA9PiB7XHJcbiAgICAgICAgICAgICAgZi5tZXRhID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGYucHJvcGVydGllcy5jb2RlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByZXR1cm4gZjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBMb2FkaW5nIGl0ZW0gbGlzdCAoU1RSSU5HKVxyXG4gICAqL1xyXG4gIGxvYWRUaGVtYXRpY3NMaXN0KCkge1xyXG4gICAgY29uc3QgdXJsID0gJ3R5cGVzJztcclxuICAgIGNvbnN0IGl0ZW1zOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5iYXNlVXJsICsgdXJsKS5waXBlKFxyXG4gICAgICBtYXAoKHR5cGVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKCdsaWV1eCcpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgc291cmNlOiB0eXBlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGxldCBzdWJzdHIgPSB0eXBlLnN1YnN0cmluZyg2LCB0eXBlLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gc3Vic3RyO1xyXG4gICAgICAgICAgICBpZiAoc3Vic3RyLmluY2x1ZGVzKCcuJykpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHN1YnN0ci5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgICAgICAgbmFtZSA9IHN1YnN0ci5zdWJzdHJpbmcoaW5kZXggKyAxLCBzdWJzdHIubGVuZ3RoKTtcclxuICAgICAgICAgICAgICBzdWJzdHIgPSBzdWJzdHIuc3Vic3RyaW5nKDAsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpdGVtLmdyb3VwID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLmdyb3VwLicgKyBzdWJzdHJcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5ncm91cCA9IHN1YnN0ci5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIHN1YnN0ci5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEtleUJ5VmFsdWUodGhpcy51cmxGaWx0ZXJMaXN0LCB0eXBlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW06IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogdHlwZVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0S2V5QnlWYWx1ZSh0aGlzLnVybEZpbHRlckxpc3QsIHR5cGUpO1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaXRlbS5zb3VyY2UgPSB0eXBlO1xyXG5cclxuICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogTG9hZGluZyBkYXRhIGZvciBzcGF0aWFsIGZpbHRlciBpdGVtIGNvbXBvbmVudCAoQWRkcmVzcyBvciBUaGVtYXRpY3MpIGRlcGVuZHMgb24gcHJlZGVmaW5lZCB6b25lIG9yIGRyYXcgem9uZSAoZmVhdHVyZSlcclxuICAgKi9cclxuICBsb2FkRmlsdGVySXRlbShcclxuICAgIGZlYXR1cmUsXHJcbiAgICBpdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxyXG4gICAgdHlwZT86IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUsXHJcbiAgICB0aGVtYXRpYz86IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyxcclxuICAgIGJ1ZmZlcj86IG51bWJlclxyXG4gICkge1xyXG4gICAgaWYgKHR5cGUpIHtcclxuICAgICAgLy8gUHJlZGVmaW5lZCB0eXBlXHJcbiAgICAgIGNvbnN0IHVybFR5cGUgPSB0eXBlIGFzIHN0cmluZztcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy51cmxGaWx0ZXJMaXN0W3VybFR5cGVdO1xyXG4gICAgICBsZXQgdXJsSXRlbSA9ICcnO1xyXG4gICAgICBpZiAoaXRlbVR5cGUgPT09IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzKSB7XHJcbiAgICAgICAgdXJsSXRlbSA9ICdhZHJlc3Nlcyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgLmdldDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4oXHJcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcclxuICAgICAgICAgICAgICAgIGljb246ICd0cnVlJyxcclxuICAgICAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XHJcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgZi5tZXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLkFkZHJlc3MnXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgdGhlbWF0aWNzIHNlYXJjaFxyXG4gICAgICAgIHVybEl0ZW0gPSB0aGVtYXRpYy5zb3VyY2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgLmdldDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4oXHJcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcclxuICAgICAgICAgICAgICAgIGljb246ICd0cnVlJyxcclxuICAgICAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XHJcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgZi5tZXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGVtYXRpYy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZjtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBEcmF3IHR5cGVcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJ2xvY2F0ZSc7XHJcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcclxuICAgICAgICBjb25zdCB1cmxJdGVtID0gJz90eXBlPWFkcmVzc2VzJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4odXJsICsgdXJsSXRlbSwge1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnLFxyXG4gICAgICAgICAgICBpY29uOiAndHJ1ZScsXHJcbiAgICAgICAgICAgIGxvYzogSlNPTi5zdHJpbmdpZnkoZmVhdHVyZSksXHJcbiAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgc2ltcGxpZmllZDogJzEwMCdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XHJcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgZi5tZXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLkFkZHJlc3MnXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgdGhlbWF0aWNzIHNlYXJjaFxyXG4gICAgICAgIGNvbnN0IHVybEl0ZW0gPSAnP3R5cGU9JyArIHRoZW1hdGljLnNvdXJjZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAucG9zdDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4odXJsICsgdXJsSXRlbSwge1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnLFxyXG4gICAgICAgICAgICBpY29uOiAndHJ1ZScsXHJcbiAgICAgICAgICAgIGxvYzogSlNPTi5zdHJpbmdpZnkoZmVhdHVyZSksXHJcbiAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgc2ltcGxpZmllZDogJzEwMCdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKGZlYXR1cmVDb2xsZWN0aW9uID0+XHJcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgZi5tZXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGVtYXRpYy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZjtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEdldCBvbmUgdGVycml0b3J5IGJ5IGlkIChXSVRIIEdFT01FVFJZKVxyXG4gICAqL1xyXG4gIGxvYWRJdGVtQnlJZChcclxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICB0eXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlXHJcbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XHJcbiAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcclxuICAgIGNvbnN0IGZlYXR1cmVDb2RlID0gJy8nICsgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGU7XHJcbiAgICBpZiAoZmVhdHVyZVR5cGUgJiYgZmVhdHVyZUNvZGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQ8RmVhdHVyZT4odGhpcy5iYXNlVXJsICsgZmVhdHVyZVR5cGUgKyBmZWF0dXJlQ29kZSwge1xyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGdlb21ldHJ5OiAndHJ1ZSdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKGYgPT4ge1xyXG4gICAgICAgICAgICBmLm1ldGEgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGYucHJvcGVydGllcy5jb2RlLFxyXG4gICAgICAgICAgICAgIGFsaWFzOiBmLnByb3BlcnRpZXMubm9tLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBmLnByb3BlcnRpZXMubm9tXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiBmO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBHZXQgYnVmZmVyIGdlb21ldHJ5XHJcbiAgICovXHJcbiAgbG9hZEJ1ZmZlckdlb21ldHJ5KFxyXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcclxuICAgIGZpbHRlclR5cGU6IFNwYXRpYWxGaWx0ZXJUeXBlLFxyXG4gICAgYnVmZmVyPzogbnVtYmVyLFxyXG4gICAgdHlwZT86IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUsXHJcbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlPiB7XHJcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcclxuICAgICAgY29uc3QgZmVhdHVyZUNvZGUgPSAnLycgKyBmZWF0dXJlLnByb3BlcnRpZXMuY29kZTtcclxuICAgICAgaWYgKGZlYXR1cmVUeXBlICYmIGZlYXR1cmVDb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgLmdldDxGZWF0dXJlPih0aGlzLmJhc2VVcmwgKyBmZWF0dXJlVHlwZSArIGZlYXR1cmVDb2RlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBnZW9tZXRyeTogJzEwMCcsXHJcbiAgICAgICAgICAgICAgICBidWZmZXJPdXRwdXQ6IGJ1ZmZlci50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgbWFwKGYgPT4ge1xyXG4gICAgICAgICAgICAgIGYubWV0YSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcclxuICAgICAgICAgICAgICAgIGFsaWFzOiBmLnByb3BlcnRpZXMubm9tLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGYucHJvcGVydGllcy5ub21cclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHJldHVybiBmO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PEZlYXR1cmU+KHRoaXMuYmFzZVVybCArICdnZW9zcGF0aWFsL2J1ZmZlcj8nLCB7XHJcbiAgICAgICAgICBidWZmZXIsXHJcbiAgICAgICAgICBsb2M6IEpTT04uc3RyaW5naWZ5KGZlYXR1cmUpXHJcbiAgICAgICAgfSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIG1hcChmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGY7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10,4 +10,4 @@ export var TimeFilterStyle;
|
|
|
10
10
|
TimeFilterStyle["CALENDAR"] = "calendar";
|
|
11
11
|
TimeFilterStyle["SLIDER"] = "slider";
|
|
12
12
|
})(TimeFilterStyle || (TimeFilterStyle = {}));
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1maWx0ZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvdGltZS1maWx0ZXIuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLCtCQUFhLENBQUE7SUFDYiwrQkFBYSxDQUFBO0lBQ2IsdUNBQXFCLENBQUE7SUFDckIsK0JBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3ZCLHdDQUFxQixDQUFBO0lBQ3JCLG9DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFRpbWVGaWx0ZXJUeXBlIHtcclxuICAgIERBVEUgPSAnZGF0ZScsXHJcbiAgICBUSU1FID0gJ3RpbWUnLFxyXG4gICAgREFURVRJTUUgPSAnZGF0ZXRpbWUnLFxyXG4gICAgWUVBUiA9ICd5ZWFyJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVGltZUZpbHRlclN0eWxlIHtcclxuICAgIENBTEVOREFSID0gJ2NhbGVuZGFyJyxcclxuICAgIFNMSURFUiA9ICdzbGlkZXInLFxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1maWx0ZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL3NoYXJlZC90aW1lLWZpbHRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVGltZUZpbHRlclR5cGUsIFRpbWVGaWx0ZXJTdHlsZSB9IGZyb20gJy4vdGltZS1maWx0ZXIuZW51bSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lRmlsdGVyT3B0aW9ucyB7XHJcbiAgbWluPzogc3RyaW5nO1xyXG4gIG1heD86IHN0cmluZztcclxuICByYW5nZT86IGJvb2xlYW47XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgdmFsdWVzPzogW3N0cmluZywgc3RyaW5nXTtcclxuICB0eXBlPzogVGltZUZpbHRlclR5cGU7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIHN0eWxlPzogVGltZUZpbHRlclN0eWxlO1xyXG4gIHN0ZXA/OiBudW1iZXI7XHJcbiAgdGltZUludGVydmFsPzogbnVtYmVyO1xyXG4gIGN1cnJlbnQ/OiBib29sZWFuO1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgZXh0ZW5kcyBXTVNEYXRhU291cmNlT3B0aW9ucyB7XHJcbiAgdGltZUZpbHRlcmFibGU/OiBib29sZWFuO1xyXG4gIHRpbWVGaWx0ZXI/OiBUaW1lRmlsdGVyT3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UgZXh0ZW5kcyBXTVNEYXRhU291cmNlIHtcclxuICBvcHRpb25zOiBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gIHRpbWVGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8VGltZUZpbHRlck9wdGlvbnM+O1xyXG4gIHNldFRpbWVGaWx0ZXIob2djRmlsdGVyczogVGltZUZpbHRlck9wdGlvbnMsIHRyaWdnZXJFdmVudD86IGJvb2xlYW4gKTtcclxuICBmaWx0ZXJCeURhdGUoZGF0ZTogRGF0ZSB8IFtEYXRlLCBEYXRlXSk7XHJcbiAgZmlsdGVyQnlZZWFyKHllYXI6IHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ10pO1xyXG59XHJcbiJdfQ==
|