@igo2/geo 1.15.3 → 16.0.0-rc.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/esm2022/igo2-geo.mjs +5 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +320 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +319 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +278 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +78 -0
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +223 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +89 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +230 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +91 -0
- package/esm2022/lib/catalog/catalog.module.mjs +48 -0
- package/esm2022/lib/catalog/index.mjs +5 -0
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
- package/esm2022/lib/catalog/shared/catalog.service.mjs +666 -0
- package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
- package/esm2022/lib/catalog/shared/index.mjs +5 -0
- package/esm2022/lib/datasource/datasource.module.mjs +22 -0
- package/esm2022/lib/datasource/index.mjs +3 -0
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +448 -0
- package/esm2022/lib/datasource/shared/datasource.service.mjs +259 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +212 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +109 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +15 -0
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +34 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +43 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +61 -0
- package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +28 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +12 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +51 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +15 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +55 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +79 -0
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +169 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +218 -0
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +222 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +16 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +9 -0
- package/esm2022/lib/datasource/shared/index.mjs +5 -0
- package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
- package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
- package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
- package/esm2022/lib/datasource/utils/index.mjs +2 -0
- package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +265 -0
- package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +294 -0
- package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +215 -0
- package/esm2022/lib/directions/directions-results/index.mjs +2 -0
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +2 -0
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +16 -0
- package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +128 -0
- package/esm2022/lib/directions/directions.component.mjs +349 -0
- package/esm2022/lib/directions/directions.module.mjs +102 -0
- package/esm2022/lib/directions/index.mjs +7 -0
- package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
- package/esm2022/lib/directions/shared/directions.enum.mjs +28 -0
- package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
- package/esm2022/lib/directions/shared/directions.service.mjs +202 -0
- package/esm2022/lib/directions/shared/directions.utils.mjs +559 -0
- package/esm2022/lib/directions/shared/index.mjs +6 -0
- package/esm2022/lib/directions/shared/store.mjs +21 -0
- package/esm2022/lib/download/download-button/download-button.component.mjs +65 -0
- package/esm2022/lib/download/download-button/index.mjs +2 -0
- package/esm2022/lib/download/download.module.mjs +42 -0
- package/esm2022/lib/download/index.mjs +3 -0
- package/esm2022/lib/download/shared/download.interface.mjs +2 -0
- package/esm2022/lib/download/shared/download.service.mjs +67 -0
- package/esm2022/lib/download/shared/index.mjs +3 -0
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +57 -0
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +677 -0
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +48 -0
- package/esm2022/lib/draw/draw/draw.component.mjs +1369 -0
- package/esm2022/lib/draw/draw/draw.module.mjs +117 -0
- package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
- package/esm2022/lib/draw/index.mjs +3 -0
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
- package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
- package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
- package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
- package/esm2022/lib/draw/shared/index.mjs +5 -0
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +440 -0
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +57 -0
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +40 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +120 -0
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +23 -0
- package/esm2022/lib/feature/feature.module.mjs +21 -0
- package/esm2022/lib/feature/index.mjs +4 -0
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +27 -0
- package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
- package/esm2022/lib/feature/shared/feature.utils.mjs +333 -0
- package/esm2022/lib/feature/shared/index.mjs +8 -0
- package/esm2022/lib/feature/shared/store.mjs +143 -0
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +115 -0
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +96 -0
- package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +104 -0
- package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
- package/esm2022/lib/feature/shared/strategies/search.mjs +159 -0
- package/esm2022/lib/feature/shared/strategies/selection.mjs +384 -0
- package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
- package/esm2022/lib/filter/filter.module.mjs +300 -0
- package/esm2022/lib/filter/index.mjs +16 -0
- package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +153 -0
- package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +663 -0
- package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1344 -0
- package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +226 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +936 -0
- package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +63 -0
- package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +320 -0
- package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +36 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +47 -0
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +55 -0
- package/esm2022/lib/filter/shared/index.mjs +12 -0
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +73 -0
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/ogc-filter.mjs +699 -0
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +48 -0
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
- package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +280 -0
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/time-filter.service.mjs +108 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1150 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +244 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +157 -0
- package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +82 -0
- package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +755 -0
- package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +124 -0
- package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +36 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +40 -0
- package/esm2022/lib/geo.module.mjs +106 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +563 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +218 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +56 -0
- package/esm2022/lib/geometry/geometry.module.mjs +20 -0
- package/esm2022/lib/geometry/index.mjs +4 -0
- package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
- package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
- package/esm2022/lib/geometry/shared/controls/modify.mjs +541 -0
- package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +26 -0
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +122 -0
- package/esm2022/lib/geometry/shared/index.mjs +5 -0
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +66 -0
- package/esm2022/lib/import-export/export-button/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +1350 -0
- package/esm2022/lib/import-export/import-export/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export.module.mjs +98 -0
- package/esm2022/lib/import-export/index.mjs +4 -0
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +174 -0
- package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
- package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/export.service.mjs +205 -0
- package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
- package/esm2022/lib/import-export/shared/export.utils.mjs +47 -0
- package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
- package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
- package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
- package/esm2022/lib/import-export/shared/index.mjs +11 -0
- package/esm2022/lib/layer/index.mjs +10 -0
- package/esm2022/lib/layer/layer-item/index.mjs +2 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +324 -0
- package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +429 -0
- package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +93 -0
- package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +201 -0
- package/esm2022/lib/layer/layer-list/index.mjs +4 -0
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +69 -0
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +1022 -0
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +19 -0
- package/esm2022/lib/layer/layer-list-tool/index.mjs +5 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +157 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +7 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +22 -0
- package/esm2022/lib/layer/layer.module.mjs +175 -0
- package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
- package/esm2022/lib/layer/shared/index.mjs +5 -0
- package/esm2022/lib/layer/shared/layer.enums.mjs +2 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +268 -0
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/index.mjs +13 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +17 -0
- package/esm2022/lib/layer/shared/layers/layer.mjs +184 -0
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +50 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +562 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +107 -0
- package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +60 -0
- package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
- package/esm2022/lib/layer/utils/index.mjs +6 -0
- package/esm2022/lib/layer/utils/layer.utils.mjs +11 -0
- package/esm2022/lib/layer/utils/outputLegend.mjs +28 -0
- package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
- package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +16 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +120 -0
- package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +155 -0
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +87 -0
- package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +80 -0
- package/esm2022/lib/map/home-extent-button/index.mjs +2 -0
- package/esm2022/lib/map/index.mjs +14 -0
- package/esm2022/lib/map/info-section/index.mjs +2 -0
- package/esm2022/lib/map/info-section/info-section.component.mjs +29 -0
- package/esm2022/lib/map/map-browser/index.mjs +2 -0
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +74 -0
- package/esm2022/lib/map/map-center/index.mjs +2 -0
- package/esm2022/lib/map/map-center/map-center.component.mjs +61 -0
- package/esm2022/lib/map/map.module.mjs +120 -0
- package/esm2022/lib/map/menu-button/index.mjs +2 -0
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +66 -0
- package/esm2022/lib/map/offline-button/index.mjs +2 -0
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +55 -0
- package/esm2022/lib/map/rotation-button/index.mjs +2 -0
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +73 -0
- package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
- package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
- package/esm2022/lib/map/shared/controllers/view.mjs +360 -0
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +493 -0
- package/esm2022/lib/map/shared/index.mjs +15 -0
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +248 -0
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +121 -0
- package/esm2022/lib/map/shared/map.abstract.mjs +23 -0
- package/esm2022/lib/map/shared/map.enums.mjs +6 -0
- package/esm2022/lib/map/shared/map.interface.mjs +2 -0
- package/esm2022/lib/map/shared/map.mjs +434 -0
- package/esm2022/lib/map/shared/map.service.mjs +30 -0
- package/esm2022/lib/map/shared/map.utils.mjs +456 -0
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +107 -0
- package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
- package/esm2022/lib/map/shared/projection.service.mjs +67 -0
- package/esm2022/lib/map/shared/projection.utils.mjs +64 -0
- package/esm2022/lib/map/swipe-control/index.mjs +2 -0
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +219 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +78 -0
- package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +106 -0
- package/esm2022/lib/map/zoom-button/index.mjs +2 -0
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +49 -0
- package/esm2022/lib/measure/index.mjs +4 -0
- package/esm2022/lib/measure/measure.module.mjs +18 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +39 -0
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +184 -0
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +162 -0
- package/esm2022/lib/measure/measurer/measurer.component.mjs +1121 -0
- package/esm2022/lib/measure/measurer/measurer.module.mjs +95 -0
- package/esm2022/lib/measure/shared/index.mjs +4 -0
- package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
- package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
- package/esm2022/lib/metadata/index.mjs +3 -0
- package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +140 -0
- package/esm2022/lib/metadata/metadata.module.mjs +47 -0
- package/esm2022/lib/metadata/shared/index.mjs +3 -0
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
- package/esm2022/lib/metadata/shared/metadata.service.mjs +19 -0
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +128 -0
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +175 -0
- package/esm2022/lib/offline/geoDB/index.mjs +5 -0
- package/esm2022/lib/offline/index.mjs +4 -0
- package/esm2022/lib/offline/layerDB/index.mjs +3 -0
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +84 -0
- package/esm2022/lib/offline/shared/geo-network.service.mjs +87 -0
- package/esm2022/lib/offline/shared/index.mjs +2 -0
- package/esm2022/lib/overlay/index.mjs +2 -0
- package/esm2022/lib/overlay/overlay.module.mjs +23 -0
- package/esm2022/lib/overlay/shared/index.mjs +6 -0
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +38 -0
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
- package/esm2022/lib/overlay/shared/overlay.mjs +138 -0
- package/esm2022/lib/overlay/shared/overlay.service.mjs +26 -0
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
- package/esm2022/lib/print/index.mjs +4 -0
- package/esm2022/lib/print/print/print.component.mjs +122 -0
- package/esm2022/lib/print/print-form/index.mjs +2 -0
- package/esm2022/lib/print/print-form/print-form.component.mjs +580 -0
- package/esm2022/lib/print/print.module.mjs +65 -0
- package/esm2022/lib/print/shared/geopdf.mjs +68 -0
- package/esm2022/lib/print/shared/index.mjs +5 -0
- package/esm2022/lib/print/shared/print.interface.mjs +2 -0
- package/esm2022/lib/print/shared/print.service.mjs +1093 -0
- package/esm2022/lib/print/shared/print.type.mjs +30 -0
- package/esm2022/lib/query/index.mjs +2 -0
- package/esm2022/lib/query/query.module.mjs +29 -0
- package/esm2022/lib/query/shared/index.mjs +7 -0
- package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
- package/esm2022/lib/query/shared/query.directive.mjs +285 -0
- package/esm2022/lib/query/shared/query.enums.mjs +30 -0
- package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
- package/esm2022/lib/query/shared/query.service.mjs +753 -0
- package/esm2022/lib/query/shared/query.utils.mjs +41 -0
- package/esm2022/lib/search/index.mjs +12 -0
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +559 -0
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +73 -0
- package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +40 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +132 -0
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +456 -0
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +166 -0
- package/esm2022/lib/search/search-results/search-results.component.mjs +480 -0
- package/esm2022/lib/search/search-results/search-results.module.mjs +104 -0
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +133 -0
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +56 -0
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +448 -0
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +60 -0
- package/esm2022/lib/search/search.module.mjs +67 -0
- package/esm2022/lib/search/shared/index.mjs +9 -0
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +337 -0
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
- package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
- package/esm2022/lib/search/shared/search.enums.mjs +4 -0
- package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/search.service.mjs +130 -0
- package/esm2022/lib/search/shared/search.utils.mjs +92 -0
- package/esm2022/lib/search/shared/sources/cadastre.mjs +139 -0
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +23 -0
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/coordinates.mjs +166 -0
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +40 -0
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/icherche.mjs +796 -0
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +66 -0
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/ilayer.mjs +335 -0
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +46 -0
- package/esm2022/lib/search/shared/sources/index.mjs +23 -0
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +23 -0
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/source.mjs +220 -0
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +455 -0
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +41 -0
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/workspace.mjs +191 -0
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +22 -0
- package/esm2022/lib/style/index.mjs +5 -0
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +359 -0
- package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
- package/esm2022/lib/style/shared/feature/feature-style.mjs +161 -0
- package/esm2022/lib/style/shared/feature/index.mjs +2 -0
- package/esm2022/lib/style/shared/font.enum.mjs +17 -0
- package/esm2022/lib/style/shared/index.mjs +5 -0
- package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +45 -0
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
- package/esm2022/lib/style/shared/vector/index.mjs +4 -0
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/index.mjs +5 -0
- package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
- package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
- package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
- package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +288 -0
- package/esm2022/lib/style/style-modal/index.mjs +5 -0
- package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +182 -0
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +48 -0
- package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
- package/esm2022/lib/style/style-service/draw-style.service.mjs +256 -0
- package/esm2022/lib/style/style-service/index.mjs +3 -0
- package/esm2022/lib/style/style-service/style.service.mjs +393 -0
- package/esm2022/lib/style/style.module.mjs +92 -0
- package/esm2022/lib/toast/index.mjs +2 -0
- package/esm2022/lib/toast/toast.component.mjs +119 -0
- package/esm2022/lib/toast/toast.module.mjs +45 -0
- package/esm2022/lib/utils/googleLinks.mjs +13 -0
- package/esm2022/lib/utils/id-generator.mjs +110 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/osmLinks.mjs +9 -0
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
- package/esm2022/lib/wkt/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/wkt.service.mjs +236 -0
- package/esm2022/lib/wkt/wkt.module.mjs +22 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +52 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +36 -0
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
- package/esm2022/lib/workspace/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +304 -0
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +711 -0
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +109 -0
- package/esm2022/lib/workspace/shared/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +102 -0
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +225 -0
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +185 -0
- package/esm2022/lib/workspace/widgets/index.mjs +4 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +52 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +25 -0
- package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +167 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +22 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +135 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +22 -0
- package/esm2022/lib/workspace/workspace.module.mjs +58 -0
- package/esm2022/public_api.mjs +57 -0
- package/fesm2022/igo2-geo.mjs +48131 -0
- package/fesm2022/igo2-geo.mjs.map +1 -0
- package/geo-theme.scss +21 -0
- package/index.d.ts +5 -5
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +117 -117
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +77 -77
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +99 -99
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +22 -22
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +45 -45
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +25 -25
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +64 -64
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +26 -26
- package/lib/catalog/catalog.module.d.ts +14 -14
- package/lib/catalog/index.d.ts +4 -4
- package/lib/catalog/shared/catalog.abstract.d.ts +41 -50
- package/lib/catalog/shared/catalog.enum.d.ts +14 -14
- package/lib/catalog/shared/catalog.interface.d.ts +76 -76
- package/lib/catalog/shared/catalog.service.d.ts +36 -36
- package/lib/catalog/shared/catalogs.d.ts +35 -0
- package/lib/catalog/shared/index.d.ts +4 -4
- package/lib/datasource/datasource.module.d.ts +8 -8
- package/lib/datasource/index.d.ts +2 -2
- package/lib/datasource/shared/capabilities.service.d.ts +37 -37
- package/lib/datasource/shared/datasource.service.d.ts +37 -37
- package/lib/datasource/shared/datasources/any-datasource.d.ts +16 -16
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +14 -14
- package/lib/datasource/shared/datasources/arcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/datasources/data.service.d.ts +3 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +113 -113
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +12 -12
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +23 -23
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/index.d.ts +35 -35
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/osm-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/tiledebug-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +9 -9
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/websocket-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs.service.d.ts +17 -17
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +45 -31
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +37 -32
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +41 -41
- package/lib/datasource/shared/datasources/wmts-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/xyz-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/index.d.ts +4 -4
- package/lib/datasource/shared/options/index.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.interface.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.providers.d.ts +10 -10
- package/lib/datasource/shared/options/options-api.service.d.ts +16 -16
- package/lib/datasource/shared/options/options.service.d.ts +6 -6
- package/lib/datasource/utils/index.d.ts +1 -1
- package/lib/datasource/utils/tilegrid.d.ts +2 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +35 -30
- package/lib/directions/directions-buttons/index.d.ts +1 -1
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -45
- package/lib/directions/directions-inputs/index.d.ts +1 -1
- package/lib/directions/directions-results/directions-results.component.d.ts +30 -30
- package/lib/directions/directions-results/directions-results.theming.scss +10 -0
- package/lib/directions/directions-results/index.d.ts +1 -1
- package/lib/directions/directions-sources/directions-source.d.ts +7 -7
- package/lib/directions/directions-sources/directions-source.interface.d.ts +11 -11
- package/lib/directions/directions-sources/directions-source.provider.d.ts +11 -11
- package/lib/directions/directions-sources/index.d.ts +4 -4
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +24 -23
- package/lib/directions/directions.component.d.ts +56 -56
- package/lib/directions/directions.module.d.ts +26 -26
- package/lib/directions/directions.theming.scss +6 -0
- package/lib/directions/index.d.ts +6 -6
- package/lib/directions/shared/directions-source.service.d.ts +11 -11
- package/lib/directions/shared/directions.enum.d.ts +22 -22
- package/lib/directions/shared/directions.interface.d.ts +126 -126
- package/lib/directions/shared/directions.service.d.ts +28 -13
- package/lib/directions/shared/directions.utils.d.ts +42 -42
- package/lib/directions/shared/index.d.ts +5 -5
- package/lib/directions/shared/store.d.ts +18 -18
- package/lib/download/download-button/download-button.component.d.ts +18 -18
- package/lib/download/download-button/index.d.ts +1 -1
- package/lib/download/download.module.d.ts +14 -14
- package/lib/download/index.d.ts +2 -2
- package/lib/download/shared/download.interface.d.ts +10 -10
- package/lib/download/shared/download.service.d.ts +10 -10
- package/lib/download/shared/index.d.ts +2 -2
- package/lib/draw/draw/draw-layer-popup.component.d.ts +14 -14
- package/lib/draw/draw/draw-popup.component.d.ts +63 -63
- package/lib/draw/draw/draw-shorcuts.component.d.ts +5 -5
- package/lib/draw/draw/draw.component.d.ts +240 -240
- package/lib/draw/draw/draw.module.d.ts +33 -34
- package/lib/draw/draw.theming.scss +32 -0
- package/lib/draw/drawingTool.module.d.ts +7 -7
- package/lib/draw/index.d.ts +2 -2
- package/lib/draw/shared/draw-icon.service.d.ts +12 -12
- package/lib/draw/shared/draw.enum.d.ts +17 -17
- package/lib/draw/shared/draw.interface.d.ts +40 -40
- package/lib/draw/shared/draw.utils.d.ts +35 -35
- package/lib/draw/shared/index.d.ts +4 -4
- package/lib/feature/feature-details/feature-details.component.d.ts +60 -60
- package/lib/feature/feature-details/feature-details.directive.d.ts +19 -19
- package/lib/feature/feature-details/feature-details.module.d.ts +15 -15
- package/lib/feature/feature-details/feature-details.theming.scss +16 -0
- package/lib/feature/feature-form/feature-form.component.d.ts +50 -50
- package/lib/feature/feature-form/feature-form.module.d.ts +12 -12
- package/lib/feature/feature.module.d.ts +9 -9
- package/lib/feature/feature.theming.scss +4 -0
- package/lib/feature/index.d.ts +3 -3
- package/lib/feature/shared/feature-store.utils.d.ts +10 -0
- package/lib/feature/shared/feature.enums.d.ts +7 -7
- package/lib/feature/shared/feature.interfaces.d.ts +82 -79
- package/lib/feature/shared/feature.utils.d.ts +97 -106
- package/lib/feature/shared/index.d.ts +7 -6
- package/lib/feature/shared/store.d.ts +78 -78
- package/lib/feature/shared/strategies/geo-properties.d.ts +61 -0
- package/lib/feature/shared/strategies/in-map-extent.d.ts +52 -52
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +52 -52
- package/lib/feature/shared/strategies/index.d.ts +7 -6
- package/lib/feature/shared/strategies/loading-layer.d.ts +59 -59
- package/lib/feature/shared/strategies/loading.d.ts +75 -75
- package/lib/feature/shared/strategies/search.d.ts +55 -55
- package/lib/feature/shared/strategies/selection.d.ts +176 -176
- package/lib/feature/shared/strategies.utils.d.ts +17 -17
- package/lib/filter/filter.module.d.ts +53 -53
- package/lib/filter/filter.theming.scss +16 -0
- package/lib/filter/index.d.ts +15 -15
- package/lib/filter/ogc-filter-button/index.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +20 -20
- package/lib/filter/ogc-filter-form/index.d.ts +1 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +65 -65
- package/lib/filter/ogc-filter-selection/index.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +93 -93
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -0
- package/lib/filter/ogc-filter-time/index.d.ts +2 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +39 -39
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.theming.scss +15 -0
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +86 -86
- package/lib/filter/ogc-filterable-form/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +15 -15
- package/lib/filter/ogc-filterable-item/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +41 -41
- package/lib/filter/ogc-filterable-list/index.d.ts +2 -2
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +14 -14
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +10 -10
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +10 -10
- package/lib/filter/shared/index.d.ts +11 -11
- package/lib/filter/shared/ogc-filter-time.service.d.ts +19 -19
- package/lib/filter/shared/ogc-filter.d.ts +29 -29
- package/lib/filter/shared/ogc-filter.enum.d.ts +27 -27
- package/lib/filter/shared/ogc-filter.interface.d.ts +200 -200
- package/lib/filter/shared/ogc-filter.service.d.ts +11 -11
- package/lib/filter/shared/spatial-filter.enum.d.ts +19 -19
- package/lib/filter/shared/spatial-filter.interface.d.ts +10 -10
- package/lib/filter/shared/spatial-filter.service.d.ts +37 -37
- package/lib/filter/shared/time-filter.enum.d.ts +10 -10
- package/lib/filter/shared/time-filter.interface.d.ts +15 -29
- package/lib/filter/shared/time-filter.service.d.ts +11 -11
- package/lib/filter/spatial-filter/spatial-filter-item/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +166 -166
- package/lib/filter/spatial-filter/spatial-filter-list/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +57 -57
- package/lib/filter/spatial-filter/spatial-filter-type/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +45 -45
- package/lib/filter/time-filter-button/index.d.ts +1 -1
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +20 -20
- package/lib/filter/time-filter-form/index.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +77 -77
- package/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -0
- package/lib/filter/time-filter-item/index.d.ts +1 -1
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +28 -28
- package/lib/filter/time-filter-list/index.d.ts +2 -2
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +14 -14
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +12 -12
- package/lib/geo.module.d.ts +29 -29
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +202 -202
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +88 -88
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +19 -19
- package/lib/geometry/geometry.module.d.ts +8 -8
- package/lib/geometry/index.d.ts +3 -3
- package/lib/geometry/shared/controls/draw.d.ts +150 -150
- package/lib/geometry/shared/controls/index.d.ts +3 -3
- package/lib/geometry/shared/controls/modify.d.ts +228 -228
- package/lib/geometry/shared/controls/slice.d.ts +99 -99
- package/lib/geometry/shared/geometry.errors.d.ts +11 -11
- package/lib/geometry/shared/geometry.interfaces.d.ts +13 -13
- package/lib/geometry/shared/geometry.utils.d.ts +45 -45
- package/lib/geometry/shared/index.d.ts +4 -4
- package/lib/import-export/export-button/export-button.component.d.ts +16 -16
- package/lib/import-export/export-button/index.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +109 -109
- package/lib/import-export/import-export/index.d.ts +1 -1
- package/lib/import-export/import-export.module.d.ts +25 -25
- package/lib/import-export/index.d.ts +3 -3
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +39 -39
- package/lib/import-export/shared/export.errors.d.ts +8 -8
- package/lib/import-export/shared/export.interface.d.ts +11 -11
- package/lib/import-export/shared/export.service.d.ts +30 -30
- package/lib/import-export/shared/export.type.d.ts +16 -16
- package/lib/import-export/shared/export.utils.d.ts +19 -19
- package/lib/import-export/shared/import.errors.d.ts +20 -20
- package/lib/import-export/shared/import.interface.d.ts +10 -10
- package/lib/import-export/shared/import.service.d.ts +31 -31
- package/lib/import-export/shared/import.utils.d.ts +20 -20
- package/lib/import-export/shared/index.d.ts +10 -10
- package/lib/layer/index.d.ts +9 -9
- package/lib/layer/layer-item/index.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +62 -62
- package/lib/layer/layer-legend/index.d.ts +1 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +90 -90
- package/lib/layer/layer-legend/layer-legend.theming.scss +10 -0
- package/lib/layer/layer-legend-item/index.d.ts +1 -1
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +22 -22
- package/lib/layer/layer-legend-list/index.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +16 -16
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +31 -31
- package/lib/layer/layer-list/index.d.ts +3 -3
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +19 -19
- package/lib/layer/layer-list/layer-list.component.d.ts +127 -127
- package/lib/layer/layer-list/layer-list.enum.d.ts +15 -15
- package/lib/layer/layer-list-tool/index.d.ts +4 -4
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +32 -32
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +5 -5
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +8 -8
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +14 -14
- package/lib/layer/layer-list-tool/layer-list-tool.theming.scss +22 -0
- package/lib/layer/layer.module.d.ts +34 -35
- package/lib/layer/layer.theming.scss +24 -0
- package/lib/layer/shared/clusterParam.d.ts +13 -13
- package/lib/layer/shared/index.d.ts +4 -4
- package/lib/layer/shared/layer.enums.d.ts +1 -1
- package/lib/layer/shared/layer.service.d.ts +33 -33
- package/lib/layer/shared/layers/any-layer.d.ts +6 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +6 -6
- package/lib/layer/shared/layers/image-layer.d.ts +21 -21
- package/lib/layer/shared/layers/image-layer.interface.d.ts +19 -19
- package/lib/layer/shared/layers/index.d.ts +12 -12
- package/lib/layer/shared/layers/layer.d.ts +66 -66
- package/lib/layer/shared/layers/layer.interface.d.ts +90 -109
- package/lib/layer/shared/layers/legend.interface.d.ts +22 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +31 -31
- package/lib/layer/shared/layers/tile-layer.interface.d.ts +20 -20
- package/lib/layer/shared/layers/vector-layer.d.ts +94 -94
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +42 -42
- package/lib/layer/shared/layers/vectortile-layer.d.ts +28 -28
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +16 -16
- package/lib/layer/track-feature-button/index.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +15 -15
- package/lib/layer/utils/image-watcher.d.ts +16 -16
- package/lib/layer/utils/index.d.ts +5 -5
- package/lib/layer/utils/layer.utils.d.ts +2 -2
- package/lib/layer/utils/outputLegend.d.ts +7 -7
- package/lib/layer/utils/tile-watcher.d.ts +14 -14
- package/lib/layer/utils/vector-watcher.d.ts +13 -13
- package/lib/map/baselayers-switcher/baselayers-switcher.animation.d.ts +2 -2
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +22 -21
- package/lib/map/baselayers-switcher/index.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +29 -29
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +22 -22
- package/lib/map/geolocate-button/index.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -20
- package/lib/map/home-extent-button/index.d.ts +1 -1
- package/lib/map/index.d.ts +13 -13
- package/lib/map/info-section/index.d.ts +1 -1
- package/lib/map/info-section/info-section.component.d.ts +7 -7
- package/lib/map/map-browser/index.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +25 -25
- package/lib/map/map-browser/map-browser.theming.scss +46 -0
- package/lib/map/map-center/index.d.ts +1 -1
- package/lib/map/map-center/map-center.component.d.ts +31 -31
- package/lib/map/map.module.d.ts +28 -28
- package/lib/map/map.theming.scss +9 -0
- package/lib/map/menu-button/index.d.ts +1 -1
- package/lib/map/menu-button/menu-button.component.d.ts +17 -17
- package/lib/map/menu-button/menu-button.theming.scss +24 -0
- package/lib/map/offline-button/index.d.ts +1 -1
- package/lib/map/offline-button/offline-button.component.d.ts +15 -15
- package/lib/map/rotation-button/index.d.ts +1 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +17 -17
- package/lib/map/shared/controllers/controller.d.ts +29 -29
- package/lib/map/shared/controllers/geolocation.d.ts +95 -127
- package/lib/map/shared/controllers/geolocation.interface.d.ts +30 -0
- package/lib/map/shared/controllers/index.d.ts +4 -3
- package/lib/map/shared/controllers/view.d.ts +200 -200
- package/lib/map/shared/hover-feature.directive.d.ts +124 -124
- package/lib/map/shared/index.d.ts +14 -13
- package/lib/map/shared/linkedLayers.utils.d.ts +17 -17
- package/lib/map/shared/map-pointer-position.directive.d.ts +71 -71
- package/lib/map/shared/map.abstract.d.ts +59 -0
- package/lib/map/shared/map.d.ts +140 -135
- package/lib/map/shared/map.enums.d.ts +4 -4
- package/lib/map/shared/map.interface.d.ts +57 -57
- package/lib/map/shared/map.service.d.ts +19 -19
- package/lib/map/shared/map.utils.d.ts +90 -90
- package/lib/map/shared/mapOffline.directive.d.ts +18 -18
- package/lib/map/shared/projection.interfaces.d.ts +29 -29
- package/lib/map/shared/projection.service.d.ts +19 -19
- package/lib/map/shared/projection.utils.d.ts +19 -19
- package/lib/map/swipe-control/index.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +97 -97
- package/lib/map/utils/layer-watcher.d.ts +20 -20
- package/lib/map/wake-lock-button/index.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +27 -27
- package/lib/map/zoom-button/index.d.ts +1 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +12 -12
- package/lib/map/zoom-button/zoom-button.theming.scss +32 -0
- package/lib/measure/index.d.ts +3 -3
- package/lib/measure/measure.module.d.ts +7 -7
- package/lib/measure/measure.theming.scss +5 -0
- package/lib/measure/measurer/measure-format.pipe.d.ts +15 -15
- package/lib/measure/measurer/measurer-dialog.component.d.ts +14 -14
- package/lib/measure/measurer/measurer-item.component.d.ts +66 -66
- package/lib/measure/measurer/measurer.component.d.ts +405 -405
- package/lib/measure/measurer/measurer.module.d.ts +26 -25
- package/lib/measure/measurer/measurer.theming.scss +26 -0
- package/lib/measure/shared/index.d.ts +3 -3
- package/lib/measure/shared/measure.enum.d.ts +33 -33
- package/lib/measure/shared/measure.interfaces.d.ts +21 -21
- package/lib/measure/shared/measure.utils.d.ts +180 -180
- package/lib/metadata/index.d.ts +2 -2
- package/lib/metadata/metadata-button/index.d.ts +1 -1
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +26 -26
- package/lib/metadata/metadata.module.d.ts +15 -15
- package/lib/metadata/shared/index.d.ts +2 -2
- package/lib/metadata/shared/metadata.interface.d.ts +13 -13
- package/lib/metadata/shared/metadata.service.d.ts +8 -8
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +14 -14
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -4
- package/lib/offline/geoDB/geoDB.interface.d.ts +19 -19
- package/lib/offline/geoDB/geoDB.service.d.ts +37 -37
- package/lib/offline/geoDB/index.d.ts +4 -4
- package/lib/offline/index.d.ts +3 -3
- package/lib/offline/layerDB/index.d.ts +2 -2
- package/lib/offline/layerDB/layerDB.interface.d.ts +7 -7
- package/lib/offline/layerDB/layerDB.service.d.ts +36 -36
- package/lib/offline/shared/geo-network.service.d.ts +28 -28
- package/lib/offline/shared/index.d.ts +1 -1
- package/lib/overlay/index.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +9 -9
- package/lib/overlay/shared/index.d.ts +5 -5
- package/lib/overlay/shared/overlay.d.ts +81 -81
- package/lib/overlay/shared/overlay.directive.d.ts +18 -18
- package/lib/overlay/shared/overlay.enum.d.ts +6 -6
- package/lib/overlay/shared/overlay.service.d.ts +14 -14
- package/lib/overlay/shared/overlay.utils.d.ts +6 -6
- package/lib/print/index.d.ts +3 -3
- package/lib/print/print/print.component.d.ts +35 -35
- package/lib/print/print-form/index.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +99 -99
- package/lib/print/print.module.d.ts +19 -19
- package/lib/print/shared/geopdf.d.ts +1 -1
- package/lib/print/shared/index.d.ts +4 -4
- package/lib/print/shared/print.interface.d.ts +22 -22
- package/lib/print/shared/print.service.d.ts +171 -174
- package/lib/print/shared/print.type.d.ts +45 -45
- package/lib/query/index.d.ts +1 -1
- package/lib/query/query.module.d.ts +11 -11
- package/lib/query/shared/index.d.ts +6 -6
- package/lib/query/shared/query-search-source.d.ts +17 -17
- package/lib/query/shared/query-search-source.providers.d.ts +17 -17
- package/lib/query/shared/query.directive.d.ts +105 -105
- package/lib/query/shared/query.enums.d.ts +26 -26
- package/lib/query/shared/query.interfaces.d.ts +35 -35
- package/lib/query/shared/query.service.d.ts +56 -56
- package/lib/query/shared/query.utils.d.ts +27 -27
- package/lib/search/index.d.ts +11 -11
- package/lib/search/search-bar/search-bar.component.d.ts +231 -230
- package/lib/search/search-bar/search-bar.module.d.ts +24 -23
- package/lib/search/search-bar/search-bar.theming.scss +36 -0
- package/lib/search/search-bar/search-url-param.directive.d.ts +13 -13
- package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -32
- package/lib/search/search-results/search-results-add-button.component.d.ts +84 -84
- package/lib/search/search-results/search-results-item.component.d.ts +52 -52
- package/lib/search/search-results/search-results.component.d.ts +165 -165
- package/lib/search/search-results/search-results.module.d.ts +29 -29
- package/lib/search/search-selector/search-selector.component.d.ts +58 -58
- package/lib/search/search-selector/search-selector.module.d.ts +19 -19
- package/lib/search/search-settings/search-settings.component.d.ts +102 -102
- package/lib/search/search-settings/search-settings.module.d.ts +20 -20
- package/lib/search/search.module.d.ts +14 -14
- package/lib/search/search.theming.scss +5 -0
- package/lib/search/shared/index.d.ts +8 -8
- package/lib/search/shared/search-pointer-summary.directive.d.ts +125 -124
- package/lib/search/shared/search-source-service.providers.d.ts +15 -15
- package/lib/search/shared/search-source.service.d.ts +39 -39
- package/lib/search/shared/search.enums.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +54 -29
- package/lib/search/shared/search.service.d.ts +53 -53
- package/lib/search/shared/search.utils.d.ts +39 -39
- package/lib/search/shared/sources/cadastre.d.ts +34 -0
- package/lib/search/shared/sources/cadastre.providers.d.ts +18 -0
- package/lib/search/shared/sources/coordinates.d.ts +40 -40
- package/lib/search/shared/sources/coordinates.interfaces.d.ts +12 -12
- package/lib/search/shared/sources/coordinates.providers.d.ts +31 -31
- package/lib/search/shared/sources/icherche.d.ts +98 -96
- package/lib/search/shared/sources/icherche.interfaces.d.ts +30 -30
- package/lib/search/shared/sources/icherche.providers.d.ts +46 -46
- package/lib/search/shared/sources/ilayer.d.ts +56 -55
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/ilayer.providers.d.ts +31 -31
- package/lib/search/shared/sources/index.d.ts +22 -20
- package/lib/search/shared/sources/nominatim.d.ts +46 -45
- package/lib/search/shared/sources/nominatim.interfaces.d.ts +10 -10
- package/lib/search/shared/sources/nominatim.providers.d.ts +18 -18
- package/lib/search/shared/sources/source.d.ts +86 -114
- package/lib/search/shared/sources/source.interfaces.d.ts +54 -47
- package/lib/search/shared/sources/storedqueries.d.ts +75 -73
- package/lib/search/shared/sources/storedqueries.interfaces.d.ts +42 -42
- package/lib/search/shared/sources/storedqueries.providers.d.ts +32 -32
- package/lib/search/shared/sources/workspace.d.ts +33 -33
- package/lib/search/shared/sources/workspace.interfaces.d.ts +9 -9
- package/lib/search/shared/sources/workspace.providers.d.ts +17 -17
- package/lib/style/index.d.ts +4 -4
- package/lib/style/shared/datasource/esri-style-generator.d.ts +21 -21
- package/lib/style/shared/datasource/index.d.ts +1 -1
- package/lib/style/shared/feature/feature-style.d.ts +18 -18
- package/lib/style/shared/feature/index.d.ts +1 -1
- package/lib/style/shared/font.enum.d.ts +15 -15
- package/lib/style/shared/index.d.ts +4 -4
- package/lib/style/shared/overlay/index.d.ts +2 -2
- package/lib/style/shared/overlay/overlay-marker-style.utils.d.ts +11 -11
- package/lib/style/shared/overlay/overlay-style.utils.d.ts +19 -19
- package/lib/style/shared/vector/commonVectorStyle.d.ts +14 -14
- package/lib/style/shared/vector/conversion.utils.d.ts +22 -22
- package/lib/style/shared/vector/index.d.ts +3 -3
- package/lib/style/shared/vector/vector-style.interface.d.ts +69 -69
- package/lib/style/style-list/index.d.ts +4 -4
- package/lib/style/style-list/style-list.interface.d.ts +6 -6
- package/lib/style/style-list/style-list.module.d.ts +8 -8
- package/lib/style/style-list/style-list.provider.d.ts +15 -15
- package/lib/style/style-list/style-list.service.d.ts +18 -18
- package/lib/style/style-modal/drawing/index.d.ts +1 -1
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +33 -31
- package/lib/style/style-modal/index.d.ts +4 -4
- package/lib/style/style-modal/layer/index.d.ts +1 -1
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +32 -30
- package/lib/style/style-modal/layer-button/index.d.ts +1 -1
- package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +14 -14
- package/lib/style/style-modal/shared/index.d.ts +1 -1
- package/lib/style/style-modal/shared/style-modal.interface.d.ts +17 -17
- package/lib/style/style-service/draw-style.service.d.ts +35 -35
- package/lib/style/style-service/index.d.ts +2 -2
- package/lib/style/style-service/style.service.d.ts +57 -57
- package/lib/style/style.module.d.ts +23 -22
- package/lib/toast/index.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +33 -33
- package/lib/toast/toast.module.d.ts +14 -14
- package/lib/utils/googleLinks.d.ts +5 -5
- package/lib/utils/id-generator.d.ts +54 -54
- package/lib/utils/index.d.ts +4 -3
- package/lib/utils/osmLinks.d.ts +4 -4
- package/lib/utils/propertyTypeDetector/index.d.ts +2 -0
- package/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.d.ts +5 -0
- package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +15 -0
- package/lib/wkt/index.d.ts +1 -1
- package/lib/wkt/shared/index.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +19 -19
- package/lib/wkt/wkt.module.d.ts +8 -8
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -23
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -14
- package/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -0
- package/lib/workspace/confirmation-popup/index.d.ts +2 -2
- package/lib/workspace/index.d.ts +7 -7
- package/lib/workspace/shared/edition-workspace.d.ts +84 -82
- package/lib/workspace/shared/edition-workspace.service.d.ts +50 -51
- package/lib/workspace/shared/feature-workspace.d.ts +18 -18
- package/lib/workspace/shared/feature-workspace.service.d.ts +22 -19
- package/lib/workspace/shared/index.d.ts +7 -7
- package/lib/workspace/shared/wfs-workspace.d.ts +18 -18
- package/lib/workspace/shared/wfs-workspace.service.d.ts +22 -19
- package/lib/workspace/shared/wms-workspace.service.d.ts +24 -22
- package/lib/workspace/shared/workspace.utils.d.ts +23 -10
- package/lib/workspace/widgets/index.d.ts +3 -3
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +29 -29
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +14 -14
- package/lib/workspace/widgets/widgets.d.ts +9 -9
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +32 -32
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +11 -11
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +26 -26
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +11 -11
- package/lib/workspace/workspace.module.d.ts +14 -14
- package/lib/workspace/workspace.theming.scss +6 -0
- package/locale/en.geo.json +807 -0
- package/locale/fr.geo.json +808 -0
- package/package.json +38 -38
- package/public_api.d.ts +53 -53
- package/style/style.css +350 -0
- package/esm2020/igo2-geo.mjs +0 -5
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -303
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -306
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -250
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -80
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -209
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -79
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +0 -212
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +0 -95
- package/esm2020/lib/catalog/catalog.module.mjs +0 -53
- package/esm2020/lib/catalog/index.mjs +0 -5
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +0 -95
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +0 -16
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +0 -2
- package/esm2020/lib/catalog/shared/catalog.service.mjs +0 -604
- package/esm2020/lib/catalog/shared/index.mjs +0 -5
- package/esm2020/lib/datasource/datasource.module.mjs +0 -22
- package/esm2020/lib/datasource/index.mjs +0 -3
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +0 -431
- package/esm2020/lib/datasource/shared/datasource.service.mjs +0 -232
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -145
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +0 -109
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -15
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +0 -3
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +0 -29
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +0 -43
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -57
- package/esm2020/lib/datasource/shared/datasources/index.mjs +0 -36
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -28
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +0 -12
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -49
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -15
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -54
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -72
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +0 -152
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +0 -206
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -207
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -16
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -9
- package/esm2020/lib/datasource/shared/index.mjs +0 -5
- package/esm2020/lib/datasource/shared/options/index.mjs +0 -5
- package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +0 -2
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +0 -15
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +0 -81
- package/esm2020/lib/datasource/shared/options/options.service.mjs +0 -3
- package/esm2020/lib/datasource/utils/index.mjs +0 -2
- package/esm2020/lib/datasource/utils/tilegrid.mjs +0 -20
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -218
- package/esm2020/lib/directions/directions-buttons/index.mjs +0 -2
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -290
- package/esm2020/lib/directions/directions-inputs/index.mjs +0 -2
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +0 -196
- package/esm2020/lib/directions/directions-results/index.mjs +0 -2
- package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +0 -2
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +0 -3
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +0 -16
- package/esm2020/lib/directions/directions-sources/index.mjs +0 -5
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +0 -99
- package/esm2020/lib/directions/directions.component.mjs +0 -311
- package/esm2020/lib/directions/directions.module.mjs +0 -102
- package/esm2020/lib/directions/index.mjs +0 -7
- package/esm2020/lib/directions/shared/directions-source.service.mjs +0 -17
- package/esm2020/lib/directions/shared/directions.enum.mjs +0 -28
- package/esm2020/lib/directions/shared/directions.interface.mjs +0 -2
- package/esm2020/lib/directions/shared/directions.service.mjs +0 -29
- package/esm2020/lib/directions/shared/directions.utils.mjs +0 -509
- package/esm2020/lib/directions/shared/index.mjs +0 -6
- package/esm2020/lib/directions/shared/store.mjs +0 -24
- package/esm2020/lib/download/download-button/download-button.component.mjs +0 -61
- package/esm2020/lib/download/download-button/index.mjs +0 -2
- package/esm2020/lib/download/download.module.mjs +0 -42
- package/esm2020/lib/download/index.mjs +0 -3
- package/esm2020/lib/download/shared/download.interface.mjs +0 -2
- package/esm2020/lib/download/shared/download.service.mjs +0 -62
- package/esm2020/lib/download/shared/index.mjs +0 -3
- package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +0 -55
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +0 -591
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +0 -48
- package/esm2020/lib/draw/draw/draw.component.mjs +0 -1300
- package/esm2020/lib/draw/draw/draw.module.mjs +0 -113
- package/esm2020/lib/draw/drawingTool.module.mjs +0 -20
- package/esm2020/lib/draw/index.mjs +0 -3
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +0 -27
- package/esm2020/lib/draw/shared/draw.enum.mjs +0 -21
- package/esm2020/lib/draw/shared/draw.interface.mjs +0 -2
- package/esm2020/lib/draw/shared/draw.utils.mjs +0 -122
- package/esm2020/lib/draw/shared/index.mjs +0 -5
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +0 -404
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +0 -54
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +0 -48
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +0 -112
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +0 -34
- package/esm2020/lib/feature/feature.module.mjs +0 -28
- package/esm2020/lib/feature/index.mjs +0 -4
- package/esm2020/lib/feature/shared/feature.enums.mjs +0 -9
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +0 -2
- package/esm2020/lib/feature/shared/feature.utils.mjs +0 -349
- package/esm2020/lib/feature/shared/index.mjs +0 -7
- package/esm2020/lib/feature/shared/store.mjs +0 -133
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +0 -113
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +0 -94
- package/esm2020/lib/feature/shared/strategies/index.mjs +0 -7
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +0 -104
- package/esm2020/lib/feature/shared/strategies/loading.mjs +0 -133
- package/esm2020/lib/feature/shared/strategies/search.mjs +0 -150
- package/esm2020/lib/feature/shared/strategies/selection.mjs +0 -370
- package/esm2020/lib/feature/shared/strategies.utils.mjs +0 -37
- package/esm2020/lib/filter/filter.module.mjs +0 -289
- package/esm2020/lib/filter/index.mjs +0 -16
- package/esm2020/lib/filter/ogc-filter-button/index.mjs +0 -2
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -140
- package/esm2020/lib/filter/ogc-filter-form/index.mjs +0 -2
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -645
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +0 -2
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -1302
- package/esm2020/lib/filter/ogc-filter-time/index.mjs +0 -3
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -177
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -898
- package/esm2020/lib/filter/ogc-filterable-form/index.mjs +0 -2
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -59
- package/esm2020/lib/filter/ogc-filterable-item/index.mjs +0 -2
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -307
- package/esm2020/lib/filter/ogc-filterable-list/index.mjs +0 -3
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -31
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -44
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +0 -55
- package/esm2020/lib/filter/shared/index.mjs +0 -12
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +0 -30
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +0 -2
- package/esm2020/lib/filter/shared/ogc-filter.mjs +0 -692
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +0 -46
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +0 -23
- package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +0 -2
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +0 -269
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +0 -13
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +0 -2
- package/esm2020/lib/filter/shared/time-filter.service.mjs +0 -107
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -1089
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -207
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -144
- package/esm2020/lib/filter/time-filter-button/index.mjs +0 -2
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -78
- package/esm2020/lib/filter/time-filter-form/index.mjs +0 -2
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -734
- package/esm2020/lib/filter/time-filter-item/index.mjs +0 -2
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -119
- package/esm2020/lib/filter/time-filter-list/index.mjs +0 -3
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -31
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -39
- package/esm2020/lib/geo.module.mjs +0 -106
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -522
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -189
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -64
- package/esm2020/lib/geometry/geometry.module.mjs +0 -27
- package/esm2020/lib/geometry/index.mjs +0 -4
- package/esm2020/lib/geometry/shared/controls/draw.mjs +0 -314
- package/esm2020/lib/geometry/shared/controls/index.mjs +0 -4
- package/esm2020/lib/geometry/shared/controls/modify.mjs +0 -521
- package/esm2020/lib/geometry/shared/controls/slice.mjs +0 -177
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +0 -26
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +0 -2
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +0 -122
- package/esm2020/lib/geometry/shared/index.mjs +0 -5
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +0 -64
- package/esm2020/lib/import-export/export-button/index.mjs +0 -2
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +0 -1228
- package/esm2020/lib/import-export/import-export/index.mjs +0 -2
- package/esm2020/lib/import-export/import-export.module.mjs +0 -92
- package/esm2020/lib/import-export/index.mjs +0 -4
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +0 -152
- package/esm2020/lib/import-export/shared/export.errors.mjs +0 -15
- package/esm2020/lib/import-export/shared/export.interface.mjs +0 -2
- package/esm2020/lib/import-export/shared/export.service.mjs +0 -195
- package/esm2020/lib/import-export/shared/export.type.mjs +0 -4
- package/esm2020/lib/import-export/shared/export.utils.mjs +0 -46
- package/esm2020/lib/import-export/shared/import.errors.mjs +0 -39
- package/esm2020/lib/import-export/shared/import.interface.mjs +0 -2
- package/esm2020/lib/import-export/shared/import.service.mjs +0 -215
- package/esm2020/lib/import-export/shared/import.utils.mjs +0 -202
- package/esm2020/lib/import-export/shared/index.mjs +0 -11
- package/esm2020/lib/layer/index.mjs +0 -10
- package/esm2020/lib/layer/layer-item/index.mjs +0 -2
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +0 -300
- package/esm2020/lib/layer/layer-legend/index.mjs +0 -2
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +0 -388
- package/esm2020/lib/layer/layer-legend-item/index.mjs +0 -2
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -84
- package/esm2020/lib/layer/layer-legend-list/index.mjs +0 -3
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -48
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -195
- package/esm2020/lib/layer/layer-list/index.mjs +0 -4
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -59
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +0 -1009
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2020/lib/layer/layer-list-tool/index.mjs +0 -5
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -165
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -2
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -22
- package/esm2020/lib/layer/layer.module.mjs +0 -180
- package/esm2020/lib/layer/shared/clusterParam.mjs +0 -2
- package/esm2020/lib/layer/shared/index.mjs +0 -5
- package/esm2020/lib/layer/shared/layer.enums.mjs +0 -2
- package/esm2020/lib/layer/shared/layer.service.mjs +0 -237
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +0 -67
- package/esm2020/lib/layer/shared/layers/index.mjs +0 -13
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +0 -17
- package/esm2020/lib/layer/shared/layers/layer.mjs +0 -166
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +0 -47
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +0 -527
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +0 -104
- package/esm2020/lib/layer/track-feature-button/index.mjs +0 -2
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -59
- package/esm2020/lib/layer/utils/image-watcher.mjs +0 -59
- package/esm2020/lib/layer/utils/index.mjs +0 -6
- package/esm2020/lib/layer/utils/layer.utils.mjs +0 -10
- package/esm2020/lib/layer/utils/outputLegend.mjs +0 -28
- package/esm2020/lib/layer/utils/tile-watcher.mjs +0 -50
- package/esm2020/lib/layer/utils/vector-watcher.mjs +0 -48
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -97
- package/esm2020/lib/map/baselayers-switcher/index.mjs +0 -3
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -142
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +0 -79
- package/esm2020/lib/map/geolocate-button/index.mjs +0 -2
- package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +0 -63
- package/esm2020/lib/map/home-extent-button/index.mjs +0 -2
- package/esm2020/lib/map/index.mjs +0 -14
- package/esm2020/lib/map/info-section/index.mjs +0 -2
- package/esm2020/lib/map/info-section/info-section.component.mjs +0 -30
- package/esm2020/lib/map/map-browser/index.mjs +0 -2
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +0 -66
- package/esm2020/lib/map/map-center/index.mjs +0 -2
- package/esm2020/lib/map/map-center/map-center.component.mjs +0 -50
- package/esm2020/lib/map/map.module.mjs +0 -127
- package/esm2020/lib/map/menu-button/index.mjs +0 -2
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +0 -62
- package/esm2020/lib/map/offline-button/index.mjs +0 -2
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +0 -53
- package/esm2020/lib/map/rotation-button/index.mjs +0 -2
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +0 -70
- package/esm2020/lib/map/shared/controllers/controller.mjs +0 -42
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +0 -423
- package/esm2020/lib/map/shared/controllers/index.mjs +0 -4
- package/esm2020/lib/map/shared/controllers/view.mjs +0 -351
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +0 -454
- package/esm2020/lib/map/shared/index.mjs +0 -14
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +0 -240
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +0 -107
- package/esm2020/lib/map/shared/map.enums.mjs +0 -6
- package/esm2020/lib/map/shared/map.interface.mjs +0 -2
- package/esm2020/lib/map/shared/map.mjs +0 -409
- package/esm2020/lib/map/shared/map.service.mjs +0 -29
- package/esm2020/lib/map/shared/map.utils.mjs +0 -463
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +0 -98
- package/esm2020/lib/map/shared/projection.interfaces.mjs +0 -2
- package/esm2020/lib/map/shared/projection.service.mjs +0 -65
- package/esm2020/lib/map/shared/projection.utils.mjs +0 -64
- package/esm2020/lib/map/swipe-control/index.mjs +0 -2
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +0 -193
- package/esm2020/lib/map/utils/layer-watcher.mjs +0 -79
- package/esm2020/lib/map/wake-lock-button/index.mjs +0 -2
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
- package/esm2020/lib/map/zoom-button/index.mjs +0 -2
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +0 -40
- package/esm2020/lib/measure/index.mjs +0 -4
- package/esm2020/lib/measure/measure.module.mjs +0 -20
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +0 -37
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +0 -180
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +0 -140
- package/esm2020/lib/measure/measurer/measurer.component.mjs +0 -1042
- package/esm2020/lib/measure/measurer/measurer.module.mjs +0 -94
- package/esm2020/lib/measure/shared/index.mjs +0 -4
- package/esm2020/lib/measure/shared/measure.enum.mjs +0 -37
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +0 -2
- package/esm2020/lib/measure/shared/measure.utils.mjs +0 -489
- package/esm2020/lib/metadata/index.mjs +0 -3
- package/esm2020/lib/metadata/metadata-button/index.mjs +0 -2
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +0 -134
- package/esm2020/lib/metadata/metadata.module.mjs +0 -55
- package/esm2020/lib/metadata/shared/index.mjs +0 -3
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +0 -2
- package/esm2020/lib/metadata/shared/metadata.service.mjs +0 -19
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -105
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +0 -6
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +0 -2
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +0 -167
- package/esm2020/lib/offline/geoDB/index.mjs +0 -5
- package/esm2020/lib/offline/index.mjs +0 -4
- package/esm2020/lib/offline/layerDB/index.mjs +0 -3
- package/esm2020/lib/offline/layerDB/layerDB.interface.mjs +0 -2
- package/esm2020/lib/offline/layerDB/layerDB.service.mjs +0 -76
- package/esm2020/lib/offline/shared/geo-network.service.mjs +0 -66
- package/esm2020/lib/offline/shared/index.mjs +0 -2
- package/esm2020/lib/overlay/index.mjs +0 -2
- package/esm2020/lib/overlay/overlay.module.mjs +0 -23
- package/esm2020/lib/overlay/shared/index.mjs +0 -6
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +0 -33
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +0 -8
- package/esm2020/lib/overlay/shared/overlay.mjs +0 -130
- package/esm2020/lib/overlay/shared/overlay.service.mjs +0 -27
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +0 -17
- package/esm2020/lib/print/index.mjs +0 -4
- package/esm2020/lib/print/print/print.component.mjs +0 -112
- package/esm2020/lib/print/print-form/index.mjs +0 -2
- package/esm2020/lib/print/print-form/print-form.component.mjs +0 -514
- package/esm2020/lib/print/print.module.mjs +0 -65
- package/esm2020/lib/print/shared/geopdf.mjs +0 -58
- package/esm2020/lib/print/shared/index.mjs +0 -5
- package/esm2020/lib/print/shared/print.interface.mjs +0 -2
- package/esm2020/lib/print/shared/print.service.mjs +0 -984
- package/esm2020/lib/print/shared/print.type.mjs +0 -30
- package/esm2020/lib/query/index.mjs +0 -2
- package/esm2020/lib/query/query.module.mjs +0 -29
- package/esm2020/lib/query/shared/index.mjs +0 -7
- package/esm2020/lib/query/shared/query-search-source.mjs +0 -35
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +0 -22
- package/esm2020/lib/query/shared/query.directive.mjs +0 -261
- package/esm2020/lib/query/shared/query.enums.mjs +0 -30
- package/esm2020/lib/query/shared/query.interfaces.mjs +0 -2
- package/esm2020/lib/query/shared/query.service.mjs +0 -731
- package/esm2020/lib/query/shared/query.utils.mjs +0 -37
- package/esm2020/lib/search/index.mjs +0 -12
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +0 -512
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +0 -75
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +0 -35
- package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +0 -118
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +0 -429
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +0 -147
- package/esm2020/lib/search/search-results/search-results.component.mjs +0 -454
- package/esm2020/lib/search/search-results/search-results.module.mjs +0 -108
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +0 -123
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +0 -56
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +0 -440
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +0 -60
- package/esm2020/lib/search/search.module.mjs +0 -67
- package/esm2020/lib/search/shared/index.mjs +0 -9
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +0 -295
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +0 -20
- package/esm2020/lib/search/shared/search-source.service.mjs +0 -55
- package/esm2020/lib/search/shared/search.enums.mjs +0 -4
- package/esm2020/lib/search/shared/search.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/search.service.mjs +0 -121
- package/esm2020/lib/search/shared/search.utils.mjs +0 -91
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/coordinates.mjs +0 -153
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +0 -40
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/icherche.mjs +0 -767
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +0 -66
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/ilayer.mjs +0 -320
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +0 -40
- package/esm2020/lib/search/shared/sources/index.mjs +0 -21
- package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/nominatim.mjs +0 -253
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +0 -23
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/source.mjs +0 -209
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +0 -425
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +0 -41
- package/esm2020/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
- package/esm2020/lib/search/shared/sources/workspace.mjs +0 -186
- package/esm2020/lib/search/shared/sources/workspace.providers.mjs +0 -26
- package/esm2020/lib/style/index.mjs +0 -5
- package/esm2020/lib/style/shared/datasource/esri-style-generator.mjs +0 -357
- package/esm2020/lib/style/shared/datasource/index.mjs +0 -2
- package/esm2020/lib/style/shared/feature/feature-style.mjs +0 -141
- package/esm2020/lib/style/shared/feature/index.mjs +0 -2
- package/esm2020/lib/style/shared/font.enum.mjs +0 -17
- package/esm2020/lib/style/shared/index.mjs +0 -5
- package/esm2020/lib/style/shared/overlay/index.mjs +0 -3
- package/esm2020/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -43
- package/esm2020/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
- package/esm2020/lib/style/shared/vector/commonVectorStyle.mjs +0 -75
- package/esm2020/lib/style/shared/vector/conversion.utils.mjs +0 -27
- package/esm2020/lib/style/shared/vector/index.mjs +0 -4
- package/esm2020/lib/style/shared/vector/vector-style.interface.mjs +0 -2
- package/esm2020/lib/style/style-list/index.mjs +0 -5
- package/esm2020/lib/style/style-list/style-list.interface.mjs +0 -2
- package/esm2020/lib/style/style-list/style-list.module.mjs +0 -23
- package/esm2020/lib/style/style-list/style-list.provider.mjs +0 -21
- package/esm2020/lib/style/style-list/style-list.service.mjs +0 -51
- package/esm2020/lib/style/style-modal/drawing/index.mjs +0 -2
- package/esm2020/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -288
- package/esm2020/lib/style/style-modal/index.mjs +0 -5
- package/esm2020/lib/style/style-modal/layer/index.mjs +0 -2
- package/esm2020/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -187
- package/esm2020/lib/style/style-modal/layer-button/index.mjs +0 -2
- package/esm2020/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
- package/esm2020/lib/style/style-modal/shared/index.mjs +0 -2
- package/esm2020/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
- package/esm2020/lib/style/style-service/draw-style.service.mjs +0 -187
- package/esm2020/lib/style/style-service/index.mjs +0 -3
- package/esm2020/lib/style/style-service/style.service.mjs +0 -356
- package/esm2020/lib/style/style.module.mjs +0 -74
- package/esm2020/lib/toast/index.mjs +0 -2
- package/esm2020/lib/toast/toast.component.mjs +0 -113
- package/esm2020/lib/toast/toast.module.mjs +0 -45
- package/esm2020/lib/utils/googleLinks.mjs +0 -13
- package/esm2020/lib/utils/id-generator.mjs +0 -110
- package/esm2020/lib/utils/index.mjs +0 -4
- package/esm2020/lib/utils/osmLinks.mjs +0 -10
- package/esm2020/lib/wkt/index.mjs +0 -2
- package/esm2020/lib/wkt/shared/index.mjs +0 -2
- package/esm2020/lib/wkt/shared/wkt.service.mjs +0 -239
- package/esm2020/lib/wkt/wkt.module.mjs +0 -22
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -48
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -36
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +0 -3
- package/esm2020/lib/workspace/index.mjs +0 -8
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +0 -280
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +0 -642
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +0 -35
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +0 -157
- package/esm2020/lib/workspace/shared/index.mjs +0 -8
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +0 -35
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +0 -150
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +0 -260
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +0 -24
- package/esm2020/lib/workspace/widgets/index.mjs +0 -4
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -47
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -36
- package/esm2020/lib/workspace/widgets/widgets.mjs +0 -15
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -133
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -28
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -113
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -28
- package/esm2020/lib/workspace/workspace.module.mjs +0 -62
- package/esm2020/public_api.mjs +0 -57
- package/fesm2015/igo2-geo.mjs +0 -46758
- package/fesm2015/igo2-geo.mjs.map +0 -1
- package/fesm2020/igo2-geo.mjs +0 -44861
- package/fesm2020/igo2-geo.mjs.map +0 -1
- package/ngcc.config.js +0 -3
- package/style/geo.theming.scss +0 -12
|
@@ -0,0 +1,1022 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, ContentChild, Output, EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
+
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
3
|
+
import { LayerListControlsEnum, LayerListDisplacement } from './layer-list.enum';
|
|
4
|
+
import { LayerListSelectVisibleEnum } from './layer-list.enum';
|
|
5
|
+
import { BehaviorSubject, ReplaySubject, EMPTY, timer } from 'rxjs';
|
|
6
|
+
import { debounce } from 'rxjs/operators';
|
|
7
|
+
import { IgoMap } from '../../map/shared/map';
|
|
8
|
+
import { LinkedProperties } from '../shared/layers/layer.interface';
|
|
9
|
+
import * as olextent from 'ol/extent';
|
|
10
|
+
import { getAllChildLayersByProperty, getRootParentByProperty } from '../../map/shared/linkedLayers.utils';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
const _c0 = ["igoLayerItemToolbar"];
|
|
13
|
+
function LayerListComponent_igo_layer_list_tool_0_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
15
|
+
i0.ɵɵelementStart(0, "igo-layer-list-tool", 6);
|
|
16
|
+
i0.ɵɵlistener("appliedFilterAndSort", function LayerListComponent_igo_layer_list_tool_0_Template_igo_layer_list_tool_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onAppliedFilterAndSortChange($event)); })("selection", function LayerListComponent_igo_layer_list_tool_0_Template_igo_layer_list_tool_selection_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.toggleSelectionMode($event)); });
|
|
17
|
+
i0.ɵɵelementEnd();
|
|
18
|
+
} if (rf & 2) {
|
|
19
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
20
|
+
i0.ɵɵproperty("layersAreAllVisible", ctx_r0.layersAreAllVisible)("term", ctx_r0.layerFilterAndSortOptions.keyword)("onlyVisible", ctx_r0.layerFilterAndSortOptions.onlyVisible)("sortAlpha", ctx_r0.layerFilterAndSortOptions.sortAlpha);
|
|
21
|
+
} }
|
|
22
|
+
function LayerListComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 7)(1, "mat-checkbox", 8);
|
|
25
|
+
i0.ɵɵlistener("change", function LayerListComponent_div_2_Template_mat_checkbox_change_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.selectAll()); });
|
|
26
|
+
i0.ɵɵtext(2);
|
|
27
|
+
i0.ɵɵpipe(3, "translate");
|
|
28
|
+
i0.ɵɵpipe(4, "translate");
|
|
29
|
+
i0.ɵɵelementEnd()();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
32
|
+
i0.ɵɵadvance(1);
|
|
33
|
+
i0.ɵɵproperty("color", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0 ? "accent" : "primary")("checked", ctx_r1.selectAllCheck)("indeterminate", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0);
|
|
34
|
+
i0.ɵɵadvance(1);
|
|
35
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectAllCheck ? i0.ɵɵpipeBind1(3, 4, "igo.geo.layer.deselectAll") : i0.ɵɵpipeBind1(4, 6, "igo.geo.layer.selectAll"), " ");
|
|
36
|
+
} }
|
|
37
|
+
function LayerListComponent_ng_template_6_igo_layer_item_0_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
39
|
+
i0.ɵɵelementStart(0, "igo-layer-item", 10);
|
|
40
|
+
i0.ɵɵlistener("action", function LayerListComponent_ng_template_6_igo_layer_item_0_Template_igo_layer_item_action_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.toggleLayerTool($event)); })("checkbox", function LayerListComponent_ng_template_6_igo_layer_item_0_Template_igo_layer_item_checkbox_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.layersCheck($event)); });
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
} if (rf & 2) {
|
|
43
|
+
const layer_r11 = i0.ɵɵnextContext().$implicit;
|
|
44
|
+
const ctx_r13 = i0.ɵɵnextContext();
|
|
45
|
+
i0.ɵɵproperty("layer", layer_r11)("activeLayer", ctx_r13.activeLayer)("orderable", ctx_r13.orderable && !layer_r11.baseLayer)("lowerDisabled", ctx_r13.getLowerLayer().id === layer_r11.id)("raiseDisabled", ctx_r13.getUpperLayer().id === layer_r11.id)("queryBadge", ctx_r13.queryBadge)("expandLegendIfVisible", ctx_r13.expandLegendOfVisibleLayers)("updateLegendOnResolutionChange", ctx_r13.updateLegendOnResolutionChange)("toggleLegendOnVisibilityChange", ctx_r13.toggleLegendOnVisibilityChange)("selectionMode", ctx_r13.selection)("selectAll", ctx_r13.selectAllCheck)("layerCheck", layer_r11.options.check)("changeDetection", ctx_r13.layerItemChangeDetection$);
|
|
46
|
+
} }
|
|
47
|
+
function LayerListComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
i0.ɵɵtemplate(0, LayerListComponent_ng_template_6_igo_layer_item_0_Template, 1, 13, "igo-layer-item", 9);
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const layer_r11 = ctx.$implicit;
|
|
51
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
52
|
+
i0.ɵɵproperty("ngIf", !(ctx_r3.excludeBaseLayers && layer_r11.baseLayer));
|
|
53
|
+
} }
|
|
54
|
+
function LayerListComponent_igo_panel_8_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
56
|
+
i0.ɵɵelementStart(0, "button", 28);
|
|
57
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_8_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.removeLayers()); });
|
|
58
|
+
i0.ɵɵpipe(1, "translate");
|
|
59
|
+
i0.ɵɵelement(2, "mat-icon", 29);
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.removeLayer"));
|
|
63
|
+
} }
|
|
64
|
+
function LayerListComponent_igo_panel_8_button_21_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
66
|
+
i0.ɵɵelementStart(0, "button", 30);
|
|
67
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_8_button_21_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.zoomLayerExtents(ctx_r25.activeLayer)); });
|
|
68
|
+
i0.ɵɵpipe(1, "translate");
|
|
69
|
+
i0.ɵɵelement(2, "mat-icon", 31);
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
|
+
} if (rf & 2) {
|
|
72
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayer"));
|
|
73
|
+
} }
|
|
74
|
+
const _c1 = function (a0) { return { layer: a0 }; };
|
|
75
|
+
function LayerListComponent_igo_panel_8_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
77
|
+
i0.ɵɵelementStart(0, "igo-panel", 11)(1, "div", 12);
|
|
78
|
+
i0.ɵɵtemplate(2, LayerListComponent_igo_panel_8_button_2_Template, 3, 3, "button", 13);
|
|
79
|
+
i0.ɵɵelementStart(3, "button", 14);
|
|
80
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.moveActiveLayer(ctx_r27.activeLayer, ctx_r27.layerListDisplacement.Lower, true)); });
|
|
81
|
+
i0.ɵɵpipe(4, "translate");
|
|
82
|
+
i0.ɵɵpipe(5, "translate");
|
|
83
|
+
i0.ɵɵelement(6, "mat-icon", 15);
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementStart(7, "button", 16);
|
|
86
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r29 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r29.moveActiveLayer(ctx_r29.activeLayer, ctx_r29.layerListDisplacement.Raise, true)); });
|
|
87
|
+
i0.ɵɵpipe(8, "translate");
|
|
88
|
+
i0.ɵɵpipe(9, "translate");
|
|
89
|
+
i0.ɵɵelement(10, "mat-icon", 17);
|
|
90
|
+
i0.ɵɵelementEnd();
|
|
91
|
+
i0.ɵɵelementStart(11, "button", 18);
|
|
92
|
+
i0.ɵɵpipe(12, "translate");
|
|
93
|
+
i0.ɵɵelement(13, "mat-icon", 19);
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵelementStart(14, "mat-menu", 20, 21)(16, "mat-slider", 22, 23);
|
|
96
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_8_Template_mat_slider_click_16_listener($event) { return $event.stopPropagation(); });
|
|
97
|
+
i0.ɵɵpipe(18, "translate");
|
|
98
|
+
i0.ɵɵelementStart(19, "input", 24, 25);
|
|
99
|
+
i0.ɵɵlistener("input", function LayerListComponent_igo_panel_8_Template_input_input_19_listener() { i0.ɵɵrestoreView(_r28); const _r21 = i0.ɵɵreference(20); const _r20 = i0.ɵɵreference(17); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.changeOpacity({ source: _r21, parent: _r20, value: _r21.value })); });
|
|
100
|
+
i0.ɵɵelementEnd()()();
|
|
101
|
+
i0.ɵɵtemplate(21, LayerListComponent_igo_panel_8_button_21_Template, 3, 3, "button", 26);
|
|
102
|
+
i0.ɵɵelementContainer(22, 27);
|
|
103
|
+
i0.ɵɵprojection(23);
|
|
104
|
+
i0.ɵɵelementEnd()();
|
|
105
|
+
} if (rf & 2) {
|
|
106
|
+
const _r19 = i0.ɵɵreference(15);
|
|
107
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
108
|
+
i0.ɵɵproperty("title", ctx_r4.activeLayer.title);
|
|
109
|
+
i0.ɵɵadvance(2);
|
|
110
|
+
i0.ɵɵproperty("ngIf", ctx_r4.isLayerRemovable(ctx_r4.activeLayer));
|
|
111
|
+
i0.ɵɵadvance(1);
|
|
112
|
+
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(4, 20, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(5, 22, "igo.geo.layer.lowerLayer"))("disabled", ctx_r4.lowerDisabled);
|
|
113
|
+
i0.ɵɵadvance(3);
|
|
114
|
+
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.lowerDisabled);
|
|
115
|
+
i0.ɵɵadvance(1);
|
|
116
|
+
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(8, 24, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(9, 26, "igo.geo.layer.raiseLayer"))("disabled", ctx_r4.raiseDisabled);
|
|
117
|
+
i0.ɵɵadvance(3);
|
|
118
|
+
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.raiseDisabled);
|
|
119
|
+
i0.ɵɵadvance(1);
|
|
120
|
+
i0.ɵɵproperty("matMenuTriggerFor", _r19)("matTooltip", i0.ɵɵpipeBind1(12, 28, "igo.geo.layer.opacity"));
|
|
121
|
+
i0.ɵɵadvance(2);
|
|
122
|
+
i0.ɵɵproperty("matBadge", ctx_r4.badgeOpacity);
|
|
123
|
+
i0.ɵɵadvance(3);
|
|
124
|
+
i0.ɵɵproperty("min", 0)("max", 100)("matTooltip", i0.ɵɵpipeBind1(18, 30, "igo.geo.layer.opacity"));
|
|
125
|
+
i0.ɵɵadvance(3);
|
|
126
|
+
i0.ɵɵproperty("value", ctx_r4.opacity);
|
|
127
|
+
i0.ɵɵadvance(2);
|
|
128
|
+
i0.ɵɵproperty("ngIf", ctx_r4.activeLayerExtentIsValid(ctx_r4.activeLayer));
|
|
129
|
+
i0.ɵɵadvance(1);
|
|
130
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.templateLayerToolbar)("ngTemplateOutletContext", i0.ɵɵpureFunction1(32, _c1, ctx_r4.activeLayer));
|
|
131
|
+
} }
|
|
132
|
+
function LayerListComponent_igo_panel_9_mat_slider_25_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
134
|
+
i0.ɵɵelementStart(0, "mat-slider", 42);
|
|
135
|
+
i0.ɵɵlistener("ngModelChange", function LayerListComponent_igo_panel_9_mat_slider_25_Template_mat_slider_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r35.checkOpacity = $event); })("click", function LayerListComponent_igo_panel_9_mat_slider_25_Template_mat_slider_click_0_listener($event) { return $event.stopPropagation(); });
|
|
136
|
+
i0.ɵɵpipe(1, "translate");
|
|
137
|
+
i0.ɵɵelement(2, "input", 43);
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
} if (rf & 2) {
|
|
140
|
+
const ctx_r33 = i0.ɵɵnextContext(2);
|
|
141
|
+
i0.ɵɵproperty("min", 0)("max", 100)("ngModel", ctx_r33.checkOpacity)("matTooltip", i0.ɵɵpipeBind1(1, 4, "igo.geo.layer.opacity"));
|
|
142
|
+
} }
|
|
143
|
+
function LayerListComponent_igo_panel_9_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
145
|
+
i0.ɵɵelementStart(0, "button", 30);
|
|
146
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_button_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r38.zoomLayersExtents(ctx_r38.layersChecked)); });
|
|
147
|
+
i0.ɵɵpipe(1, "translate");
|
|
148
|
+
i0.ɵɵelement(2, "mat-icon", 44);
|
|
149
|
+
i0.ɵɵelementEnd();
|
|
150
|
+
} if (rf & 2) {
|
|
151
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayers"));
|
|
152
|
+
} }
|
|
153
|
+
function LayerListComponent_igo_panel_9_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
155
|
+
i0.ɵɵelementStart(0, "igo-panel", 11);
|
|
156
|
+
i0.ɵɵpipe(1, "translate");
|
|
157
|
+
i0.ɵɵelementStart(2, "div", 32)(3, "button", 33);
|
|
158
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.removeLayers(ctx_r40.layersChecked)); });
|
|
159
|
+
i0.ɵɵpipe(4, "translate");
|
|
160
|
+
i0.ɵɵpipe(5, "translate");
|
|
161
|
+
i0.ɵɵelement(6, "mat-icon", 34);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵelementStart(7, "button", 35);
|
|
164
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.toggleVisibility(ctx_r42.layersChecked)); });
|
|
165
|
+
i0.ɵɵpipe(8, "translate");
|
|
166
|
+
i0.ɵɵpipe(9, "translate");
|
|
167
|
+
i0.ɵɵelement(10, "mat-icon", 36);
|
|
168
|
+
i0.ɵɵelementEnd();
|
|
169
|
+
i0.ɵɵelementStart(11, "button", 14);
|
|
170
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r41); const ctx_r43 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r43.lowerLayers(ctx_r43.layersChecked)); });
|
|
171
|
+
i0.ɵɵpipe(12, "translate");
|
|
172
|
+
i0.ɵɵpipe(13, "translate");
|
|
173
|
+
i0.ɵɵelement(14, "mat-icon", 15);
|
|
174
|
+
i0.ɵɵelementEnd();
|
|
175
|
+
i0.ɵɵelementStart(15, "button", 16);
|
|
176
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r41); const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.raiseLayers(ctx_r44.layersChecked)); });
|
|
177
|
+
i0.ɵɵpipe(16, "translate");
|
|
178
|
+
i0.ɵɵpipe(17, "translate");
|
|
179
|
+
i0.ɵɵelement(18, "mat-icon", 17);
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
i0.ɵɵelementStart(19, "button", 37);
|
|
182
|
+
i0.ɵɵpipe(20, "translate");
|
|
183
|
+
i0.ɵɵelement(21, "mat-icon", 38);
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementStart(22, "mat-menu", 39, 21)(24, "div", 40);
|
|
186
|
+
i0.ɵɵtemplate(25, LayerListComponent_igo_panel_9_mat_slider_25_Template, 3, 6, "mat-slider", 41);
|
|
187
|
+
i0.ɵɵelementEnd()();
|
|
188
|
+
i0.ɵɵtemplate(26, LayerListComponent_igo_panel_9_button_26_Template, 3, 3, "button", 26);
|
|
189
|
+
i0.ɵɵelementEnd()();
|
|
190
|
+
} if (rf & 2) {
|
|
191
|
+
const _r32 = i0.ɵɵreference(23);
|
|
192
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
193
|
+
i0.ɵɵproperty("title", i0.ɵɵpipeBind1(1, 21, "igo.geo.layer.tools"));
|
|
194
|
+
i0.ɵɵadvance(3);
|
|
195
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked) ? i0.ɵɵpipeBind1(4, 23, "igo.geo.layer.removeSelectedLayers") : i0.ɵɵpipeBind1(5, 25, "igo.geo.layer.removeSelectedLayersRestriction"));
|
|
196
|
+
i0.ɵɵadvance(3);
|
|
197
|
+
i0.ɵɵproperty("matBadge", "!")("matBadgeHidden", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked));
|
|
198
|
+
i0.ɵɵadvance(1);
|
|
199
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? i0.ɵɵpipeBind1(8, 27, "igo.geo.layer.showSelectedLayers") : i0.ɵɵpipeBind1(9, 29, "igo.geo.layer.hideSelectedLayers"));
|
|
200
|
+
i0.ɵɵadvance(3);
|
|
201
|
+
i0.ɵɵproperty("svgIcon", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? "eye-off" : "eye");
|
|
202
|
+
i0.ɵɵadvance(1);
|
|
203
|
+
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(12, 31, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(13, 33, "igo.geo.layer.lowerLayer"))("disabled", ctx_r5.lowerDisabledSelection);
|
|
204
|
+
i0.ɵɵadvance(3);
|
|
205
|
+
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.lowerDisabledSelection);
|
|
206
|
+
i0.ɵɵadvance(1);
|
|
207
|
+
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(16, 35, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(17, 37, "igo.geo.layer.raiseLayer"))("disabled", ctx_r5.raiseDisabledSelection);
|
|
208
|
+
i0.ɵɵadvance(3);
|
|
209
|
+
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.raiseDisabledSelection);
|
|
210
|
+
i0.ɵɵadvance(1);
|
|
211
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matMenuTriggerFor", _r32)("matTooltip", i0.ɵɵpipeBind1(20, 39, "igo.geo.layer.opacity"));
|
|
212
|
+
i0.ɵɵadvance(6);
|
|
213
|
+
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length);
|
|
214
|
+
i0.ɵɵadvance(1);
|
|
215
|
+
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length !== 0 && ctx_r5.activeLayersExtentAreValid(ctx_r5.layersChecked));
|
|
216
|
+
} }
|
|
217
|
+
const _c2 = [[["", "igoLayerItemToolbar", ""]]];
|
|
218
|
+
const _c3 = ["[igoLayerItemToolbar]"];
|
|
219
|
+
// TODO: This class could use a clean up. Also, some methods could be moved ealsewhere
|
|
220
|
+
export class LayerListComponent {
|
|
221
|
+
elRef;
|
|
222
|
+
orderable = true;
|
|
223
|
+
thresholdToFilterAndSort = 5;
|
|
224
|
+
layers$ = new BehaviorSubject([]);
|
|
225
|
+
change$ = new ReplaySubject(1);
|
|
226
|
+
showToolbar$ = new BehaviorSubject(false);
|
|
227
|
+
layerTool;
|
|
228
|
+
hideSelectedLayers = true;
|
|
229
|
+
activeLayer$ = new BehaviorSubject(undefined);
|
|
230
|
+
layersChecked = [];
|
|
231
|
+
selection;
|
|
232
|
+
change$$;
|
|
233
|
+
layers$$;
|
|
234
|
+
layerItemChangeDetection$ = new BehaviorSubject(undefined);
|
|
235
|
+
templateLayerToolbar;
|
|
236
|
+
layersAreAllVisible = true;
|
|
237
|
+
ogcButton = true;
|
|
238
|
+
timeButton = true;
|
|
239
|
+
get map() {
|
|
240
|
+
return this._map;
|
|
241
|
+
}
|
|
242
|
+
set map(value) {
|
|
243
|
+
this._map = value;
|
|
244
|
+
}
|
|
245
|
+
_map;
|
|
246
|
+
set layers(value) {
|
|
247
|
+
this._layers = this.removeProblemLayerInList(value);
|
|
248
|
+
this.next();
|
|
249
|
+
}
|
|
250
|
+
get layers() {
|
|
251
|
+
return this._layers;
|
|
252
|
+
}
|
|
253
|
+
_layers;
|
|
254
|
+
set activeLayer(value) {
|
|
255
|
+
this._activeLayer = value;
|
|
256
|
+
this.activeLayer$.next(value);
|
|
257
|
+
}
|
|
258
|
+
get activeLayer() {
|
|
259
|
+
return this._activeLayer;
|
|
260
|
+
}
|
|
261
|
+
_activeLayer;
|
|
262
|
+
floatLabel = 'auto';
|
|
263
|
+
layerFilterAndSortOptions = {};
|
|
264
|
+
excludeBaseLayers = false;
|
|
265
|
+
toggleLegendOnVisibilityChange = false;
|
|
266
|
+
expandLegendOfVisibleLayers = false;
|
|
267
|
+
updateLegendOnResolutionChange = false;
|
|
268
|
+
queryBadge = false;
|
|
269
|
+
appliedFilterAndSort = new EventEmitter();
|
|
270
|
+
get keyword() {
|
|
271
|
+
return this._keyword;
|
|
272
|
+
}
|
|
273
|
+
set keyword(value) {
|
|
274
|
+
this._keyword = value;
|
|
275
|
+
this.next();
|
|
276
|
+
}
|
|
277
|
+
_keyword = undefined;
|
|
278
|
+
get onlyVisible() {
|
|
279
|
+
return this._onlyVisible;
|
|
280
|
+
}
|
|
281
|
+
set onlyVisible(value) {
|
|
282
|
+
this._onlyVisible = value;
|
|
283
|
+
this.next();
|
|
284
|
+
}
|
|
285
|
+
_onlyVisible = false;
|
|
286
|
+
get sortAlpha() {
|
|
287
|
+
return this._sortedAlpha;
|
|
288
|
+
}
|
|
289
|
+
set sortAlpha(value) {
|
|
290
|
+
this._sortedAlpha = value;
|
|
291
|
+
this.next();
|
|
292
|
+
}
|
|
293
|
+
_sortedAlpha = false;
|
|
294
|
+
get opacity() {
|
|
295
|
+
return Math.round(this.activeLayer$.getValue().opacity * 100);
|
|
296
|
+
}
|
|
297
|
+
set opacity(opacity) {
|
|
298
|
+
this.activeLayer$.getValue().opacity = opacity / 100;
|
|
299
|
+
}
|
|
300
|
+
get badgeOpacity() {
|
|
301
|
+
if (this.opacity === 100) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
return this.opacity;
|
|
305
|
+
}
|
|
306
|
+
get raiseDisabled() {
|
|
307
|
+
if (!this.orderable ||
|
|
308
|
+
this.activeLayer.baseLayer ||
|
|
309
|
+
this.getUpperLayer().id === this.activeLayer.id ||
|
|
310
|
+
this.isUpperBaselayer(this.activeLayer)) {
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
get lowerDisabled() {
|
|
316
|
+
if (!this.orderable ||
|
|
317
|
+
this.activeLayer.baseLayer ||
|
|
318
|
+
this.getLowerLayer().id === this.activeLayer.id ||
|
|
319
|
+
this.isLowerBaselayer(this.activeLayer)) {
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
get raiseDisabledSelection() {
|
|
325
|
+
if (this.layersChecked.length === 0 ||
|
|
326
|
+
!this.orderable ||
|
|
327
|
+
!this.raisableLayers(this.layersChecked) ||
|
|
328
|
+
this.selectAllCheck === true) {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
get lowerDisabledSelection() {
|
|
334
|
+
if (this.layersChecked.length === 0 ||
|
|
335
|
+
!this.orderable ||
|
|
336
|
+
!this.lowerableLayers(this.layersChecked) ||
|
|
337
|
+
this.selectAllCheck === true) {
|
|
338
|
+
return true;
|
|
339
|
+
}
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
get checkOpacity() {
|
|
343
|
+
return this.layersCheckedOpacity() * 100;
|
|
344
|
+
}
|
|
345
|
+
set checkOpacity(opacity) {
|
|
346
|
+
for (const layer of this.layersChecked) {
|
|
347
|
+
layer.opacity = opacity / 100;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
get layerListDisplacement() {
|
|
351
|
+
return LayerListDisplacement;
|
|
352
|
+
}
|
|
353
|
+
toggleOpacity = false;
|
|
354
|
+
selectAllCheck;
|
|
355
|
+
selectAllCheck$ = new BehaviorSubject(undefined);
|
|
356
|
+
selectAllCheck$$;
|
|
357
|
+
constructor(elRef) {
|
|
358
|
+
this.elRef = elRef;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Subscribe to the search term stream and trigger researches
|
|
362
|
+
* @internal
|
|
363
|
+
*/
|
|
364
|
+
ngOnInit() {
|
|
365
|
+
this.change$$ = this.change$
|
|
366
|
+
.pipe(debounce(() => {
|
|
367
|
+
return this.layers.length === 0 ? EMPTY : timer(50);
|
|
368
|
+
}))
|
|
369
|
+
.subscribe(() => {
|
|
370
|
+
this.showToolbar$.next(this.computeShowToolbar());
|
|
371
|
+
this.layers$.next(this.computeLayers(this.layers.slice(0)));
|
|
372
|
+
this.appliedFilterAndSort.emit({
|
|
373
|
+
keyword: this.keyword,
|
|
374
|
+
sortAlpha: this.sortAlpha,
|
|
375
|
+
onlyVisible: this.onlyVisible
|
|
376
|
+
});
|
|
377
|
+
});
|
|
378
|
+
this.selectAllCheck$$ = this.selectAllCheck$.subscribe((value) => {
|
|
379
|
+
this.selectAllCheck = value;
|
|
380
|
+
});
|
|
381
|
+
this.layers$$ = this.layers$.subscribe(() => {
|
|
382
|
+
if (this.layers) {
|
|
383
|
+
let checks = 0;
|
|
384
|
+
for (const layer of this.layers) {
|
|
385
|
+
layer.status$.subscribe((valStatus) => {
|
|
386
|
+
if (valStatus === 0) {
|
|
387
|
+
this.map.removeLayer(layer);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
if (layer.options.active) {
|
|
391
|
+
this.activeLayer = layer;
|
|
392
|
+
this.layerTool = true;
|
|
393
|
+
}
|
|
394
|
+
if (layer.options.check) {
|
|
395
|
+
checks += 1;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (this.excludeBaseLayers) {
|
|
399
|
+
this.selectAllCheck =
|
|
400
|
+
checks ===
|
|
401
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length
|
|
402
|
+
? true
|
|
403
|
+
: false;
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
this.selectAllCheck =
|
|
407
|
+
checks === this.layers.filter((lay) => lay.showInLayerList).length
|
|
408
|
+
? true
|
|
409
|
+
: false;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
ngOnDestroy() {
|
|
415
|
+
this.change$$.unsubscribe();
|
|
416
|
+
this.selectAllCheck$$.unsubscribe();
|
|
417
|
+
this.layers$$.unsubscribe();
|
|
418
|
+
}
|
|
419
|
+
activeLayerExtentIsValid(layer) {
|
|
420
|
+
let valid = false;
|
|
421
|
+
if (layer.options.showButtonZoomToExtent === false) {
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
const layerExtent = layer.options.extent;
|
|
425
|
+
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
426
|
+
if (layerExtent) {
|
|
427
|
+
if (maxLayerZoomExtent) {
|
|
428
|
+
valid = olextent.containsExtent(maxLayerZoomExtent, layerExtent);
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
valid = true;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return valid;
|
|
435
|
+
}
|
|
436
|
+
activeLayersExtentAreValid(layers) {
|
|
437
|
+
let valid = false;
|
|
438
|
+
const layersExtent = olextent.createEmpty();
|
|
439
|
+
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
440
|
+
for (const layer of layers) {
|
|
441
|
+
const layerExtent = layer.options.extent;
|
|
442
|
+
if (layerExtent && !layerExtent.includes(Infinity)) {
|
|
443
|
+
olextent.extend(layersExtent, layerExtent);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
if (!olextent.isEmpty(layersExtent)) {
|
|
447
|
+
if (maxLayerZoomExtent) {
|
|
448
|
+
valid = olextent.containsExtent(maxLayerZoomExtent, layersExtent);
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
valid = true;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return valid;
|
|
455
|
+
}
|
|
456
|
+
zoomLayerExtents(layer) {
|
|
457
|
+
this.map.viewController.zoomToExtent(layer.options.extent);
|
|
458
|
+
}
|
|
459
|
+
zoomLayersExtents(layers) {
|
|
460
|
+
const layersExtent = olextent.createEmpty();
|
|
461
|
+
for (const layer of layers) {
|
|
462
|
+
const layerExtent = layer.options.extent;
|
|
463
|
+
if (layerExtent) {
|
|
464
|
+
olextent.extend(layersExtent, layerExtent);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
this.map.viewController.zoomToExtent(layersExtent);
|
|
468
|
+
}
|
|
469
|
+
changeOpacity(event) {
|
|
470
|
+
this.opacity = event.value;
|
|
471
|
+
}
|
|
472
|
+
clearKeyword() {
|
|
473
|
+
this.keyword = undefined;
|
|
474
|
+
}
|
|
475
|
+
getLowerLayer() {
|
|
476
|
+
return this.layers
|
|
477
|
+
.filter((l) => !l.baseLayer)
|
|
478
|
+
.reduce((prev, current) => {
|
|
479
|
+
return prev.zIndex < current.zIndex ? prev : current;
|
|
480
|
+
}, { zIndex: undefined, id: undefined });
|
|
481
|
+
}
|
|
482
|
+
isLowerBaselayer(layer) {
|
|
483
|
+
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
484
|
+
if (this.layers &&
|
|
485
|
+
this.layers[index + 1] &&
|
|
486
|
+
this.layers[index + 1].baseLayer === true) {
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
return false;
|
|
490
|
+
}
|
|
491
|
+
getUpperLayer() {
|
|
492
|
+
return this.layers
|
|
493
|
+
.filter((l) => !l.baseLayer)
|
|
494
|
+
.reduce((prev, current) => {
|
|
495
|
+
return prev.zIndex > current.zIndex ? prev : current;
|
|
496
|
+
}, { zIndex: undefined, id: undefined });
|
|
497
|
+
}
|
|
498
|
+
isUpperBaselayer(layer) {
|
|
499
|
+
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
500
|
+
if (this.layers &&
|
|
501
|
+
this.layers[index - 1] &&
|
|
502
|
+
this.layers[index - 1].baseLayer === true) {
|
|
503
|
+
return true;
|
|
504
|
+
}
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
moveActiveLayer(activeLayer, actiontype, fromUi = false) {
|
|
508
|
+
const sortedLayersToMove = [];
|
|
509
|
+
getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
510
|
+
let rootParentByProperty = getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
511
|
+
if (!rootParentByProperty) {
|
|
512
|
+
rootParentByProperty = activeLayer;
|
|
513
|
+
}
|
|
514
|
+
const layersToMove = [rootParentByProperty];
|
|
515
|
+
getAllChildLayersByProperty(this.map, rootParentByProperty, layersToMove, LinkedProperties.ZINDEX);
|
|
516
|
+
this.layers.map((layer) => {
|
|
517
|
+
if (layersToMove.indexOf(layer) !== -1) {
|
|
518
|
+
sortedLayersToMove.push(layer);
|
|
519
|
+
}
|
|
520
|
+
});
|
|
521
|
+
if (actiontype === LayerListDisplacement.Raise) {
|
|
522
|
+
this.raiseLayers(sortedLayersToMove, fromUi);
|
|
523
|
+
}
|
|
524
|
+
else if (actiontype === LayerListDisplacement.Lower) {
|
|
525
|
+
this.lowerLayers(sortedLayersToMove, fromUi);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/*
|
|
529
|
+
* For selection mode disabled attribute
|
|
530
|
+
*/
|
|
531
|
+
raisableLayers(layers) {
|
|
532
|
+
let response = false;
|
|
533
|
+
let base = 0;
|
|
534
|
+
for (const layer of layers) {
|
|
535
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
536
|
+
const currentLayer = this.layers[mapIndex];
|
|
537
|
+
if (currentLayer.baseLayer) {
|
|
538
|
+
base += 1;
|
|
539
|
+
}
|
|
540
|
+
const previousLayer = this.layers[mapIndex - 1];
|
|
541
|
+
if (previousLayer &&
|
|
542
|
+
previousLayer.baseLayer !== true &&
|
|
543
|
+
!layers.find((lay) => previousLayer.id === lay.id) &&
|
|
544
|
+
currentLayer.baseLayer !== true) {
|
|
545
|
+
response = true;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
549
|
+
base === this.layersChecked.length) {
|
|
550
|
+
response = false;
|
|
551
|
+
}
|
|
552
|
+
return response;
|
|
553
|
+
}
|
|
554
|
+
/*
|
|
555
|
+
* When multiple layers is selected but some may be allow to move
|
|
556
|
+
*/
|
|
557
|
+
raisableLayer(index) {
|
|
558
|
+
if (index < 1) {
|
|
559
|
+
return false;
|
|
560
|
+
}
|
|
561
|
+
if (this.layers[index - 1].options.check) {
|
|
562
|
+
return this.raisableLayer(index - 1);
|
|
563
|
+
}
|
|
564
|
+
return true;
|
|
565
|
+
}
|
|
566
|
+
raiseLayers(layers, fromUi = true) {
|
|
567
|
+
const layersToRaise = [];
|
|
568
|
+
for (const layer of layers) {
|
|
569
|
+
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
570
|
+
if (this.raisableLayer(index)) {
|
|
571
|
+
layersToRaise.push(layer);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
this.map.raiseLayers(layersToRaise);
|
|
575
|
+
if (fromUi) {
|
|
576
|
+
setTimeout(() => {
|
|
577
|
+
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
578
|
+
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
579
|
+
let targetToScroll;
|
|
580
|
+
if (checkItems.length) {
|
|
581
|
+
targetToScroll = checkItems[0];
|
|
582
|
+
}
|
|
583
|
+
if (itemFocused.length) {
|
|
584
|
+
targetToScroll = itemFocused[0];
|
|
585
|
+
}
|
|
586
|
+
if (targetToScroll) {
|
|
587
|
+
scrollIntoView(targetToScroll, {
|
|
588
|
+
scrollMode: 'if-needed',
|
|
589
|
+
behavior: 'smooth',
|
|
590
|
+
block: 'end',
|
|
591
|
+
inline: 'nearest'
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
}, 100);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
/*
|
|
598
|
+
* For selection mode disabled attribute
|
|
599
|
+
*/
|
|
600
|
+
lowerableLayers(layers) {
|
|
601
|
+
let response = false;
|
|
602
|
+
let base = 0;
|
|
603
|
+
for (const layer of layers) {
|
|
604
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
605
|
+
const currentLayer = this.layers[mapIndex];
|
|
606
|
+
if (currentLayer.baseLayer) {
|
|
607
|
+
base += 1;
|
|
608
|
+
}
|
|
609
|
+
const nextLayer = this.layers[mapIndex + 1];
|
|
610
|
+
if (nextLayer &&
|
|
611
|
+
nextLayer.baseLayer !== true &&
|
|
612
|
+
!layers.find((lay) => nextLayer.id === lay.id)) {
|
|
613
|
+
response = true;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
617
|
+
base === this.layersChecked.length) {
|
|
618
|
+
response = false;
|
|
619
|
+
}
|
|
620
|
+
return response;
|
|
621
|
+
}
|
|
622
|
+
/*
|
|
623
|
+
* When multiple layers is selected but some may be allow to move
|
|
624
|
+
*/
|
|
625
|
+
lowerableLayer(index) {
|
|
626
|
+
if (index >
|
|
627
|
+
this.layers.filter((lay) => lay.baseLayer !== true).length - 2) {
|
|
628
|
+
return false;
|
|
629
|
+
}
|
|
630
|
+
if (this.layers[index + 1].options.check) {
|
|
631
|
+
return this.lowerableLayer(index + 1);
|
|
632
|
+
}
|
|
633
|
+
return true;
|
|
634
|
+
}
|
|
635
|
+
lowerLayers(layers, fromUi = true) {
|
|
636
|
+
const layersToLower = [];
|
|
637
|
+
for (const layer of layers) {
|
|
638
|
+
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
639
|
+
if (this.lowerableLayer(index)) {
|
|
640
|
+
layersToLower.push(layer);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
this.map.lowerLayers(layersToLower);
|
|
644
|
+
if (fromUi) {
|
|
645
|
+
setTimeout(() => {
|
|
646
|
+
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
647
|
+
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
648
|
+
let targetToScroll;
|
|
649
|
+
if (checkItems.length) {
|
|
650
|
+
targetToScroll = checkItems[checkItems.length - 1];
|
|
651
|
+
}
|
|
652
|
+
if (itemFocused.length) {
|
|
653
|
+
targetToScroll = itemFocused[0];
|
|
654
|
+
}
|
|
655
|
+
if (targetToScroll) {
|
|
656
|
+
scrollIntoView(targetToScroll, {
|
|
657
|
+
scrollMode: 'if-needed',
|
|
658
|
+
behavior: 'smooth',
|
|
659
|
+
block: 'end',
|
|
660
|
+
inline: 'nearest'
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
}, 100);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
next() {
|
|
667
|
+
this.change$.next();
|
|
668
|
+
}
|
|
669
|
+
computeLayers(layers) {
|
|
670
|
+
let layersOut = this.filterLayers(layers);
|
|
671
|
+
if (this.sortAlpha) {
|
|
672
|
+
layersOut = this.sortLayersByTitle(layersOut);
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
layersOut = this.sortLayersByZindex(layersOut);
|
|
676
|
+
}
|
|
677
|
+
return layersOut;
|
|
678
|
+
}
|
|
679
|
+
onKeywordChange(term) {
|
|
680
|
+
this.keyword = term;
|
|
681
|
+
}
|
|
682
|
+
onAppliedFilterAndSortChange(appliedFilter) {
|
|
683
|
+
this.keyword = appliedFilter.keyword;
|
|
684
|
+
this.onlyVisible = appliedFilter.onlyVisible;
|
|
685
|
+
this.sortAlpha = appliedFilter.sortAlpha;
|
|
686
|
+
}
|
|
687
|
+
filterLayers(layers) {
|
|
688
|
+
if (this.layerFilterAndSortOptions.showToolbar === LayerListControlsEnum.never) {
|
|
689
|
+
return layers;
|
|
690
|
+
}
|
|
691
|
+
if (!this.keyword && !this.onlyVisible) {
|
|
692
|
+
return layers;
|
|
693
|
+
}
|
|
694
|
+
const keepLayerIds = layers.map((layer) => layer.id);
|
|
695
|
+
layers.forEach((layer) => {
|
|
696
|
+
const layerOptions = layer.options || {};
|
|
697
|
+
const dataSourceOptions = layer.dataSource.options || {};
|
|
698
|
+
const metadata = layerOptions.metadata || {};
|
|
699
|
+
const keywords = metadata.keywordList || [];
|
|
700
|
+
const layerKeywords = keywords.map((kw) => {
|
|
701
|
+
return kw.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
702
|
+
});
|
|
703
|
+
if (this.keyword && layer.title) {
|
|
704
|
+
const localKeyword = this.keyword
|
|
705
|
+
.normalize('NFD')
|
|
706
|
+
.replace(/[\u0300-\u036f]/g, '');
|
|
707
|
+
const layerTitle = layer.title
|
|
708
|
+
.normalize('NFD')
|
|
709
|
+
.replace(/[\u0300-\u036f]/g, '');
|
|
710
|
+
const dataSourceType = dataSourceOptions.type || '';
|
|
711
|
+
const keywordRegex = new RegExp(localKeyword, 'gi');
|
|
712
|
+
const keywordInList = layerKeywords.find((kw) => keywordRegex.test(kw)) !==
|
|
713
|
+
undefined;
|
|
714
|
+
if (!keywordRegex.test(layerTitle) &&
|
|
715
|
+
!(this.keyword.toLowerCase() === dataSourceType.toLowerCase()) &&
|
|
716
|
+
!keywordInList) {
|
|
717
|
+
const index = keepLayerIds.indexOf(layer.id);
|
|
718
|
+
if (index > -1) {
|
|
719
|
+
keepLayerIds.splice(index, 1);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
if (this.onlyVisible && layer.visible === false) {
|
|
724
|
+
const index = keepLayerIds.indexOf(layer.id);
|
|
725
|
+
if (index > -1) {
|
|
726
|
+
keepLayerIds.splice(index, 1);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
});
|
|
730
|
+
return layers.filter((layer) => keepLayerIds.indexOf(layer.id) !== -1);
|
|
731
|
+
}
|
|
732
|
+
sortLayersByZindex(layers) {
|
|
733
|
+
return layers.sort((layer1, layer2) => layer2.zIndex - layer1.zIndex);
|
|
734
|
+
}
|
|
735
|
+
sortLayersByTitle(layers) {
|
|
736
|
+
return layers.sort((a, b) => {
|
|
737
|
+
if (this.normalize(a.title) < this.normalize(b.title)) {
|
|
738
|
+
return -1;
|
|
739
|
+
}
|
|
740
|
+
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
741
|
+
return 1;
|
|
742
|
+
}
|
|
743
|
+
return 0;
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
normalize(str) {
|
|
747
|
+
return str
|
|
748
|
+
.normalize('NFD')
|
|
749
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
750
|
+
.toLowerCase();
|
|
751
|
+
}
|
|
752
|
+
computeShowToolbar() {
|
|
753
|
+
switch (this.layerFilterAndSortOptions.showToolbar) {
|
|
754
|
+
case LayerListControlsEnum.always:
|
|
755
|
+
return true;
|
|
756
|
+
case LayerListControlsEnum.never:
|
|
757
|
+
return false;
|
|
758
|
+
default:
|
|
759
|
+
if (this.layers.length >= this.thresholdToFilterAndSort ||
|
|
760
|
+
this.keyword ||
|
|
761
|
+
this.onlyVisible) {
|
|
762
|
+
return true;
|
|
763
|
+
}
|
|
764
|
+
return false;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
toggleLayerTool(layer) {
|
|
768
|
+
this.toggleOpacity = false;
|
|
769
|
+
if (this.layerTool && layer === this.activeLayer) {
|
|
770
|
+
this.layerTool = false;
|
|
771
|
+
}
|
|
772
|
+
else {
|
|
773
|
+
this.layerTool = true;
|
|
774
|
+
}
|
|
775
|
+
for (const lay of this.layers) {
|
|
776
|
+
lay.options.active = false;
|
|
777
|
+
}
|
|
778
|
+
layer.options.active = true;
|
|
779
|
+
this.activeLayer = layer;
|
|
780
|
+
}
|
|
781
|
+
removeLayers(layers) {
|
|
782
|
+
if (layers && layers.length > 0) {
|
|
783
|
+
this.layersChecked = [];
|
|
784
|
+
for (const layer of layers) {
|
|
785
|
+
if (layer.options.removable !== false) {
|
|
786
|
+
layer.map.removeLayer(layer);
|
|
787
|
+
}
|
|
788
|
+
else {
|
|
789
|
+
this.layersChecked.push(layer);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
else if (!layers && this.activeLayer.options.removable !== false) {
|
|
794
|
+
this.activeLayer.map.removeLayer(this.activeLayer);
|
|
795
|
+
this.layerTool = false;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
toggleVisibility(layers) {
|
|
799
|
+
if (layers && layers.length > 0) {
|
|
800
|
+
for (const layer of layers) {
|
|
801
|
+
layer.visible = this.hideSelectedLayers;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
this.layerItemChangeDetection$.next(true);
|
|
805
|
+
}
|
|
806
|
+
isLayerRemovable(layer) {
|
|
807
|
+
return layer.options.removable !== false;
|
|
808
|
+
}
|
|
809
|
+
isAllLayersRemovable(layers) {
|
|
810
|
+
return layers.every((l) => this.isLayerRemovable(l));
|
|
811
|
+
}
|
|
812
|
+
get statusSelectedLayersCheck() {
|
|
813
|
+
let statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
814
|
+
let findTrue = false;
|
|
815
|
+
let findFalse = false;
|
|
816
|
+
if (this.layersChecked.length === 0) {
|
|
817
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
818
|
+
}
|
|
819
|
+
else {
|
|
820
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.MIXED;
|
|
821
|
+
this.hideSelectedLayers = false;
|
|
822
|
+
for (const layer2 of this.layersChecked) {
|
|
823
|
+
if (layer2.visible === true) {
|
|
824
|
+
findTrue = true;
|
|
825
|
+
}
|
|
826
|
+
if (layer2.visible === false) {
|
|
827
|
+
findFalse = true;
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
if (findTrue === true && findFalse === false) {
|
|
831
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_VISIBLE;
|
|
832
|
+
}
|
|
833
|
+
if (findTrue === false && findFalse === true) {
|
|
834
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_HIDDEN;
|
|
835
|
+
this.hideSelectedLayers = true;
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
return statusSelectedLayers;
|
|
839
|
+
}
|
|
840
|
+
layersCheck(event) {
|
|
841
|
+
event.layer.options.check = event.check;
|
|
842
|
+
if (event.check === true) {
|
|
843
|
+
const eventMapIndex = this.layers.findIndex((layer) => event.layer.id === layer.id);
|
|
844
|
+
for (const layer of this.layersChecked) {
|
|
845
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
846
|
+
if (eventMapIndex < mapIndex) {
|
|
847
|
+
this.layersChecked.splice(this.layersChecked.findIndex((lay) => layer.id === lay.id), 0, event.layer);
|
|
848
|
+
if (this.excludeBaseLayers) {
|
|
849
|
+
if (this.layersChecked.length ===
|
|
850
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
851
|
+
this.selectAllCheck = true;
|
|
852
|
+
}
|
|
853
|
+
else {
|
|
854
|
+
this.selectAllCheck = false;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
else if (!this.excludeBaseLayers) {
|
|
858
|
+
if (this.layersChecked.length ===
|
|
859
|
+
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
860
|
+
this.selectAllCheck = true;
|
|
861
|
+
}
|
|
862
|
+
else {
|
|
863
|
+
this.selectAllCheck = false;
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
this.layersChecked.push(event.layer);
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
const index = this.layersChecked.findIndex((layer) => event.layer.id === layer.id);
|
|
873
|
+
this.layersChecked.splice(index, 1);
|
|
874
|
+
}
|
|
875
|
+
if (this.excludeBaseLayers) {
|
|
876
|
+
if (this.layersChecked.length ===
|
|
877
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
878
|
+
this.selectAllCheck = true;
|
|
879
|
+
}
|
|
880
|
+
else {
|
|
881
|
+
this.selectAllCheck = false;
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
else if (!this.excludeBaseLayers) {
|
|
885
|
+
if (this.layersChecked.length ===
|
|
886
|
+
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
887
|
+
this.selectAllCheck = true;
|
|
888
|
+
}
|
|
889
|
+
else {
|
|
890
|
+
this.selectAllCheck = false;
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
toggleSelectionMode(value) {
|
|
895
|
+
this.selection = value;
|
|
896
|
+
this.activeLayer = undefined;
|
|
897
|
+
if (value === true) {
|
|
898
|
+
this.layerTool = false;
|
|
899
|
+
for (const layer of this.layers) {
|
|
900
|
+
if (layer.options.check) {
|
|
901
|
+
this.layersChecked.push(layer);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
layersCheckedOpacity() {
|
|
907
|
+
if (this.layersChecked.length > 1) {
|
|
908
|
+
return 1;
|
|
909
|
+
}
|
|
910
|
+
else {
|
|
911
|
+
const opacity = [];
|
|
912
|
+
for (const layer of this.layersChecked) {
|
|
913
|
+
opacity.push(layer.opacity);
|
|
914
|
+
}
|
|
915
|
+
return opacity;
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
selectAll() {
|
|
919
|
+
if (!this.selectAllCheck) {
|
|
920
|
+
for (const layer of this.layers) {
|
|
921
|
+
if (this.excludeBaseLayers &&
|
|
922
|
+
layer.baseLayer !== true &&
|
|
923
|
+
layer.showInLayerList) {
|
|
924
|
+
layer.options.check = true;
|
|
925
|
+
this.layersChecked.push(layer);
|
|
926
|
+
}
|
|
927
|
+
else if (!this.excludeBaseLayers && layer.showInLayerList) {
|
|
928
|
+
layer.options.check = true;
|
|
929
|
+
this.layersChecked.push(layer);
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
this.selectAllCheck$.next(true);
|
|
933
|
+
}
|
|
934
|
+
else {
|
|
935
|
+
for (const layer of this.layers) {
|
|
936
|
+
layer.options.check = false;
|
|
937
|
+
}
|
|
938
|
+
this.layersChecked = [];
|
|
939
|
+
this.selectAllCheck$.next(false);
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
isScrolledIntoView(elemSource, elem) {
|
|
943
|
+
const docViewTop = elemSource.scrollTop;
|
|
944
|
+
const docViewBottom = docViewTop + elemSource.clientHeight;
|
|
945
|
+
const elemTop = elem.offsetTop;
|
|
946
|
+
const elemBottom = elemTop + elem.clientHeight;
|
|
947
|
+
return elemBottom <= docViewBottom && elemTop >= docViewTop;
|
|
948
|
+
}
|
|
949
|
+
removeProblemLayerInList(layersList) {
|
|
950
|
+
for (const layer of layersList) {
|
|
951
|
+
if (layer.olLoadingProblem === true) {
|
|
952
|
+
this.map.removeLayer(layer);
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
return layersList;
|
|
956
|
+
}
|
|
957
|
+
static ɵfac = function LayerListComponent_Factory(t) { return new (t || LayerListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
958
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerListComponent, selectors: [["igo-layer-list"]], contentQueries: function LayerListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
959
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
960
|
+
} if (rf & 2) {
|
|
961
|
+
let _t;
|
|
962
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateLayerToolbar = _t.first);
|
|
963
|
+
} }, inputs: { layersAreAllVisible: "layersAreAllVisible", ogcButton: "ogcButton", timeButton: "timeButton", map: "map", layers: "layers", floatLabel: "floatLabel", layerFilterAndSortOptions: "layerFilterAndSortOptions", excludeBaseLayers: "excludeBaseLayers", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", queryBadge: "queryBadge" }, outputs: { appliedFilterAndSort: "appliedFilterAndSort" }, ngContentSelectors: _c3, decls: 10, vars: 11, consts: [["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection", 4, "ngIf"], ["class", "select-all", 4, "ngIf"], [3, "navigation", "selection"], ["igoList", ""], ["ngFor", "", 3, "ngForOf"], ["class", "igo-layer-actions-container", 3, "title", 4, "ngIf"], ["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection"], [1, "select-all"], [1, "select-all-checkbox", 3, "color", "checked", "indeterminate", "change"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox", 4, "ngIf"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox"], [1, "igo-layer-actions-container", 3, "title"], [1, "igo-layer-button-group"], ["class", "delete-button", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "down-button", 3, "matTooltip", "disabled", "click"], ["aria-hidden", "false", "matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-down", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "up-button", 3, "matTooltip", "disabled", "click"], ["aria-hidden", "false", "matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-up", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "matMenuTriggerFor", "matTooltip"], ["aria-hidden", "false", "matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "opacity", 3, "matBadge"], [1, "panel-opacity-menu"], ["opacityMenu", "matMenu"], ["id", "opacity-slider", "color", "primary", "discrete", "", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "matTooltip", "click"], ["ngSlider", ""], ["matSliderThumb", "", 3, "value", "input"], ["ngSliderThumb", "matSliderThumb"], ["class", "zoomLayer-button", "color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoLayerItemToolbar", "", 3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "matTooltip", "click"], ["svgIcon", "delete"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "zoomLayer-button", 3, "matTooltip", "click"], ["matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "magnify-scan"], [1, "actions-buttons-multi"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "disabled", "matTooltip", "click"], ["aria-hidden", "false", "matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "delete", 3, "matBadge", "matBadgeHidden"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "eye-button", 3, "disabled", "matTooltip", "click"], [3, "svgIcon"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "disabled", "matMenuTriggerFor", "matTooltip"], ["svgIcon", "opacity"], [1, "mat-menu-opacity-slider"], ["id", "opacity-menu"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "showTickMarks", "", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click", 4, "ngIf"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "showTickMarks", "", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click"], ["matSliderThumb", ""], ["svgIcon", "magnify-scan"]], template: function LayerListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
964
|
+
i0.ɵɵprojectionDef(_c2);
|
|
965
|
+
i0.ɵɵtemplate(0, LayerListComponent_igo_layer_list_tool_0_Template, 1, 4, "igo-layer-list-tool", 0);
|
|
966
|
+
i0.ɵɵpipe(1, "async");
|
|
967
|
+
i0.ɵɵtemplate(2, LayerListComponent_div_2_Template, 5, 8, "div", 1);
|
|
968
|
+
i0.ɵɵelement(3, "mat-divider");
|
|
969
|
+
i0.ɵɵelementStart(4, "igo-list", 2, 3);
|
|
970
|
+
i0.ɵɵtemplate(6, LayerListComponent_ng_template_6_Template, 1, 1, "ng-template", 4);
|
|
971
|
+
i0.ɵɵpipe(7, "async");
|
|
972
|
+
i0.ɵɵelementEnd();
|
|
973
|
+
i0.ɵɵtemplate(8, LayerListComponent_igo_panel_8_Template, 24, 34, "igo-panel", 5);
|
|
974
|
+
i0.ɵɵtemplate(9, LayerListComponent_igo_panel_9_Template, 27, 41, "igo-panel", 5);
|
|
975
|
+
} if (rf & 2) {
|
|
976
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 7, ctx.showToolbar$));
|
|
977
|
+
i0.ɵɵadvance(2);
|
|
978
|
+
i0.ɵɵproperty("ngIf", ctx.selection);
|
|
979
|
+
i0.ɵɵadvance(2);
|
|
980
|
+
i0.ɵɵproperty("navigation", false)("selection", false);
|
|
981
|
+
i0.ɵɵadvance(2);
|
|
982
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 9, ctx.layers$));
|
|
983
|
+
i0.ɵɵadvance(2);
|
|
984
|
+
i0.ɵɵproperty("ngIf", !ctx.selection && ctx.layerTool && ctx.activeLayer);
|
|
985
|
+
i0.ɵɵadvance(1);
|
|
986
|
+
i0.ɵɵproperty("ngIf", ctx.selection && ctx.layers.length > 0);
|
|
987
|
+
} }, styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%}[_nghost-%COMP%] igo-list[_ngcontent-%COMP%]{flex:1;padding-top:8px}[_nghost-%COMP%] mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}[_nghost-%COMP%] .igo-layer-actions-container[_ngcontent-%COMP%]{padding:0 6px 0 4px}[_nghost-%COMP%] .igo-layer-actions-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{text-align:center}[_nghost-%COMP%] mat-list-item[_ngcontent-%COMP%] .mdc-list-item__content{margin-bottom:10px}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%], [_nghost-%COMP%] .actions-buttons-multi[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar, [_nghost-%COMP%] .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar{height:4px}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-track, [_nghost-%COMP%] .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f1f1}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, [_nghost-%COMP%] .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#888}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, [_nghost-%COMP%] .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#555}[_nghost-%COMP%] .igo-layer-button-group[_ngcontent-%COMP%]{padding-top:5px}[_nghost-%COMP%] igo-panel[_ngcontent-%COMP%]{height:unset}[_nghost-%COMP%] .select-all[_ngcontent-%COMP%]{display:flex;align-items:center;height:48px;padding:0 16px} .panel-opacity-menu{overflow:visible!important} .panel-opacity-menu #opacity-slider{margin:0 16px}"], changeDetection: 0 });
|
|
988
|
+
}
|
|
989
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListComponent, [{
|
|
990
|
+
type: Component,
|
|
991
|
+
args: [{ selector: 'igo-layer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-layer-list-tool\r\n *ngIf=\"showToolbar$ | async\"\r\n floatLabel=\"auto\"\r\n [layersAreAllVisible]=\"layersAreAllVisible\"\r\n [term]=\"layerFilterAndSortOptions.keyword\"\r\n [onlyVisible]=\"layerFilterAndSortOptions.onlyVisible\"\r\n [sortAlpha]=\"layerFilterAndSortOptions.sortAlpha\"\r\n (appliedFilterAndSort)=\"onAppliedFilterAndSortChange($event)\"\r\n (selection)=\"toggleSelectionMode($event)\"\r\n>\r\n</igo-layer-list-tool>\r\n\r\n<div *ngIf=\"selection\" class=\"select-all\">\r\n <mat-checkbox\r\n class=\"select-all-checkbox\"\r\n [color]=\"!selectAllCheck && layersChecked.length > 0 ? 'accent' : 'primary'\"\r\n (change)=\"selectAll()\"\r\n [checked]=\"selectAllCheck\"\r\n [indeterminate]=\"!selectAllCheck && layersChecked.length > 0\"\r\n >\r\n {{\r\n selectAllCheck\r\n ? ('igo.geo.layer.deselectAll' | translate)\r\n : ('igo.geo.layer.selectAll' | translate)\r\n }}\r\n </mat-checkbox>\r\n</div>\r\n<mat-divider></mat-divider>\r\n\r\n<igo-list #igoList [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\r\n <igo-layer-item\r\n *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\r\n igoListItem\r\n [layer]=\"layer\"\r\n [activeLayer]=\"activeLayer\"\r\n [orderable]=\"orderable && !layer.baseLayer\"\r\n [lowerDisabled]=\"getLowerLayer().id === layer.id\"\r\n [raiseDisabled]=\"getUpperLayer().id === layer.id\"\r\n [queryBadge]=\"queryBadge\"\r\n [expandLegendIfVisible]=\"expandLegendOfVisibleLayers\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [selectionMode]=\"selection\"\r\n [selectAll]=\"selectAllCheck\"\r\n [layerCheck]=\"layer.options.check\"\r\n [changeDetection]=\"layerItemChangeDetection$\"\r\n (action)=\"toggleLayerTool($event)\"\r\n (checkbox)=\"layersCheck($event)\"\r\n >\r\n </igo-layer-item>\r\n </ng-template>\r\n</igo-list>\r\n\r\n<igo-panel\r\n *ngIf=\"!selection && layerTool && activeLayer\"\r\n class=\"igo-layer-actions-container\"\r\n [title]=\"activeLayer.title\"\r\n>\r\n <div class=\"igo-layer-button-group\">\r\n <button\r\n *ngIf=\"isLayerRemovable(activeLayer)\"\r\n class=\"delete-button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.removeLayer' | translate\"\r\n (click)=\"removeLayers()\"\r\n >\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"down-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"\r\n sortAlpha || onlyVisible || keyword\r\n ? ('igo.geo.layer.filterLowerLayer' | translate)\r\n : ('igo.geo.layer.lowerLayer' | translate)\r\n \"\r\n [disabled]=\"lowerDisabled\"\r\n (click)=\"moveActiveLayer(activeLayer, layerListDisplacement.Lower, true)\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"sortAlpha || onlyVisible || keyword ? '!' : ''\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\"\r\n [matBadgeHidden]=\"lowerDisabled\"\r\n svgIcon=\"arrow-down\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"up-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"\r\n sortAlpha || onlyVisible || keyword\r\n ? ('igo.geo.layer.filterRaiseLayer' | translate)\r\n : ('igo.geo.layer.raiseLayer' | translate)\r\n \"\r\n [disabled]=\"raiseDisabled\"\r\n (click)=\"moveActiveLayer(activeLayer, layerListDisplacement.Raise, true)\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"sortAlpha || onlyVisible || keyword ? '!' : ''\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\"\r\n [matBadgeHidden]=\"raiseDisabled\"\r\n svgIcon=\"arrow-up\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <!-- <label>{{ 'igo.geo.layer.opacity' | translate }} </label> -->\r\n <button\r\n class=\"opacity-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matMenuTriggerFor]=\"opacityMenu\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"badgeOpacity\"\r\n matBadgeColor=\"primary\"\r\n matBadgeSize=\"medium\"\r\n svgIcon=\"opacity\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <mat-menu #opacityMenu=\"matMenu\" class=\"panel-opacity-menu\">\r\n <mat-slider\r\n id=\"opacity-slider\"\r\n color=\"primary\"\r\n discrete\r\n step=\"5\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n (click)=\"$event.stopPropagation()\"\r\n matTooltipShowDelay=\"500\"\r\n tooltip-position=\"below\"\r\n #ngSlider\r\n ><input\r\n matSliderThumb\r\n [value]=\"opacity\"\r\n (input)=\"\r\n changeOpacity({\r\n source: ngSliderThumb,\r\n parent: ngSlider,\r\n value: ngSliderThumb.value\r\n })\r\n \"\r\n #ngSliderThumb=\"matSliderThumb\"\r\n />\r\n </mat-slider>\r\n </mat-menu>\r\n\r\n <button\r\n *ngIf=\"activeLayerExtentIsValid(activeLayer)\"\r\n class=\"zoomLayer-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.zoomLayer' | translate\"\r\n (click)=\"zoomLayerExtents(activeLayer)\"\r\n >\r\n <mat-icon\r\n matBadgeColor=\"primary\"\r\n matBadgeSize=\"medium\"\r\n svgIcon=\"magnify-scan\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <ng-container\r\n igoLayerItemToolbar\r\n [ngTemplateOutlet]=\"templateLayerToolbar\"\r\n [ngTemplateOutletContext]=\"{ layer: activeLayer }\"\r\n >\r\n </ng-container>\r\n\r\n <ng-content select=\"[igoLayerItemToolbar]\"></ng-content>\r\n </div>\r\n</igo-panel>\r\n\r\n<igo-panel\r\n *ngIf=\"selection && layers.length > 0\"\r\n class=\"igo-layer-actions-container\"\r\n [title]=\"'igo.geo.layer.tools' | translate\"\r\n>\r\n <div class=\"actions-buttons-multi\">\r\n <button\r\n class=\"delete-button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matTooltip]=\"\r\n isAllLayersRemovable(layersChecked)\r\n ? ('igo.geo.layer.removeSelectedLayers' | translate)\r\n : ('igo.geo.layer.removeSelectedLayersRestriction' | translate)\r\n \"\r\n (click)=\"removeLayers(layersChecked)\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"'!'\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\"\r\n [matBadgeHidden]=\"isAllLayersRemovable(layersChecked)\"\r\n svgIcon=\"delete\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"eye-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matTooltip]=\"\r\n statusSelectedLayersCheck === 'ALL_HIDDEN'\r\n ? ('igo.geo.layer.showSelectedLayers' | translate)\r\n : ('igo.geo.layer.hideSelectedLayers' | translate)\r\n \"\r\n (click)=\"toggleVisibility(layersChecked)\"\r\n >\r\n <mat-icon\r\n [svgIcon]=\"\r\n statusSelectedLayersCheck === 'ALL_HIDDEN' ? 'eye-off' : 'eye'\r\n \"\r\n ></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"down-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"\r\n sortAlpha || onlyVisible || keyword\r\n ? ('igo.geo.layer.filterLowerLayer' | translate)\r\n : ('igo.geo.layer.lowerLayer' | translate)\r\n \"\r\n [disabled]=\"lowerDisabledSelection\"\r\n (click)=\"lowerLayers(layersChecked)\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"sortAlpha || onlyVisible || keyword ? '!' : ''\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\"\r\n [matBadgeHidden]=\"lowerDisabledSelection\"\r\n svgIcon=\"arrow-down\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"up-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"\r\n sortAlpha || onlyVisible || keyword\r\n ? ('igo.geo.layer.filterRaiseLayer' | translate)\r\n : ('igo.geo.layer.raiseLayer' | translate)\r\n \"\r\n [disabled]=\"raiseDisabledSelection\"\r\n (click)=\"raiseLayers(layersChecked)\"\r\n >\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n [matBadge]=\"sortAlpha || onlyVisible || keyword ? '!' : ''\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\"\r\n [matBadgeHidden]=\"raiseDisabledSelection\"\r\n svgIcon=\"arrow-up\"\r\n ></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"opacity-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matMenuTriggerFor]=\"opacityMenu\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n >\r\n <mat-icon svgIcon=\"opacity\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\r\n <div id=\"opacity-menu\">\r\n <!-- TODO: The 'tickInterval' property no longer exists -->\r\n <mat-slider\r\n *ngIf=\"layersChecked.length\"\r\n id=\"opacity-slider\"\r\n color=\"primary\"\r\n thumbLabel\r\n showTickMarks\r\n step=\"5\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [(ngModel)]=\"checkOpacity\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n tooltip-position=\"below\"\r\n (click)=\"$event.stopPropagation()\"\r\n ><input matSliderThumb />\r\n </mat-slider>\r\n </div>\r\n </mat-menu>\r\n\r\n <button\r\n *ngIf=\"\r\n layersChecked.length !== 0 && activeLayersExtentAreValid(layersChecked)\r\n \"\r\n class=\"zoomLayer-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.zoomLayers' | translate\"\r\n (click)=\"zoomLayersExtents(layersChecked)\"\r\n >\r\n <mat-icon svgIcon=\"magnify-scan\"></mat-icon>\r\n </button>\r\n </div>\r\n</igo-panel>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%}:host igo-list{flex:1;padding-top:8px}:host mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}:host .igo-layer-actions-container{padding:0 6px 0 4px}:host .igo-layer-actions-container>div{text-align:center}:host mat-list-item ::ng-deep .mdc-list-item__content{margin-bottom:10px}:host .igo-layer-button-group,:host .actions-buttons-multi{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}:host .igo-layer-button-group::-webkit-scrollbar,:host .actions-buttons-multi::-webkit-scrollbar{height:4px}:host .igo-layer-button-group::-webkit-scrollbar-track,:host .actions-buttons-multi::-webkit-scrollbar-track{background:#f1f1f1}:host .igo-layer-button-group::-webkit-scrollbar-thumb,:host .actions-buttons-multi::-webkit-scrollbar-thumb{background:#888}:host .igo-layer-button-group::-webkit-scrollbar-thumb:hover,:host .actions-buttons-multi::-webkit-scrollbar-thumb:hover{background:#555}:host .igo-layer-button-group{padding-top:5px}:host igo-panel{height:unset}:host .select-all{display:flex;align-items:center;height:48px;padding:0 16px}::ng-deep .panel-opacity-menu{overflow:visible!important}::ng-deep .panel-opacity-menu #opacity-slider{margin:0 16px}\n"] }]
|
|
992
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { templateLayerToolbar: [{
|
|
993
|
+
type: ContentChild,
|
|
994
|
+
args: ['igoLayerItemToolbar', /* TODO: add static flag */ {}]
|
|
995
|
+
}], layersAreAllVisible: [{
|
|
996
|
+
type: Input
|
|
997
|
+
}], ogcButton: [{
|
|
998
|
+
type: Input
|
|
999
|
+
}], timeButton: [{
|
|
1000
|
+
type: Input
|
|
1001
|
+
}], map: [{
|
|
1002
|
+
type: Input
|
|
1003
|
+
}], layers: [{
|
|
1004
|
+
type: Input
|
|
1005
|
+
}], floatLabel: [{
|
|
1006
|
+
type: Input
|
|
1007
|
+
}], layerFilterAndSortOptions: [{
|
|
1008
|
+
type: Input
|
|
1009
|
+
}], excludeBaseLayers: [{
|
|
1010
|
+
type: Input
|
|
1011
|
+
}], toggleLegendOnVisibilityChange: [{
|
|
1012
|
+
type: Input
|
|
1013
|
+
}], expandLegendOfVisibleLayers: [{
|
|
1014
|
+
type: Input
|
|
1015
|
+
}], updateLegendOnResolutionChange: [{
|
|
1016
|
+
type: Input
|
|
1017
|
+
}], queryBadge: [{
|
|
1018
|
+
type: Input
|
|
1019
|
+
}], appliedFilterAndSort: [{
|
|
1020
|
+
type: Output
|
|
1021
|
+
}] }); })();
|
|
1022
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1saXN0L2xheWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGlzdC9sYXllci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixZQUFZLEVBR1osTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxjQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixLQUFLLEVBQ0wsS0FBSyxFQUNOLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN4QixNQUFNLHFDQUFxQyxDQUFDOzs7OztJQzFDN0MsOENBU0M7SUFGQyxnT0FBd0IsZUFBQSwyQ0FBb0MsQ0FBQSxJQUFDLDZMQUNoRCxlQUFBLGtDQUEyQixDQUFBLElBRHFCO0lBRy9ELGlCQUFzQjs7O0lBUHBC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QUUzQixzQ0FBNEQ7WUFDMUQsbUZBcUJjOztZQUNoQixpQkFBVztZQUVYLGlGQTRJWTtZQUVaLGlGQXFKWTs7WUF4VlQsNkRBQTBCO1lBV3ZCLGVBQWU7WUFBZixvQ0FBZTtZQWlCRixlQUFvQjtZQUFwQixrQ0FBb0Isb0JBQUE7WUFDTSxlQUEyQjtZQUEzQiwyREFBMkI7WUF5QnJFLGVBQTRDO1lBQTVDLHlFQUE0QztZQThJNUMsZUFBb0M7WUFBcEMsNkRBQW9DOzs7dUZEbEoxQixrQkFBa0I7Y0FOOUIsU0FBUzsyQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs2REF5Qi9DLG9CQUFvQjtrQkFEbkIsWUFBWTttQkFBQyxxQkFBcUIsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFO1lBRzFELG1CQUFtQjtrQkFBM0IsS0FBSztZQUVHLFNBQVM7a0JBQWpCLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBR0YsR0FBRztrQkFETixLQUFLO1lBVUYsTUFBTTtrQkFEVCxLQUFLO1lBbUJHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyx5QkFBeUI7a0JBQWpDLEtBQUs7WUFFRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFFRyw4QkFBOEI7a0JBQXRDLEtBQUs7WUFFRywyQkFBMkI7a0JBQW5DLEtBQUs7WUFFRyw4QkFBOEI7a0JBQXRDLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBRUksb0JBQW9CO2tCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCBzY3JvbGxJbnRvVmlldyBmcm9tICdzY3JvbGwtaW50by12aWV3LWlmLW5lZWRlZCc7XHJcblxyXG5pbXBvcnQgeyBGbG9hdExhYmVsVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQge1xyXG4gIExheWVyTGlzdENvbnRyb2xzRW51bSxcclxuICBMYXllckxpc3REaXNwbGFjZW1lbnRcclxufSBmcm9tICcuL2xheWVyLWxpc3QuZW51bSc7XHJcbmltcG9ydCB7IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtIH0gZnJvbSAnLi9sYXllci1saXN0LmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIEJlaGF2aW9yU3ViamVjdCxcclxuICBSZXBsYXlTdWJqZWN0LFxyXG4gIFN1YnNjcmlwdGlvbixcclxuICBFTVBUWSxcclxuICB0aW1lclxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBNZXRhZGF0YU9wdGlvbnMsXHJcbiAgTWV0YWRhdGFMYXllck9wdGlvbnNcclxufSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zIH0gZnJvbSAnLi4vbGF5ZXItbGlzdC10b29sL2xheWVyLWxpc3QtdG9vbC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XHJcbmltcG9ydCB7IExpbmtlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE1hdFNsaWRlckNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlcic7XHJcbmltcG9ydCAqIGFzIG9sZXh0ZW50IGZyb20gJ29sL2V4dGVudCc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5LFxyXG4gIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5XHJcbn0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMnO1xyXG5cclxuLy8gVE9ETzogVGhpcyBjbGFzcyBjb3VsZCB1c2UgYSBjbGVhbiB1cC4gQWxzbywgc29tZSBtZXRob2RzIGNvdWxkIGJlIG1vdmVkIGVhbHNld2hlcmVcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tbGF5ZXItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xheWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xheWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5ZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIG9yZGVyYWJsZSA9IHRydWU7XHJcbiAgdGhyZXNob2xkVG9GaWx0ZXJBbmRTb3J0ID0gNTtcclxuXHJcbiAgbGF5ZXJzJDogQmVoYXZpb3JTdWJqZWN0PExheWVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcblxyXG4gIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuXHJcbiAgc2hvd1Rvb2xiYXIkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcHVibGljIGxheWVyVG9vbDogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGhpZGVTZWxlY3RlZExheWVyczogYm9vbGVhbiA9IHRydWU7XHJcbiAgYWN0aXZlTGF5ZXIkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG5cclxuICBsYXllcnNDaGVja2VkOiBMYXllcltdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgbGF5ZXJJdGVtQ2hhbmdlRGV0ZWN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaWdvTGF5ZXJJdGVtVG9vbGJhcicsIC8qIFRPRE86IGFkZCBzdGF0aWMgZmxhZyAqLyB7fSlcclxuICB0ZW1wbGF0ZUxheWVyVG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgbGF5ZXJzQXJlQWxsVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHRpbWVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXA7XHJcbiAgfVxyXG4gIHNldCBtYXAodmFsdWU6IElnb01hcCkge1xyXG4gICAgdGhpcy5fbWFwID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX21hcDogSWdvTWFwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsYXllcnModmFsdWU6IExheWVyW10pIHtcclxuICAgIHRoaXMuX2xheWVycyA9IHRoaXMucmVtb3ZlUHJvYmxlbUxheWVySW5MaXN0KHZhbHVlKTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xheWVycztcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGF5ZXJzOiBMYXllcltdO1xyXG5cclxuICBzZXQgYWN0aXZlTGF5ZXIodmFsdWU6IExheWVyKSB7XHJcbiAgICB0aGlzLl9hY3RpdmVMYXllciA9IHZhbHVlO1xyXG4gICAgdGhpcy5hY3RpdmVMYXllciQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBhY3RpdmVMYXllcigpOiBMYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTGF5ZXI7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjdGl2ZUxheWVyOiBMYXllcjtcclxuXHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XHJcblxyXG4gIEBJbnB1dCgpIGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBleGNsdWRlQmFzZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBxdWVyeUJhZGdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBhcHBsaWVkRmlsdGVyQW5kU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zPigpO1xyXG5cclxuICBnZXQga2V5d29yZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2tleXdvcmQ7XHJcbiAgfVxyXG4gIHNldCBrZXl3b3JkKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2tleXdvcmQgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9rZXl3b3JkID0gdW5kZWZpbmVkO1xyXG5cclxuICBnZXQgb25seVZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb25seVZpc2libGU7XHJcbiAgfVxyXG4gIHNldCBvbmx5VmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fb25seVZpc2libGUgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vbmx5VmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICBnZXQgc29ydEFscGhhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NvcnRlZEFscGhhO1xyXG4gIH1cclxuICBzZXQgc29ydEFscGhhKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zb3J0ZWRBbHBoYSA9IHZhbHVlO1xyXG4gICAgdGhpcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NvcnRlZEFscGhhID0gZmFsc2U7XHJcblxyXG4gIGdldCBvcGFjaXR5KCkge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5hY3RpdmVMYXllciQuZ2V0VmFsdWUoKS5vcGFjaXR5ICogMTAwKTtcclxuICB9XHJcbiAgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUxheWVyJC5nZXRWYWx1ZSgpLm9wYWNpdHkgPSBvcGFjaXR5IC8gMTAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJhZGdlT3BhY2l0eSgpIHtcclxuICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IDEwMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhaXNlRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLm9yZGVyYWJsZSB8fFxyXG4gICAgICB0aGlzLmFjdGl2ZUxheWVyLmJhc2VMYXllciB8fFxyXG4gICAgICB0aGlzLmdldFVwcGVyTGF5ZXIoKS5pZCA9PT0gdGhpcy5hY3RpdmVMYXllci5pZCB8fFxyXG4gICAgICB0aGlzLmlzVXBwZXJCYXNlbGF5ZXIodGhpcy5hY3RpdmVMYXllcilcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBsb3dlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5vcmRlcmFibGUgfHxcclxuICAgICAgdGhpcy5hY3RpdmVMYXllci5iYXNlTGF5ZXIgfHxcclxuICAgICAgdGhpcy5nZXRMb3dlckxheWVyKCkuaWQgPT09IHRoaXMuYWN0aXZlTGF5ZXIuaWQgfHxcclxuICAgICAgdGhpcy5pc0xvd2VyQmFzZWxheWVyKHRoaXMuYWN0aXZlTGF5ZXIpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgcmFpc2VEaXNhYmxlZFNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICAhdGhpcy5vcmRlcmFibGUgfHxcclxuICAgICAgIXRoaXMucmFpc2FibGVMYXllcnModGhpcy5sYXllcnNDaGVja2VkKSB8fFxyXG4gICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID09PSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgbG93ZXJEaXNhYmxlZFNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICAhdGhpcy5vcmRlcmFibGUgfHxcclxuICAgICAgIXRoaXMubG93ZXJhYmxlTGF5ZXJzKHRoaXMubGF5ZXJzQ2hlY2tlZCkgfHxcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9PT0gdHJ1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoZWNrT3BhY2l0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVyc0NoZWNrZWRPcGFjaXR5KCkgKiAxMDA7XHJcbiAgfVxyXG4gIHNldCBjaGVja09wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XHJcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xyXG4gICAgICBsYXllci5vcGFjaXR5ID0gb3BhY2l0eSAvIDEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsYXllckxpc3REaXNwbGFjZW1lbnQoKTogdHlwZW9mIExheWVyTGlzdERpc3BsYWNlbWVudCB7XHJcbiAgICByZXR1cm4gTGF5ZXJMaXN0RGlzcGxhY2VtZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU9wYWNpdHkgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIHNlbGVjdEFsbENoZWNrOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzZWxlY3RBbGxDaGVjayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RBbGxDaGVjayQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc2VhcmNoIHRlcm0gc3RyZWFtIGFuZCB0cmlnZ2VyIHJlc2VhcmNoZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlJCQgPSB0aGlzLmNoYW5nZSRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXJzLmxlbmd0aCA9PT0gMCA/IEVNUFRZIDogdGltZXIoNTApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhciQubmV4dCh0aGlzLmNvbXB1dGVTaG93VG9vbGJhcigpKTtcclxuICAgICAgICB0aGlzLmxheWVycyQubmV4dCh0aGlzLmNvbXB1dGVMYXllcnModGhpcy5sYXllcnMuc2xpY2UoMCkpKTtcclxuICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJBbmRTb3J0LmVtaXQoe1xyXG4gICAgICAgICAga2V5d29yZDogdGhpcy5rZXl3b3JkLFxyXG4gICAgICAgICAgc29ydEFscGhhOiB0aGlzLnNvcnRBbHBoYSxcclxuICAgICAgICAgIG9ubHlWaXNpYmxlOiB0aGlzLm9ubHlWaXNpYmxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2skJCA9IHRoaXMuc2VsZWN0QWxsQ2hlY2skLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9IHZhbHVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXllcnMkJCA9IHRoaXMubGF5ZXJzJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sYXllcnMpIHtcclxuICAgICAgICBsZXQgY2hlY2tzID0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgICBsYXllci5zdGF0dXMkLnN1YnNjcmliZSgodmFsU3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWxTdGF0dXMgPT09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihsYXllcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGxheWVyLm9wdGlvbnMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXIgPSBsYXllcjtcclxuICAgICAgICAgICAgdGhpcy5sYXllclRvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGxheWVyLm9wdGlvbnMuY2hlY2spIHtcclxuICAgICAgICAgICAgY2hlY2tzICs9IDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID1cclxuICAgICAgICAgICAgY2hlY2tzID09PVxyXG4gICAgICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGxheSkgPT4gbGF5LmJhc2VMYXllciAhPT0gdHJ1ZSAmJiBsYXkuc2hvd0luTGF5ZXJMaXN0XHJcbiAgICAgICAgICAgICkubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9XHJcbiAgICAgICAgICAgIGNoZWNrcyA9PT0gdGhpcy5sYXllcnMuZmlsdGVyKChsYXkpID0+IGxheS5zaG93SW5MYXllckxpc3QpLmxlbmd0aFxyXG4gICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jaGFuZ2UkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RBbGxDaGVjayQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVMYXllckV4dGVudElzVmFsaWQobGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSBmYWxzZTtcclxuICAgIGlmIChsYXllci5vcHRpb25zLnNob3dCdXR0b25ab29tVG9FeHRlbnQgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XHJcbiAgICBjb25zdCBtYXhMYXllclpvb21FeHRlbnQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5tYXhMYXllclpvb21FeHRlbnQ7XHJcblxyXG4gICAgaWYgKGxheWVyRXh0ZW50KSB7XHJcbiAgICAgIGlmIChtYXhMYXllclpvb21FeHRlbnQpIHtcclxuICAgICAgICB2YWxpZCA9IG9sZXh0ZW50LmNvbnRhaW5zRXh0ZW50KG1heExheWVyWm9vbUV4dGVudCwgbGF5ZXJFeHRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbGlkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlTGF5ZXJzRXh0ZW50QXJlVmFsaWQobGF5ZXJzOiBMYXllcltdKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XHJcbiAgICBjb25zdCBtYXhMYXllclpvb21FeHRlbnQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5tYXhMYXllclpvb21FeHRlbnQ7XHJcblxyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgY29uc3QgbGF5ZXJFeHRlbnQgPSBsYXllci5vcHRpb25zLmV4dGVudDtcclxuXHJcbiAgICAgIGlmIChsYXllckV4dGVudCAmJiAhbGF5ZXJFeHRlbnQuaW5jbHVkZXMoSW5maW5pdHkpKSB7XHJcbiAgICAgICAgb2xleHRlbnQuZXh0ZW5kKGxheWVyc0V4dGVudCwgbGF5ZXJFeHRlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFvbGV4dGVudC5pc0VtcHR5KGxheWVyc0V4dGVudCkpIHtcclxuICAgICAgaWYgKG1heExheWVyWm9vbUV4dGVudCkge1xyXG4gICAgICAgIHZhbGlkID0gb2xleHRlbnQuY29udGFpbnNFeHRlbnQobWF4TGF5ZXJab29tRXh0ZW50LCBsYXllcnNFeHRlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbGlkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuXHJcbiAgem9vbUxheWVyRXh0ZW50cyhsYXllcjogTGF5ZXIpIHtcclxuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChsYXllci5vcHRpb25zLmV4dGVudCk7XHJcbiAgfVxyXG5cclxuICB6b29tTGF5ZXJzRXh0ZW50cyhsYXllcnM6IExheWVyW10pIHtcclxuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCkgYXMgW1xyXG4gICAgICBudW1iZXIsXHJcbiAgICAgIG51bWJlcixcclxuICAgICAgbnVtYmVyLFxyXG4gICAgICBudW1iZXJcclxuICAgIF07XHJcblxyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgY29uc3QgbGF5ZXJFeHRlbnQgPSBsYXllci5vcHRpb25zLmV4dGVudDtcclxuXHJcbiAgICAgIGlmIChsYXllckV4dGVudCkge1xyXG4gICAgICAgIG9sZXh0ZW50LmV4dGVuZChsYXllcnNFeHRlbnQsIGxheWVyRXh0ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuem9vbVRvRXh0ZW50KGxheWVyc0V4dGVudCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VPcGFjaXR5KGV2ZW50OiBNYXRTbGlkZXJDaGFuZ2UpIHtcclxuICAgIHRoaXMub3BhY2l0eSA9IGV2ZW50LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJLZXl3b3JkKCkge1xyXG4gICAgdGhpcy5rZXl3b3JkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG93ZXJMYXllcigpIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVyc1xyXG4gICAgICAuZmlsdGVyKChsKSA9PiAhbC5iYXNlTGF5ZXIpXHJcbiAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgKHByZXYsIGN1cnJlbnQpID0+IHtcclxuICAgICAgICAgIHJldHVybiBwcmV2LnpJbmRleCA8IGN1cnJlbnQuekluZGV4ID8gcHJldiA6IGN1cnJlbnQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHpJbmRleDogdW5kZWZpbmVkLCBpZDogdW5kZWZpbmVkIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGlzTG93ZXJCYXNlbGF5ZXIobGF5ZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuZmluZEluZGV4KChsYXkpID0+IGxheWVyLmlkID09PSBsYXkuaWQpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxheWVycyAmJlxyXG4gICAgICB0aGlzLmxheWVyc1tpbmRleCArIDFdICYmXHJcbiAgICAgIHRoaXMubGF5ZXJzW2luZGV4ICsgMV0uYmFzZUxheWVyID09PSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRVcHBlckxheWVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzXHJcbiAgICAgIC5maWx0ZXIoKGwpID0+ICFsLmJhc2VMYXllcilcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAocHJldiwgY3VycmVudCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHByZXYuekluZGV4ID4gY3VycmVudC56SW5kZXggPyBwcmV2IDogY3VycmVudDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgekluZGV4OiB1bmRlZmluZWQsIGlkOiB1bmRlZmluZWQgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNVcHBlckJhc2VsYXllcihsYXllcikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5ZXIuaWQgPT09IGxheS5pZCk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubGF5ZXJzICYmXHJcbiAgICAgIHRoaXMubGF5ZXJzW2luZGV4IC0gMV0gJiZcclxuICAgICAgdGhpcy5sYXllcnNbaW5kZXggLSAxXS5iYXNlTGF5ZXIgPT09IHRydWVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG1vdmVBY3RpdmVMYXllcihcclxuICAgIGFjdGl2ZUxheWVyOiBMYXllcixcclxuICAgIGFjdGlvbnR5cGU6IExheWVyTGlzdERpc3BsYWNlbWVudCxcclxuICAgIGZyb21VaTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzb3J0ZWRMYXllcnNUb01vdmUgPSBbXTtcclxuICAgIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KHRoaXMubWFwLCBhY3RpdmVMYXllciwgTGlua2VkUHJvcGVydGllcy5aSU5ERVgpO1xyXG4gICAgbGV0IHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXHJcbiAgICAgIHRoaXMubWFwLFxyXG4gICAgICBhY3RpdmVMYXllcixcclxuICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcclxuICAgICk7XHJcbiAgICBpZiAoIXJvb3RQYXJlbnRCeVByb3BlcnR5KSB7XHJcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gYWN0aXZlTGF5ZXI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsYXllcnNUb01vdmUgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xyXG4gICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxyXG4gICAgICB0aGlzLm1hcCxcclxuICAgICAgcm9vdFBhcmVudEJ5UHJvcGVydHksXHJcbiAgICAgIGxheWVyc1RvTW92ZSxcclxuICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sYXllcnMubWFwKChsYXllcikgPT4ge1xyXG4gICAgICBpZiAobGF5ZXJzVG9Nb3ZlLmluZGV4T2YobGF5ZXIpICE9PSAtMSkge1xyXG4gICAgICAgIHNvcnRlZExheWVyc1RvTW92ZS5wdXNoKGxheWVyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGFjdGlvbnR5cGUgPT09IExheWVyTGlzdERpc3BsYWNlbWVudC5SYWlzZSkge1xyXG4gICAgICB0aGlzLnJhaXNlTGF5ZXJzKHNvcnRlZExheWVyc1RvTW92ZSwgZnJvbVVpKTtcclxuICAgIH0gZWxzZSBpZiAoYWN0aW9udHlwZSA9PT0gTGF5ZXJMaXN0RGlzcGxhY2VtZW50Lkxvd2VyKSB7XHJcbiAgICAgIHRoaXMubG93ZXJMYXllcnMoc29ydGVkTGF5ZXJzVG9Nb3ZlLCBmcm9tVWkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBGb3Igc2VsZWN0aW9uIG1vZGUgZGlzYWJsZWQgYXR0cmlidXRlXHJcbiAgICovXHJcbiAgcmFpc2FibGVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBsZXQgcmVzcG9uc2UgPSBmYWxzZTtcclxuICAgIGxldCBiYXNlID0gMDtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XHJcbiAgICAgIGNvbnN0IG1hcEluZGV4ID0gdGhpcy5sYXllcnMuZmluZEluZGV4KChsYXkpID0+IGxheWVyLmlkID09PSBsYXkuaWQpO1xyXG4gICAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmxheWVyc1ttYXBJbmRleF07XHJcbiAgICAgIGlmIChjdXJyZW50TGF5ZXIuYmFzZUxheWVyKSB7XHJcbiAgICAgICAgYmFzZSArPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwcmV2aW91c0xheWVyID0gdGhpcy5sYXllcnNbbWFwSW5kZXggLSAxXTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXZpb3VzTGF5ZXIgJiZcclxuICAgICAgICBwcmV2aW91c0xheWVyLmJhc2VMYXllciAhPT0gdHJ1ZSAmJlxyXG4gICAgICAgICFsYXllcnMuZmluZCgobGF5KSA9PiBwcmV2aW91c0xheWVyLmlkID09PSBsYXkuaWQpICYmXHJcbiAgICAgICAgY3VycmVudExheWVyLmJhc2VMYXllciAhPT0gdHJ1ZVxyXG4gICAgICApIHtcclxuICAgICAgICByZXNwb25zZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmxheWVyc0NoZWNrZWQubGVuZ3RoID09PSAxICYmIHRoaXMubGF5ZXJzQ2hlY2tlZFswXS5iYXNlTGF5ZXIpIHx8XHJcbiAgICAgIGJhc2UgPT09IHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBXaGVuIG11bHRpcGxlIGxheWVycyBpcyBzZWxlY3RlZCBidXQgc29tZSBtYXkgYmUgYWxsb3cgdG8gbW92ZVxyXG4gICAqL1xyXG4gIHJhaXNhYmxlTGF5ZXIoaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubGF5ZXJzW2luZGV4IC0gMV0ub3B0aW9ucy5jaGVjaykge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYWlzYWJsZUxheWVyKGluZGV4IC0gMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJhaXNlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSwgZnJvbVVpOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgbGF5ZXJzVG9SYWlzZSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XHJcbiAgICAgIGlmICh0aGlzLnJhaXNhYmxlTGF5ZXIoaW5kZXgpKSB7XHJcbiAgICAgICAgbGF5ZXJzVG9SYWlzZS5wdXNoKGxheWVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5tYXAucmFpc2VMYXllcnMobGF5ZXJzVG9SYWlzZSk7XHJcbiAgICBpZiAoZnJvbVVpKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrSXRlbXMgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICdtYXQtY2hlY2tib3gtY2hlY2tlZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Gb2N1c2VkID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnaWdvLWxheWVyLWl0ZW0tZm9jdXNlZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCB0YXJnZXRUb1Njcm9sbDtcclxuICAgICAgICBpZiAoY2hlY2tJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRhcmdldFRvU2Nyb2xsID0gY2hlY2tJdGVtc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW1Gb2N1c2VkLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGFyZ2V0VG9TY3JvbGwgPSBpdGVtRm9jdXNlZFswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRhcmdldFRvU2Nyb2xsKSB7XHJcbiAgICAgICAgICBzY3JvbGxJbnRvVmlldyh0YXJnZXRUb1Njcm9sbCwge1xyXG4gICAgICAgICAgICBzY3JvbGxNb2RlOiAnaWYtbmVlZGVkJyxcclxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgICAgICBibG9jazogJ2VuZCcsXHJcbiAgICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qXHJcbiAgICogRm9yIHNlbGVjdGlvbiBtb2RlIGRpc2FibGVkIGF0dHJpYnV0ZVxyXG4gICAqL1xyXG4gIGxvd2VyYWJsZUxheWVycyhsYXllcnM6IExheWVyW10pIHtcclxuICAgIGxldCByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgbGV0IGJhc2UgPSAwO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgY29uc3QgbWFwSW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5ZXIuaWQgPT09IGxheS5pZCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRMYXllciA9IHRoaXMubGF5ZXJzW21hcEluZGV4XTtcclxuICAgICAgaWYgKGN1cnJlbnRMYXllci5iYXNlTGF5ZXIpIHtcclxuICAgICAgICBiYXNlICs9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5leHRMYXllciA9IHRoaXMubGF5ZXJzW21hcEluZGV4ICsgMV07XHJcbiAgICAgIGlmIChcclxuICAgICAgICBuZXh0TGF5ZXIgJiZcclxuICAgICAgICBuZXh0TGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlICYmXHJcbiAgICAgICAgIWxheWVycy5maW5kKChsYXkpID0+IG5leHRMYXllci5pZCA9PT0gbGF5LmlkKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXNwb25zZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmxheWVyc0NoZWNrZWQubGVuZ3RoID09PSAxICYmIHRoaXMubGF5ZXJzQ2hlY2tlZFswXS5iYXNlTGF5ZXIpIHx8XHJcbiAgICAgIGJhc2UgPT09IHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBXaGVuIG11bHRpcGxlIGxheWVycyBpcyBzZWxlY3RlZCBidXQgc29tZSBtYXkgYmUgYWxsb3cgdG8gbW92ZVxyXG4gICAqL1xyXG4gIGxvd2VyYWJsZUxheWVyKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgaW5kZXggPlxyXG4gICAgICB0aGlzLmxheWVycy5maWx0ZXIoKGxheSkgPT4gbGF5LmJhc2VMYXllciAhPT0gdHJ1ZSkubGVuZ3RoIC0gMlxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sYXllcnNbaW5kZXggKyAxXS5vcHRpb25zLmNoZWNrKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvd2VyYWJsZUxheWVyKGluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvd2VyTGF5ZXJzKGxheWVyczogTGF5ZXJbXSwgZnJvbVVpOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgbGF5ZXJzVG9Mb3dlciA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XHJcbiAgICAgIGlmICh0aGlzLmxvd2VyYWJsZUxheWVyKGluZGV4KSkge1xyXG4gICAgICAgIGxheWVyc1RvTG93ZXIucHVzaChsYXllcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubWFwLmxvd2VyTGF5ZXJzKGxheWVyc1RvTG93ZXIpO1xyXG4gICAgaWYgKGZyb21VaSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBjaGVja0l0ZW1zID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICAnbWF0LWNoZWNrYm94LWNoZWNrZWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBpdGVtRm9jdXNlZCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ2lnby1sYXllci1pdGVtLWZvY3VzZWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgdGFyZ2V0VG9TY3JvbGw7XHJcbiAgICAgICAgaWYgKGNoZWNrSXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0YXJnZXRUb1Njcm9sbCA9IGNoZWNrSXRlbXNbY2hlY2tJdGVtcy5sZW5ndGggLSAxXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW1Gb2N1c2VkLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGFyZ2V0VG9TY3JvbGwgPSBpdGVtRm9jdXNlZFswXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRhcmdldFRvU2Nyb2xsKSB7XHJcbiAgICAgICAgICBzY3JvbGxJbnRvVmlldyh0YXJnZXRUb1Njcm9sbCwge1xyXG4gICAgICAgICAgICBzY3JvbGxNb2RlOiAnaWYtbmVlZGVkJyxcclxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgICAgICBibG9jazogJ2VuZCcsXHJcbiAgICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgbmV4dCgpIHtcclxuICAgIHRoaXMuY2hhbmdlJC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVMYXllcnMobGF5ZXJzOiBMYXllcltdKTogTGF5ZXJbXSB7XHJcbiAgICBsZXQgbGF5ZXJzT3V0ID0gdGhpcy5maWx0ZXJMYXllcnMobGF5ZXJzKTtcclxuICAgIGlmICh0aGlzLnNvcnRBbHBoYSkge1xyXG4gICAgICBsYXllcnNPdXQgPSB0aGlzLnNvcnRMYXllcnNCeVRpdGxlKGxheWVyc091dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsYXllcnNPdXQgPSB0aGlzLnNvcnRMYXllcnNCeVppbmRleChsYXllcnNPdXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxheWVyc091dDtcclxuICB9XHJcblxyXG4gIG9uS2V5d29yZENoYW5nZSh0ZXJtKSB7XHJcbiAgICB0aGlzLmtleXdvcmQgPSB0ZXJtO1xyXG4gIH1cclxuXHJcbiAgb25BcHBsaWVkRmlsdGVyQW5kU29ydENoYW5nZShhcHBsaWVkRmlsdGVyOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMpIHtcclxuICAgIHRoaXMua2V5d29yZCA9IGFwcGxpZWRGaWx0ZXIua2V5d29yZDtcclxuICAgIHRoaXMub25seVZpc2libGUgPSBhcHBsaWVkRmlsdGVyLm9ubHlWaXNpYmxlO1xyXG4gICAgdGhpcy5zb3J0QWxwaGEgPSBhcHBsaWVkRmlsdGVyLnNvcnRBbHBoYTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyTGF5ZXJzKGxheWVyczogTGF5ZXJbXSk6IExheWVyW10ge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPT09IExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBsYXllcnM7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMua2V5d29yZCAmJiAhdGhpcy5vbmx5VmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gbGF5ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtlZXBMYXllcklkcyA9IGxheWVycy5tYXAoKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuaWQpO1xyXG5cclxuICAgIGxheWVycy5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHtcclxuICAgICAgY29uc3QgbGF5ZXJPcHRpb25zID0gKGxheWVyLm9wdGlvbnMgYXMgTWV0YWRhdGFMYXllck9wdGlvbnMpIHx8IHt9O1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyB8fCB7fTtcclxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBsYXllck9wdGlvbnMubWV0YWRhdGEgfHwgKHt9IGFzIE1ldGFkYXRhT3B0aW9ucyk7XHJcbiAgICAgIGNvbnN0IGtleXdvcmRzID0gbWV0YWRhdGEua2V5d29yZExpc3QgfHwgW107XHJcbiAgICAgIGNvbnN0IGxheWVyS2V5d29yZHMgPSBrZXl3b3Jkcy5tYXAoKGt3OiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4ga3cubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMua2V5d29yZCAmJiBsYXllci50aXRsZSkge1xyXG4gICAgICAgIGNvbnN0IGxvY2FsS2V5d29yZCA9IHRoaXMua2V5d29yZFxyXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJUaXRsZSA9IGxheWVyLnRpdGxlXHJcbiAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcclxuICAgICAgICBjb25zdCBkYXRhU291cmNlVHlwZSA9IGRhdGFTb3VyY2VPcHRpb25zLnR5cGUgfHwgJyc7XHJcbiAgICAgICAgY29uc3Qga2V5d29yZFJlZ2V4ID0gbmV3IFJlZ0V4cChsb2NhbEtleXdvcmQsICdnaScpO1xyXG4gICAgICAgIGNvbnN0IGtleXdvcmRJbkxpc3QgPVxyXG4gICAgICAgICAgbGF5ZXJLZXl3b3Jkcy5maW5kKChrdzogc3RyaW5nKSA9PiBrZXl3b3JkUmVnZXgudGVzdChrdykpICE9PVxyXG4gICAgICAgICAgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICFrZXl3b3JkUmVnZXgudGVzdChsYXllclRpdGxlKSAmJlxyXG4gICAgICAgICAgISh0aGlzLmtleXdvcmQudG9Mb3dlckNhc2UoKSA9PT0gZGF0YVNvdXJjZVR5cGUudG9Mb3dlckNhc2UoKSkgJiZcclxuICAgICAgICAgICFrZXl3b3JkSW5MaXN0XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGtlZXBMYXllcklkcy5pbmRleE9mKGxheWVyLmlkKTtcclxuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIGtlZXBMYXllcklkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub25seVZpc2libGUgJiYgbGF5ZXIudmlzaWJsZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGtlZXBMYXllcklkcy5pbmRleE9mKGxheWVyLmlkKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAga2VlcExheWVySWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGF5ZXJzLmZpbHRlcihcclxuICAgICAgKGxheWVyOiBMYXllcikgPT4ga2VlcExheWVySWRzLmluZGV4T2YobGF5ZXIuaWQpICE9PSAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc29ydExheWVyc0J5WmluZGV4KGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsYXllcjEsIGxheWVyMikgPT4gbGF5ZXIyLnpJbmRleCAtIGxheWVyMS56SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlUaXRsZShsYXllcnM6IExheWVyW10pIHtcclxuICAgIHJldHVybiBsYXllcnMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHN0clxyXG4gICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlU2hvd1Rvb2xiYXIoKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucy5zaG93VG9vbGJhcikge1xyXG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmxheWVycy5sZW5ndGggPj0gdGhpcy50aHJlc2hvbGRUb0ZpbHRlckFuZFNvcnQgfHxcclxuICAgICAgICAgIHRoaXMua2V5d29yZCB8fFxyXG4gICAgICAgICAgdGhpcy5vbmx5VmlzaWJsZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUxheWVyVG9vbChsYXllcikge1xyXG4gICAgdGhpcy50b2dnbGVPcGFjaXR5ID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5sYXllclRvb2wgJiYgbGF5ZXIgPT09IHRoaXMuYWN0aXZlTGF5ZXIpIHtcclxuICAgICAgdGhpcy5sYXllclRvb2wgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGF5ZXJUb29sID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGxheSBvZiB0aGlzLmxheWVycykge1xyXG4gICAgICBsYXkub3B0aW9ucy5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGxheWVyLm9wdGlvbnMuYWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZlTGF5ZXIgPSBsYXllcjtcclxuICB9XHJcblxyXG4gIHJlbW92ZUxheWVycyhsYXllcnM/OiBMYXllcltdKSB7XHJcbiAgICBpZiAobGF5ZXJzICYmIGxheWVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZCA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xyXG4gICAgICAgIGlmIChsYXllci5vcHRpb25zLnJlbW92YWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIGxheWVyLm1hcC5yZW1vdmVMYXllcihsYXllcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5wdXNoKGxheWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoIWxheWVycyAmJiB0aGlzLmFjdGl2ZUxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUxheWVyLm1hcC5yZW1vdmVMYXllcih0aGlzLmFjdGl2ZUxheWVyKTtcclxuICAgICAgdGhpcy5sYXllclRvb2wgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZVZpc2liaWxpdHkobGF5ZXJzPzogTGF5ZXJbXSkge1xyXG4gICAgaWYgKGxheWVycyAmJiBsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xyXG4gICAgICAgIGxheWVyLnZpc2libGUgPSB0aGlzLmhpZGVTZWxlY3RlZExheWVycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5sYXllckl0ZW1DaGFuZ2VEZXRlY3Rpb24kLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBpc0xheWVyUmVtb3ZhYmxlKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzQWxsTGF5ZXJzUmVtb3ZhYmxlKGxheWVyczogTGF5ZXJbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGxheWVycy5ldmVyeSgobCkgPT4gdGhpcy5pc0xheWVyUmVtb3ZhYmxlKGwpKTtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0dXNTZWxlY3RlZExheWVyc0NoZWNrKCk6IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtIHtcclxuICAgIGxldCBzdGF0dXNTZWxlY3RlZExheWVyczogTGF5ZXJMaXN0U2VsZWN0VmlzaWJsZUVudW0gPVxyXG4gICAgICBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5OVUxMO1xyXG4gICAgbGV0IGZpbmRUcnVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZmluZEZhbHNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnMgPSBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5OVUxMO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnMgPSBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5NSVhFRDtcclxuICAgICAgdGhpcy5oaWRlU2VsZWN0ZWRMYXllcnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgbGF5ZXIyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xyXG4gICAgICAgIGlmIChsYXllcjIudmlzaWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgZmluZFRydWUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGF5ZXIyLnZpc2libGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBmaW5kRmFsc2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZpbmRUcnVlID09PSB0cnVlICYmIGZpbmRGYWxzZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBzdGF0dXNTZWxlY3RlZExheWVycyA9IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtLkFMTF9WSVNJQkxFO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaW5kVHJ1ZSA9PT0gZmFsc2UgJiYgZmluZEZhbHNlID09PSB0cnVlKSB7XHJcbiAgICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnMgPSBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5BTExfSElEREVOO1xyXG4gICAgICAgIHRoaXMuaGlkZVNlbGVjdGVkTGF5ZXJzID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGF0dXNTZWxlY3RlZExheWVycztcclxuICB9XHJcblxyXG4gIGxheWVyc0NoZWNrKGV2ZW50OiB7IGxheWVyOiBMYXllcjsgY2hlY2s6IGJvb2xlYW4gfSkge1xyXG4gICAgZXZlbnQubGF5ZXIub3B0aW9ucy5jaGVjayA9IGV2ZW50LmNoZWNrO1xyXG4gICAgaWYgKGV2ZW50LmNoZWNrID09PSB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50TWFwSW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGxheWVyKSA9PiBldmVudC5sYXllci5pZCA9PT0gbGF5ZXIuaWRcclxuICAgICAgKTtcclxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVyc0NoZWNrZWQpIHtcclxuICAgICAgICBjb25zdCBtYXBJbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleCgobGF5KSA9PiBsYXllci5pZCA9PT0gbGF5LmlkKTtcclxuICAgICAgICBpZiAoZXZlbnRNYXBJbmRleCA8IG1hcEluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQuc3BsaWNlKFxyXG4gICAgICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQuZmluZEluZGV4KChsYXkpID0+IGxheWVyLmlkID09PSBsYXkuaWQpLFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICBldmVudC5sYXllclxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5leGNsdWRlQmFzZUxheWVycykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT1cclxuICAgICAgICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobGF5KSA9PiBsYXkuYmFzZUxheWVyICE9PSB0cnVlICYmIGxheS5zaG93SW5MYXllckxpc3RcclxuICAgICAgICAgICAgICApLmxlbmd0aFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZXhjbHVkZUJhc2VMYXllcnMpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmlsdGVyKChsYXkpID0+IGxheS5zaG93SW5MYXllckxpc3QpLmxlbmd0aFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXllcnNDaGVja2VkLnB1c2goZXZlbnQubGF5ZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVyc0NoZWNrZWQuZmluZEluZGV4KFxyXG4gICAgICAgIChsYXllcikgPT4gZXZlbnQubGF5ZXIuaWQgPT09IGxheWVyLmlkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQubGVuZ3RoID09PVxyXG4gICAgICAgIHRoaXMubGF5ZXJzLmZpbHRlcihcclxuICAgICAgICAgIChsYXkpID0+IGxheS5iYXNlTGF5ZXIgIT09IHRydWUgJiYgbGF5LnNob3dJbkxheWVyTGlzdFxyXG4gICAgICAgICkubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICghdGhpcy5leGNsdWRlQmFzZUxheWVycykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT1cclxuICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoKGxheSkgPT4gbGF5LnNob3dJbkxheWVyTGlzdCkubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uTW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuYWN0aXZlTGF5ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5sYXllclRvb2wgPSBmYWxzZTtcclxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xyXG4gICAgICAgIGlmIChsYXllci5vcHRpb25zLmNoZWNrKSB7XHJcbiAgICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQucHVzaChsYXllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsYXllcnNDaGVja2VkT3BhY2l0eSgpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgb3BhY2l0eSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xyXG4gICAgICAgIG9wYWNpdHkucHVzaChsYXllci5vcGFjaXR5KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3BhY2l0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbCgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RBbGxDaGVjaykge1xyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5leGNsdWRlQmFzZUxheWVycyAmJlxyXG4gICAgICAgICAgbGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlICYmXHJcbiAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3RcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGxheWVyLm9wdGlvbnMuY2hlY2sgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sYXllcnNDaGVja2VkLnB1c2gobGF5ZXIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZXhjbHVkZUJhc2VMYXllcnMgJiYgbGF5ZXIuc2hvd0luTGF5ZXJMaXN0KSB7XHJcbiAgICAgICAgICBsYXllci5vcHRpb25zLmNoZWNrID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5wdXNoKGxheWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayQubmV4dCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcclxuICAgICAgICBsYXllci5vcHRpb25zLmNoZWNrID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXllcnNDaGVja2VkID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2skLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pIHtcclxuICAgIGNvbnN0IGRvY1ZpZXdUb3AgPSBlbGVtU291cmNlLnNjcm9sbFRvcDtcclxuICAgIGNvbnN0IGRvY1ZpZXdCb3R0b20gPSBkb2NWaWV3VG9wICsgZWxlbVNvdXJjZS5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgY29uc3QgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wO1xyXG4gICAgY29uc3QgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLmNsaWVudEhlaWdodDtcclxuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUHJvYmxlbUxheWVySW5MaXN0KGxheWVyc0xpc3Q6IExheWVyW10pOiBMYXllcltdIHtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzTGlzdCkge1xyXG4gICAgICBpZiAobGF5ZXIub2xMb2FkaW5nUHJvYmxlbSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGxheWVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxheWVyc0xpc3Q7XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tbGF5ZXItbGlzdC10b29sXHJcbiAgKm5nSWY9XCJzaG93VG9vbGJhciQgfCBhc3luY1wiXHJcbiAgZmxvYXRMYWJlbD1cImF1dG9cIlxyXG4gIFtsYXllcnNBcmVBbGxWaXNpYmxlXT1cImxheWVyc0FyZUFsbFZpc2libGVcIlxyXG4gIFt0ZXJtXT1cImxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMua2V5d29yZFwiXHJcbiAgW29ubHlWaXNpYmxlXT1cImxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMub25seVZpc2libGVcIlxyXG4gIFtzb3J0QWxwaGFdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucy5zb3J0QWxwaGFcIlxyXG4gIChhcHBsaWVkRmlsdGVyQW5kU29ydCk9XCJvbkFwcGxpZWRGaWx0ZXJBbmRTb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gIChzZWxlY3Rpb24pPVwidG9nZ2xlU2VsZWN0aW9uTW9kZSgkZXZlbnQpXCJcclxuPlxyXG48L2lnby1sYXllci1saXN0LXRvb2w+XHJcblxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0aW9uXCIgY2xhc3M9XCJzZWxlY3QtYWxsXCI+XHJcbiAgPG1hdC1jaGVja2JveFxyXG4gICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcclxuICAgIFtjb2xvcl09XCIhc2VsZWN0QWxsQ2hlY2sgJiYgbGF5ZXJzQ2hlY2tlZC5sZW5ndGggPiAwID8gJ2FjY2VudCcgOiAncHJpbWFyeSdcIlxyXG4gICAgKGNoYW5nZSk9XCJzZWxlY3RBbGwoKVwiXHJcbiAgICBbY2hlY2tlZF09XCJzZWxlY3RBbGxDaGVja1wiXHJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCIhc2VsZWN0QWxsQ2hlY2sgJiYgbGF5ZXJzQ2hlY2tlZC5sZW5ndGggPiAwXCJcclxuICA+XHJcbiAgICB7e1xyXG4gICAgICBzZWxlY3RBbGxDaGVja1xyXG4gICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmRlc2VsZWN0QWxsJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICA6ICgnaWdvLmdlby5sYXllci5zZWxlY3RBbGwnIHwgdHJhbnNsYXRlKVxyXG4gICAgfX1cclxuICA8L21hdC1jaGVja2JveD5cclxuPC9kaXY+XHJcbjxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cclxuPGlnby1saXN0ICNpZ29MaXN0IFtuYXZpZ2F0aW9uXT1cImZhbHNlXCIgW3NlbGVjdGlvbl09XCJmYWxzZVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtbGF5ZXIgbGV0LWk9XCJpbmRleFwiIFtuZ0Zvck9mXT1cImxheWVycyQgfCBhc3luY1wiPlxyXG4gICAgPGlnby1sYXllci1pdGVtXHJcbiAgICAgICpuZ0lmPVwiIShleGNsdWRlQmFzZUxheWVycyAmJiBsYXllci5iYXNlTGF5ZXIpXCJcclxuICAgICAgaWdvTGlzdEl0ZW1cclxuICAgICAgW2xheWVyXT1cImxheWVyXCJcclxuICAgICAgW2FjdGl2ZUxheWVyXT1cImFjdGl2ZUxheWVyXCJcclxuICAgICAgW29yZGVyYWJsZV09XCJvcmRlcmFibGUgJiYgIWxheWVyLmJhc2VMYXllclwiXHJcbiAgICAgIFtsb3dlckRpc2FibGVkXT1cImdldExvd2VyTGF5ZXIoKS5pZCA9PT0gbGF5ZXIuaWRcIlxyXG4gICAgICBbcmFpc2VEaXNhYmxlZF09XCJnZXRVcHBlckxheWVyKCkuaWQgPT09IGxheWVyLmlkXCJcclxuICAgICAgW3F1ZXJ5QmFkZ2VdPVwicXVlcnlCYWRnZVwiXHJcbiAgICAgIFtleHBhbmRMZWdlbmRJZlZpc2libGVdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcclxuICAgICAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIlxyXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvblwiXHJcbiAgICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsQ2hlY2tcIlxyXG4gICAgICBbbGF5ZXJDaGVja109XCJsYXllci5vcHRpb25zLmNoZWNrXCJcclxuICAgICAgW2NoYW5nZURldGVjdGlvbl09XCJsYXllckl0ZW1DaGFuZ2VEZXRlY3Rpb24kXCJcclxuICAgICAgKGFjdGlvbik9XCJ0b2dnbGVMYXllclRvb2woJGV2ZW50KVwiXHJcbiAgICAgIChjaGVja2JveCk9XCJsYXllcnNDaGVjaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvaWdvLWxheWVyLWl0ZW0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9pZ28tbGlzdD5cclxuXHJcbjxpZ28tcGFuZWxcclxuICAqbmdJZj1cIiFzZWxlY3Rpb24gJiYgbGF5ZXJUb29sICYmIGFjdGl2ZUxheWVyXCJcclxuICBjbGFzcz1cImlnby1sYXllci1hY3Rpb25zLWNvbnRhaW5lclwiXHJcbiAgW3RpdGxlXT1cImFjdGl2ZUxheWVyLnRpdGxlXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpZ28tbGF5ZXItYnV0dG9uLWdyb3VwXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiaXNMYXllclJlbW92YWJsZShhY3RpdmVMYXllcilcIlxyXG4gICAgICBjbGFzcz1cImRlbGV0ZS1idXR0b25cIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLnJlbW92ZUxheWVyJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIChjbGljayk9XCJyZW1vdmVMYXllcnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCI+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJkb3duLWJ1dHRvblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiXHJcbiAgICAgICAgc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmRcclxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlckxvd2VyTGF5ZXInIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIubG93ZXJMYXllcicgfCB0cmFuc2xhdGUpXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsb3dlckRpc2FibGVkXCJcclxuICAgICAgKGNsaWNrKT1cIm1vdmVBY3RpdmVMYXllcihhY3RpdmVMYXllciwgbGF5ZXJMaXN0RGlzcGxhY2VtZW50Lkxvd2VyLCB0cnVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgICAgIFttYXRCYWRnZV09XCJzb3J0QWxwaGEgfHwgb25seVZpc2libGUgfHwga2V5d29yZCA/ICchJyA6ICcnXCJcclxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwibG93ZXJEaXNhYmxlZFwiXHJcbiAgICAgICAgc3ZnSWNvbj1cImFycm93LWRvd25cIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJ1cC1idXR0b25cIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIlxyXG4gICAgICAgIHNvcnRBbHBoYSB8fCBvbmx5VmlzaWJsZSB8fCBrZXl3b3JkXHJcbiAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5maWx0ZXJSYWlzZUxheWVyJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLnJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxyXG4gICAgICBcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwicmFpc2VEaXNhYmxlZFwiXHJcbiAgICAgIChjbGljayk9XCJtb3ZlQWN0aXZlTGF5ZXIoYWN0aXZlTGF5ZXIsIGxheWVyTGlzdERpc3BsYWNlbWVudC5SYWlzZSwgdHJ1ZSlcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb25cclxuICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICBbbWF0QmFkZ2VdPVwic29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmQgPyAnIScgOiAnJ1wiXHJcbiAgICAgICAgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxyXG4gICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXHJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cInJhaXNlRGlzYWJsZWRcIlxyXG4gICAgICAgIHN2Z0ljb249XCJhcnJvdy11cFwiXHJcbiAgICAgID48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSA8bGFiZWw+e3sgJ2lnby5nZW8ubGF5ZXIub3BhY2l0eScgfCB0cmFuc2xhdGUgfX0gPC9sYWJlbD4gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwib3BhY2l0eS1idXR0b25cIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcGFjaXR5TWVudVwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXHJcbiAgICAgICAgW21hdEJhZGdlXT1cImJhZGdlT3BhY2l0eVwiXHJcbiAgICAgICAgbWF0QmFkZ2VDb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXHJcbiAgICAgICAgc3ZnSWNvbj1cIm9wYWNpdHlcIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxtYXQtbWVudSAjb3BhY2l0eU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwYW5lbC1vcGFjaXR5LW1lbnVcIj5cclxuICAgICAgPG1hdC1zbGlkZXJcclxuICAgICAgICBpZD1cIm9wYWNpdHktc2xpZGVyXCJcclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIGRpc2NyZXRlXHJcbiAgICAgICAgc3RlcD1cIjVcIlxyXG4gICAgICAgIFttaW5dPVwiMFwiXHJcbiAgICAgICAgW21heF09XCIxMDBcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICAgICNuZ1NsaWRlclxyXG4gICAgICAgID48aW5wdXRcclxuICAgICAgICAgIG1hdFNsaWRlclRodW1iXHJcbiAgICAgICAgICBbdmFsdWVdPVwib3BhY2l0eVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiXHJcbiAgICAgICAgICAgIGNoYW5nZU9wYWNpdHkoe1xyXG4gICAgICAgICAgICAgIHNvdXJjZTogbmdTbGlkZXJUaHVtYixcclxuICAgICAgICAgICAgICBwYXJlbnQ6IG5nU2xpZGVyLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBuZ1NsaWRlclRodW1iLnZhbHVlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgI25nU2xpZGVyVGh1bWI9XCJtYXRTbGlkZXJUaHVtYlwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtc2xpZGVyPlxyXG4gICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiYWN0aXZlTGF5ZXJFeHRlbnRJc1ZhbGlkKGFjdGl2ZUxheWVyKVwiXHJcbiAgICAgIGNsYXNzPVwiem9vbUxheWVyLWJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIuem9vbUxheWVyJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIChjbGljayk9XCJ6b29tTGF5ZXJFeHRlbnRzKGFjdGl2ZUxheWVyKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxyXG4gICAgICAgIHN2Z0ljb249XCJtYWduaWZ5LXNjYW5cIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgaWdvTGF5ZXJJdGVtVG9vbGJhclxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZUxheWVyVG9vbGJhclwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxheWVyOiBhY3RpdmVMYXllciB9XCJcclxuICAgID5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ29MYXllckl0ZW1Ub29sYmFyXVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9pZ28tcGFuZWw+XHJcblxyXG48aWdvLXBhbmVsXHJcbiAgKm5nSWY9XCJzZWxlY3Rpb24gJiYgbGF5ZXJzLmxlbmd0aCA+IDBcIlxyXG4gIGNsYXNzPVwiaWdvLWxheWVyLWFjdGlvbnMtY29udGFpbmVyXCJcclxuICBbdGl0bGVdPVwiJ2lnby5nZW8ubGF5ZXIudG9vbHMnIHwgdHJhbnNsYXRlXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zLWJ1dHRvbnMtbXVsdGlcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwibGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDBcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJcclxuICAgICAgICBpc0FsbExheWVyc1JlbW92YWJsZShsYXllcnNDaGVja2VkKVxyXG4gICAgICAgICAgPyAoJ2lnby5nZW8ubGF5ZXIucmVtb3ZlU2VsZWN0ZWRMYXllcnMnIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIucmVtb3ZlU2VsZWN0ZWRMYXllcnNSZXN0cmljdGlvbicgfCB0cmFuc2xhdGUpXHJcbiAgICAgIFwiXHJcbiAgICAgIChjbGljayk9XCJyZW1vdmVMYXllcnMobGF5ZXJzQ2hlY2tlZClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb25cclxuICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICBbbWF0QmFkZ2VdPVwiJyEnXCJcclxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiaXNBbGxMYXllcnNSZW1vdmFibGUobGF5ZXJzQ2hlY2tlZClcIlxyXG4gICAgICAgIHN2Z0ljb249XCJkZWxldGVcIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJleWUtYnV0dG9uXCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwibGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDBcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJcclxuICAgICAgICBzdGF0dXNTZWxlY3RlZExheWVyc0NoZWNrID09PSAnQUxMX0hJRERFTidcclxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnNob3dTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5oaWRlU2VsZWN0ZWRMYXllcnMnIHwgdHJhbnNsYXRlKVxyXG4gICAgICBcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eShsYXllcnNDaGVja2VkKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgIFtzdmdJY29uXT1cIlxyXG4gICAgICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnNDaGVjayA9PT0gJ0FMTF9ISURERU4nID8gJ2V5ZS1vZmYnIDogJ2V5ZSdcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJkb3duLWJ1dHRvblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiXHJcbiAgICAgICAgc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmRcclxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlckxvd2VyTGF5ZXInIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIubG93ZXJMYXllcicgfCB0cmFuc2xhdGUpXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsb3dlckRpc2FibGVkU2VsZWN0aW9uXCJcclxuICAgICAgKGNsaWNrKT1cImxvd2VyTGF5ZXJzKGxheWVyc0NoZWNrZWQpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXHJcbiAgICAgICAgW21hdEJhZGdlXT1cInNvcnRBbHBoYSB8fCBvbmx5VmlzaWJsZSB8fCBrZXl3b3JkID8gJyEnIDogJydcIlxyXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcclxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxyXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJsb3dlckRpc2FibGVkU2VsZWN0aW9uXCJcclxuICAgICAgICBzdmdJY29uPVwiYXJyb3ctZG93blwiXHJcbiAgICAgID48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cInVwLWJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiXHJcbiAgICAgICAgc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmRcclxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlclJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIucmFpc2VMYXllcicgfCB0cmFuc2xhdGUpXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJyYWlzZURpc2FibGVkU2VsZWN0aW9uXCJcclxuICAgICAgKGNsaWNrKT1cInJhaXNlTGF5ZXJzKGxheWVyc0NoZWNrZWQpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXHJcbiAgICAgICAgW21hdEJhZGdlXT1cInNvcnRBbHBoYSB8fCBvbmx5VmlzaWJsZSB8fCBrZXl3b3JkID8gJyEnIDogJydcIlxyXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcclxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxyXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJyYWlzZURpc2FibGVkU2VsZWN0aW9uXCJcclxuICAgICAgICBzdmdJY29uPVwiYXJyb3ctdXBcIlxyXG4gICAgICA+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJvcGFjaXR5LWJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImxheWVyc0NoZWNrZWQubGVuZ3RoID09PSAwXCJcclxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wYWNpdHlNZW51XCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIub3BhY2l0eScgfCB0cmFuc2xhdGVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9wYWNpdHlcIj48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPG1hdC1tZW51ICNvcGFjaXR5TWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm1hdC1tZW51LW9wYWNpdHktc2xpZGVyXCI+XHJcbiAgICAgIDxkaXYgaWQ9XCJvcGFjaXR5LW1lbnVcIj5cclxuICAgICAgICA8IS0tIFRPRE86IFRoZSAndGlja0ludGVydmFsJyBwcm9wZXJ0eSBubyBsb25nZXIgZXhpc3RzIC0tPlxyXG4gICAgICAgIDxtYXQtc2xpZGVyXHJcbiAgICAgICAgICAqbmdJZj1cImxheWVyc0NoZWNrZWQubGVuZ3RoXCJcclxuICAgICAgICAgIGlkPVwib3BhY2l0eS1zbGlkZXJcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIHRodW1iTGFiZWxcclxuICAgICAgICAgIHNob3dUaWNrTWFya3NcclxuICAgICAgICAgIHN0ZXA9XCI1XCJcclxuICAgICAgICAgIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICBbbWF4XT1cIjEwMFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrT3BhY2l0eVwiXHJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5vcGFjaXR5JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID48aW5wdXQgbWF0U2xpZGVyVGh1bWIgLz5cclxuICAgICAgICA8L21hdC1zbGlkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgbGF5ZXJzQ2hlY2tlZC5sZW5ndGggIT09IDAgJiYgYWN0aXZlTGF5ZXJzRXh0ZW50QXJlVmFsaWQobGF5ZXJzQ2hlY2tlZClcclxuICAgICAgXCJcclxuICAgICAgY2xhc3M9XCJ6b29tTGF5ZXItYnV0dG9uXCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci56b29tTGF5ZXJzJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIChjbGljayk9XCJ6b29tTGF5ZXJzRXh0ZW50cyhsYXllcnNDaGVja2VkKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwibWFnbmlmeS1zY2FuXCI+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2lnby1wYW5lbD5cclxuIl19
|