@igo2/geo 16.3.0 → 17.0.0-next.2
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/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +30 -14
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +35 -17
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +18 -11
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +49 -20
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +22 -10
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +32 -16
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +8 -71
- package/esm2022/lib/catalog/catalog-library/index.mjs +9 -0
- package/esm2022/lib/catalog/catalog.module.mjs +9 -37
- package/esm2022/lib/catalog/index.mjs +7 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +16 -9
- package/esm2022/lib/catalog/shared/index.mjs +1 -1
- package/esm2022/lib/datasource/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasource.service.mjs +11 -13
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
- package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +28 -13
- package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +44 -19
- package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +36 -16
- package/esm2022/lib/directions/directions-results/index.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +2 -2
- package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +7 -7
- package/esm2022/lib/directions/directions.component.mjs +20 -12
- package/esm2022/lib/directions/directions.module.mjs +17 -70
- package/esm2022/lib/directions/index.mjs +1 -1
- package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +13 -9
- package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
- package/esm2022/lib/directions/shared/index.mjs +1 -1
- package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
- package/esm2022/lib/download/download-button/index.mjs +1 -1
- package/esm2022/lib/download/download.module.mjs +10 -27
- package/esm2022/lib/download/index.mjs +1 -1
- package/esm2022/lib/download/shared/download.interface.mjs +1 -1
- package/esm2022/lib/download/shared/download.service.mjs +7 -7
- package/esm2022/lib/download/shared/index.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +41 -18
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +19 -9
- package/esm2022/lib/draw/draw/draw.component.mjs +54 -24
- package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
- package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
- package/esm2022/lib/draw/index.mjs +1 -1
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +7 -7
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/draw/shared/index.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +28 -13
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +8 -27
- package/esm2022/lib/feature/feature-details/index.mjs +9 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +8 -8
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
- package/esm2022/lib/feature/feature.module.mjs +9 -10
- package/esm2022/lib/feature/index.mjs +8 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/search.mjs +4 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2022/lib/filter/filter.module.mjs +47 -177
- package/esm2022/lib/filter/index.mjs +36 -1
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +54 -23
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +13 -10
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +45 -18
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +66 -28
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +34 -17
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +34 -15
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +47 -20
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
- package/esm2022/lib/geo.module.mjs +5 -43
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +33 -16
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +8 -43
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +9 -0
- package/esm2022/lib/geometry/geometry.module.mjs +9 -10
- package/esm2022/lib/geometry/index.mjs +2 -3
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2022/lib/geometry/shared/index.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
- package/esm2022/lib/import-export/export-button/index.mjs +1 -1
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +56 -22
- package/esm2022/lib/import-export/import-export/index.mjs +1 -1
- package/esm2022/lib/import-export/import-export.module.mjs +10 -81
- package/esm2022/lib/import-export/index.mjs +9 -1
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +13 -10
- package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +7 -7
- package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +7 -7
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/import-export/shared/index.mjs +1 -1
- package/esm2022/lib/layer/index.mjs +19 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +35 -16
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +43 -17
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +13 -11
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +10 -9
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +48 -18
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
- package/esm2022/lib/layer/layer.module.mjs +16 -93
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +8 -8
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
- package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +27 -14
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +24 -13
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +15 -11
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
- package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2022/lib/map/index.mjs +32 -1
- package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +8 -8
- package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
- package/esm2022/lib/map/map.module.mjs +36 -66
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +23 -13
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
- package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +10 -9
- package/esm2022/lib/map/shared/index.mjs +1 -1
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +1 -1
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +10 -9
- package/esm2022/lib/map/shared/map.interface.mjs +1 -1
- package/esm2022/lib/map/shared/map.mjs +1 -1
- package/esm2022/lib/map/shared/map.service.mjs +5 -5
- package/esm2022/lib/map/shared/map.utils.mjs +1 -1
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +11 -8
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +7 -7
- package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
- package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +23 -13
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
- package/esm2022/lib/measure/index.mjs +2 -3
- package/esm2022/lib/measure/measure.module.mjs +8 -5
- package/esm2022/lib/measure/measurer/index.mjs +6 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +40 -20
- package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
- package/esm2022/lib/measure/shared/index.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/index.mjs +6 -1
- package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
- package/esm2022/lib/metadata/metadata.module.mjs +10 -31
- package/esm2022/lib/metadata/shared/index.mjs +1 -1
- package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +7 -7
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
- package/esm2022/lib/offline/geoDB/index.mjs +1 -1
- package/esm2022/lib/offline/index.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
- package/esm2022/lib/offline/shared/geo-network.service.mjs +7 -7
- package/esm2022/lib/offline/shared/index.mjs +1 -1
- package/esm2022/lib/overlay/index.mjs +1 -1
- package/esm2022/lib/overlay/overlay.module.mjs +10 -8
- package/esm2022/lib/overlay/shared/index.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
- package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
- package/esm2022/lib/print/index.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +7 -7
- package/esm2022/lib/print/print-form/index.mjs +1 -1
- package/esm2022/lib/print/print-form/print-form.component.mjs +36 -16
- package/esm2022/lib/print/print.module.mjs +10 -54
- package/esm2022/lib/print/shared/index.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +18 -12
- package/esm2022/lib/query/index.mjs +1 -1
- package/esm2022/lib/query/query.module.mjs +7 -8
- package/esm2022/lib/query/shared/index.mjs +1 -1
- package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
- package/esm2022/lib/query/shared/query.directive.mjs +8 -7
- package/esm2022/lib/query/shared/query.enums.mjs +1 -1
- package/esm2022/lib/query/shared/query.service.mjs +8 -10
- package/esm2022/lib/search/index.mjs +14 -5
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +38 -18
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
- package/esm2022/lib/search/search-results/index.mjs +10 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +44 -19
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +30 -16
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +22 -12
- package/esm2022/lib/search/search-results/search-results.component.mjs +26 -14
- package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +40 -15
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
- package/esm2022/lib/search/search.module.mjs +10 -13
- package/esm2022/lib/search/shared/index.mjs +1 -1
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +10 -9
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.service.mjs +7 -7
- package/esm2022/lib/search/shared/search.utils.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.mjs +12 -9
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +4 -2
- package/esm2022/lib/search/shared/sources/coordinates.mjs +15 -13
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +4 -2
- package/esm2022/lib/search/shared/sources/icherche.mjs +20 -18
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +4 -2
- package/esm2022/lib/search/shared/sources/ilayer.mjs +14 -12
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +4 -2
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +8 -8
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +3 -2
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +15 -13
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +4 -2
- package/esm2022/lib/search/shared/sources/workspace.mjs +11 -10
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +4 -2
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/index.mjs +1 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
- package/esm2022/lib/style/shared/feature/index.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/index.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/index.mjs +1 -1
- package/esm2022/lib/style/style-list/index.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
- package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
- package/esm2022/lib/style/style-modal/drawing/index.mjs +1 -1
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
- package/esm2022/lib/style/style-modal/index.mjs +1 -1
- package/esm2022/lib/style/style-modal/layer/index.mjs +1 -1
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +1 -1
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
- package/esm2022/lib/style/style-modal/shared/index.mjs +1 -1
- package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
- package/esm2022/lib/style/style-service/index.mjs +1 -1
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +12 -57
- package/esm2022/lib/toast/index.mjs +1 -1
- package/esm2022/lib/toast/toast.component.mjs +19 -11
- package/esm2022/lib/toast/toast.module.mjs +10 -30
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/index.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +7 -7
- package/esm2022/lib/wkt/index.mjs +1 -1
- package/esm2022/lib/wkt/shared/index.mjs +1 -1
- package/esm2022/lib/wkt/shared/wkt.service.mjs +5 -5
- package/esm2022/lib/wkt/wkt.module.mjs +8 -5
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +11 -10
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
- package/esm2022/lib/workspace/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +15 -11
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +12 -10
- package/esm2022/lib/workspace/shared/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +12 -10
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +10 -8
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
- package/esm2022/lib/workspace/widgets/index.mjs +1 -1
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
- package/esm2022/lib/workspace/widgets/widgets.mjs +1 -1
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace.module.mjs +10 -35
- package/esm2022/public_api.mjs +11 -12
- package/fesm2022/igo2-geo.mjs +34474 -34608
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +3 -2
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +3 -2
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -18
- package/lib/catalog/catalog-library/index.d.ts +5 -0
- package/lib/catalog/catalog.module.d.ts +6 -9
- package/lib/catalog/index.d.ts +2 -0
- package/lib/catalog/shared/catalog.service.d.ts +3 -1
- package/lib/datasource/shared/datasource.service.d.ts +4 -5
- package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +4 -2
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +2 -2
- package/lib/directions/directions-results/directions-results.component.d.ts +2 -2
- package/lib/directions/directions-sources/directions-source.provider.d.ts +1 -1
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +1 -1
- package/lib/directions/directions.component.d.ts +2 -2
- package/lib/directions/directions.module.d.ts +9 -20
- package/lib/directions/shared/directions.service.d.ts +3 -1
- package/lib/directions/shared/directions.utils.d.ts +1 -1
- package/lib/download/download-button/download-button.component.d.ts +1 -1
- package/lib/download/download.module.d.ts +4 -6
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
- package/lib/draw/draw/draw-popup.component.d.ts +5 -5
- package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/draw/draw/draw.module.d.ts +2 -25
- package/lib/draw/drawingTool.module.d.ts +3 -0
- package/lib/draw/shared/draw-icon.service.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +7 -4
- package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.module.d.ts +2 -6
- package/lib/feature/feature-details/index.d.ts +5 -0
- package/lib/feature/feature-form/feature-form.component.d.ts +2 -2
- package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
- package/lib/feature/feature.module.d.ts +6 -4
- package/lib/feature/index.d.ts +3 -1
- package/lib/filter/filter.module.d.ts +4 -28
- package/lib/filter/index.d.ts +16 -0
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +4 -4
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +2 -2
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
- package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +6 -5
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
- package/lib/geo.module.d.ts +14 -24
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +2 -10
- package/lib/geometry/geometry-form-field/index.d.ts +5 -0
- package/lib/geometry/geometry.module.d.ts +5 -3
- package/lib/geometry/index.d.ts +1 -2
- package/lib/import-export/export-button/export-button.component.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +5 -2
- package/lib/import-export/import-export.module.d.ts +4 -15
- package/lib/import-export/index.d.ts +4 -0
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +3 -2
- package/lib/import-export/shared/export.service.d.ts +1 -1
- package/lib/import-export/shared/export.utils.d.ts +1 -1
- package/lib/import-export/shared/import.service.d.ts +1 -1
- package/lib/import-export/shared/import.utils.d.ts +1 -1
- package/lib/layer/index.d.ts +8 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
- package/lib/layer/layer.module.d.ts +4 -18
- package/lib/layer/shared/layer.service.d.ts +1 -1
- package/lib/layer/shared/layers/image-layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
- package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
- package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
- package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
- package/lib/layer/utils/image-watcher.d.ts +1 -1
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +2 -2
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +2 -2
- package/lib/map/index.d.ts +14 -0
- package/lib/map/info-section/info-section.component.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +2 -2
- package/lib/map/map-center/map-center.component.d.ts +1 -1
- package/lib/map/map.module.d.ts +4 -7
- package/lib/map/menu-button/menu-button.component.d.ts +2 -2
- package/lib/map/offline-button/offline-button.component.d.ts +2 -2
- package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +2 -2
- package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
- package/lib/map/shared/map.d.ts +2 -1
- package/lib/map/shared/mapOffline.directive.d.ts +3 -2
- package/lib/map/shared/projection.service.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +2 -2
- package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
- package/lib/measure/index.d.ts +1 -2
- package/lib/measure/measure.module.d.ts +3 -0
- package/lib/measure/measurer/index.d.ts +5 -0
- package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
- package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
- package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
- package/lib/measure/measurer/measurer.component.d.ts +4 -4
- package/lib/measure/measurer/measurer.module.d.ts +3 -18
- package/lib/measure/shared/measure.utils.d.ts +1 -1
- package/lib/metadata/index.d.ts +2 -0
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
- package/lib/metadata/metadata.module.d.ts +4 -7
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
- package/lib/offline/shared/geo-network.service.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +4 -1
- package/lib/overlay/shared/overlay.directive.d.ts +1 -1
- package/lib/print/print/print.component.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +2 -2
- package/lib/print/print.module.d.ts +4 -12
- package/lib/print/shared/print.service.d.ts +4 -1
- package/lib/query/query.module.d.ts +4 -4
- package/lib/query/shared/query-search-source.providers.d.ts +1 -1
- package/lib/query/shared/query.directive.d.ts +1 -1
- package/lib/query/shared/query.service.d.ts +2 -3
- package/lib/search/index.d.ts +6 -4
- package/lib/search/search-bar/search-bar.component.d.ts +2 -2
- package/lib/search/search-bar/search-bar.module.d.ts +2 -16
- package/lib/search/search-results/index.d.ts +6 -0
- package/lib/search/search-results/save-feature-dialog.component.d.ts +2 -2
- package/lib/search/search-results/search-results-add-button.component.d.ts +2 -2
- package/lib/search/search-results/search-results-item.component.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +2 -2
- package/lib/search/search-results/search-results.module.d.ts +3 -21
- package/lib/search/search-selector/search-selector.component.d.ts +1 -1
- package/lib/search/search-selector/search-selector.module.d.ts +2 -11
- package/lib/search/search-settings/search-settings.component.d.ts +3 -2
- package/lib/search/search-settings/search-settings.module.d.ts +2 -12
- package/lib/search/search.module.d.ts +6 -7
- package/lib/search/shared/search-pointer-summary.directive.d.ts +2 -2
- package/lib/search/shared/search.service.d.ts +1 -1
- package/lib/search/shared/sources/cadastre.d.ts +2 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +4 -2
- package/lib/search/shared/sources/coordinates.d.ts +2 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +4 -2
- package/lib/search/shared/sources/icherche.d.ts +2 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +5 -3
- package/lib/search/shared/sources/ilayer.d.ts +2 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +4 -2
- package/lib/search/shared/sources/nominatim.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +3 -2
- package/lib/search/shared/sources/source.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.d.ts +2 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +5 -3
- package/lib/search/shared/sources/workspace.d.ts +2 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +4 -2
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
- package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
- package/lib/style/style.module.d.ts +5 -16
- package/lib/toast/toast.component.d.ts +1 -1
- package/lib/toast/toast.module.d.ts +4 -6
- package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
- package/lib/wkt/wkt.module.d.ts +3 -0
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +2 -2
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
- package/lib/workspace/shared/edition-workspace.d.ts +1 -1
- package/lib/workspace/shared/edition-workspace.service.d.ts +3 -1
- package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
- package/lib/workspace/workspace.module.d.ts +5 -9
- package/locale/en.geo.json +3 -3
- package/locale/fr.geo.json +3 -3
- package/package.json +14 -12
- package/public_api.d.ts +10 -11
- package/src/geo-theme.scss +23 -23
- package/src/lib/filter/filter.theming.scss +13 -13
- package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
- package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
- package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
- package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
- package/src/lib/layer/layer.theming.scss +10 -10
- package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
- package/src/lib/map/map.theming.scss +9 -9
- package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
- package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
- package/src/style/style.scss +1 -1
- package/esm2022/lib/datasource/datasource.module.mjs +0 -22
- package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
- package/lib/datasource/datasource.module.d.ts +0 -8
- package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { NgClass } from '@angular/common';
|
|
1
2
|
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
2
7
|
import { IgoMap } from '../shared/map';
|
|
3
8
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/
|
|
5
|
-
import * as i2 from "@angular/material/
|
|
6
|
-
import * as i3 from "@angular/material/
|
|
7
|
-
import * as i4 from "@
|
|
8
|
-
import * as i5 from "@ngx-translate/core";
|
|
9
|
+
import * as i1 from "@angular/material/button";
|
|
10
|
+
import * as i2 from "@angular/material/tooltip";
|
|
11
|
+
import * as i3 from "@angular/material/icon";
|
|
12
|
+
import * as i4 from "@ngx-translate/core";
|
|
9
13
|
export class OfflineButtonComponent {
|
|
10
14
|
btnStyle = 'onlineStyle';
|
|
11
15
|
map;
|
|
@@ -28,17 +32,23 @@ export class OfflineButtonComponent {
|
|
|
28
32
|
this.btnStyle = 'onlineStyle';
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OfflineButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: OfflineButtonComponent, isStandalone: true, selector: "igo-offline-button", inputs: { map: "map", color: "color", enabled: "enabled" }, ngImport: i0, template: "<div class=\"igo-user-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n enabled\n ? ('igo.geo.mapButtons.online' | translate)\n : ('igo.geo.mapButtons.offline' | translate)\n \"\n matTooltipPosition=\"left\"\n [ngClass]=\"[btnStyle]\"\n [color]=\"enabled ? color : null\"\n (click)=\"onClick()\"\n >\n <mat-icon svgIcon=\"wifi-strength-off\"></mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .onlineStyle{width:40px;background-color:#fff}:host .onlineStyle:hover{background-color:#efefef}:host .offlineStyle{width:40px;background-color:#b9b9b9}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
33
37
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OfflineButtonComponent, decorators: [{
|
|
35
39
|
type: Component,
|
|
36
|
-
args: [{ selector: 'igo-offline-button',
|
|
37
|
-
|
|
40
|
+
args: [{ selector: 'igo-offline-button', standalone: true, imports: [
|
|
41
|
+
MatButtonModule,
|
|
42
|
+
MatTooltipModule,
|
|
43
|
+
NgClass,
|
|
44
|
+
MatIconModule,
|
|
45
|
+
TranslateModule
|
|
46
|
+
], template: "<div class=\"igo-user-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n enabled\n ? ('igo.geo.mapButtons.online' | translate)\n : ('igo.geo.mapButtons.offline' | translate)\n \"\n matTooltipPosition=\"left\"\n [ngClass]=\"[btnStyle]\"\n [color]=\"enabled ? color : null\"\n (click)=\"onClick()\"\n >\n <mat-icon svgIcon=\"wifi-strength-off\"></mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .onlineStyle{width:40px;background-color:#fff}:host .onlineStyle:hover{background-color:#efefef}:host .offlineStyle{width:40px;background-color:#b9b9b9}\n"] }]
|
|
47
|
+
}], ctorParameters: () => [], propDecorators: { map: [{
|
|
38
48
|
type: Input
|
|
39
49
|
}], color: [{
|
|
40
50
|
type: Input
|
|
41
51
|
}], enabled: [{
|
|
42
52
|
type: Input
|
|
43
53
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL29mZmxpbmUtYnV0dG9uL29mZmxpbmUtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9vZmZsaW5lLWJ1dHRvbi9vZmZsaW5lLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBZXZDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsUUFBUSxHQUFXLGFBQWEsQ0FBQztJQUV4QixHQUFHLENBQVM7SUFDWixLQUFLLENBQVM7SUFDZCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRWxDLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzt1R0F6QlUsc0JBQXNCOzJGQUF0QixzQkFBc0IsMElDdkJuQyx5YkFnQkEseVZEQUksZUFBZSwySUFDZixnQkFBZ0IsNlRBQ2hCLE9BQU8sbUZBQ1AsYUFBYSxtTEFDYixlQUFlOzsyRkFHTixzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGVBQWU7cUJBQ2hCO3dEQUtRLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vc2hhcmVkL21hcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1vZmZsaW5lLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29mZmxpbmUtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vZmZsaW5lLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2ZmbGluZUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYnRuU3R5bGU6IHN0cmluZyA9ICdvbmxpbmVTdHlsZSc7XHJcblxyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXAuZm9yY2VkT2ZmbGluZSQubmV4dCh0aGlzLmVuYWJsZWQpO1xyXG4gIH1cclxuXHJcbiAgb25DbGljaygpIHtcclxuICAgIHRoaXMuZW5hYmxlZCA9ICF0aGlzLmVuYWJsZWQ7XHJcbiAgICB0aGlzLmhhbmRsZUJ1dHRvblN0eWxlKCk7XHJcbiAgICB0aGlzLm1hcC5mb3JjZWRPZmZsaW5lJC5uZXh0KHRoaXMuZW5hYmxlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUJ1dHRvblN0eWxlKCkge1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmJ0blN0eWxlID0gJ29mZmxpbmVTdHlsZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJ0blN0eWxlID0gJ29ubGluZVN0eWxlJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImlnby11c2VyLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIFttYXRUb29sdGlwXT1cIlxuICAgICAgZW5hYmxlZFxuICAgICAgICA/ICgnaWdvLmdlby5tYXBCdXR0b25zLm9ubGluZScgfCB0cmFuc2xhdGUpXG4gICAgICAgIDogKCdpZ28uZ2VvLm1hcEJ1dHRvbnMub2ZmbGluZScgfCB0cmFuc2xhdGUpXG4gICAgXCJcbiAgICBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCJcbiAgICBbbmdDbGFzc109XCJbYnRuU3R5bGVdXCJcbiAgICBbY29sb3JdPVwiZW5hYmxlZCA/IGNvbG9yIDogbnVsbFwiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gID5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cIndpZmktc3RyZW5ndGgtb2ZmXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
import { AsyncPipe, NgIf, NgStyle } from '@angular/common';
|
|
1
2
|
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
2
7
|
import { bearingToAzimuth } from '@turf/helpers';
|
|
3
8
|
import { BehaviorSubject } from 'rxjs';
|
|
4
9
|
import { IgoMap } from '../shared/map';
|
|
5
10
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/
|
|
7
|
-
import * as i2 from "@angular/material/
|
|
8
|
-
import * as i3 from "@angular/material/
|
|
9
|
-
import * as i4 from "@
|
|
10
|
-
import * as i5 from "@ngx-translate/core";
|
|
11
|
+
import * as i1 from "@angular/material/tooltip";
|
|
12
|
+
import * as i2 from "@angular/material/button";
|
|
13
|
+
import * as i3 from "@angular/material/icon";
|
|
14
|
+
import * as i4 from "@ngx-translate/core";
|
|
11
15
|
export class RotationButtonComponent {
|
|
12
16
|
rotated$ = new BehaviorSubject(false);
|
|
13
17
|
azimuthRounded = 0;
|
|
@@ -31,17 +35,25 @@ export class RotationButtonComponent {
|
|
|
31
35
|
this.rotated$.next(radians !== 0);
|
|
32
36
|
});
|
|
33
37
|
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
35
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: RotationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: RotationButtonComponent, isStandalone: true, selector: "igo-rotation-button", inputs: { map: "map", showIfNoRotation: "showIfNoRotation", color: "color" }, ngImport: i0, template: "<div\n *ngIf=\"((rotated$ | async) && !showIfNoRotation) || showIfNoRotation\"\n class=\"igo-rotation-button-container\"\n [matTooltip]=\"\n (rotated$ | async)\n ? ('igo.geo.mapButtons.resetRotation'\n | translate: { azimuth: azimuthRounded, rotation: rotationRounded })\n : ('igo.geo.mapButtons.tipRotation' | translate)\n \"\n matTooltipPosition=\"left\"\n>\n <button\n mat-icon-button\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"(rotated$ | async) === false\"\n (click)=\"map.viewController.resetRotation()\"\n >\n <mat-icon [ngStyle]=\"currentStyle$ | async\" svgIcon=\"navigation\">\n </mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-rotation-button-container{width:40px;background-color:#fff}:host .igo-rotation-button-container:hover{background-color:#efefef}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
36
40
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: RotationButtonComponent, decorators: [{
|
|
38
42
|
type: Component,
|
|
39
|
-
args: [{ selector: 'igo-rotation-button',
|
|
40
|
-
|
|
43
|
+
args: [{ selector: 'igo-rotation-button', standalone: true, imports: [
|
|
44
|
+
NgIf,
|
|
45
|
+
MatTooltipModule,
|
|
46
|
+
MatButtonModule,
|
|
47
|
+
MatIconModule,
|
|
48
|
+
NgStyle,
|
|
49
|
+
AsyncPipe,
|
|
50
|
+
TranslateModule
|
|
51
|
+
], template: "<div\n *ngIf=\"((rotated$ | async) && !showIfNoRotation) || showIfNoRotation\"\n class=\"igo-rotation-button-container\"\n [matTooltip]=\"\n (rotated$ | async)\n ? ('igo.geo.mapButtons.resetRotation'\n | translate: { azimuth: azimuthRounded, rotation: rotationRounded })\n : ('igo.geo.mapButtons.tipRotation' | translate)\n \"\n matTooltipPosition=\"left\"\n>\n <button\n mat-icon-button\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"(rotated$ | async) === false\"\n (click)=\"map.viewController.resetRotation()\"\n >\n <mat-icon [ngStyle]=\"currentStyle$ | async\" svgIcon=\"navigation\">\n </mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-rotation-button-container{width:40px;background-color:#fff}:host .igo-rotation-button-container:hover{background-color:#efefef}\n"] }]
|
|
52
|
+
}], ctorParameters: () => [], propDecorators: { map: [{
|
|
41
53
|
type: Input
|
|
42
54
|
}], showIfNoRotation: [{
|
|
43
55
|
type: Input
|
|
44
56
|
}], color: [{
|
|
45
57
|
type: Input
|
|
46
58
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRpb24tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9yb3RhdGlvbi1idXR0b24vcm90YXRpb24tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9yb3RhdGlvbi1idXR0b24vcm90YXRpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBb0IsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFpQnZDLE1BQU0sT0FBTyx1QkFBdUI7SUFDekIsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2pELGNBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQUs7UUFDL0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQyxDQUFDO0lBRU0sR0FBRyxDQUFTO0lBQ1osZ0JBQWdCLENBQVU7SUFDMUIsS0FBSyxDQUFTO0lBRXZCLGdCQUFlLENBQUM7SUFFaEIsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUN0QixTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sR0FBRyxNQUFNO2FBQ3hDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBekJVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLDZKQzNCcEMsdXJCQXNCQSxzVURKSSxJQUFJLDRGQUNKLGdCQUFnQiw0VEFDaEIsZUFBZSwySUFDZixhQUFhLG9MQUNiLE9BQU8sc0VBQ1AsU0FBUyw2Q0FDVCxlQUFlOzsyRkFHTix1QkFBdUI7a0JBZm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxlQUFlO3FCQUNoQjt3REFVUSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiwgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgYmVhcmluZ1RvQXppbXV0aCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uL3NoYXJlZC9tYXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tcm90YXRpb24tYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcm90YXRpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yb3RhdGlvbi1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE5nU3R5bGUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3RhdGlvbkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gIHJlYWRvbmx5IHJvdGF0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIGF6aW11dGhSb3VuZGVkOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyByb3RhdGlvblJvdW5kZWQ6IG51bWJlciA9IDA7XHJcbiAgcmVhZG9ubHkgY3VycmVudFN0eWxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e30+KHtcclxuICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgwcmFkKSdcclxuICB9KTtcclxuXHJcbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XHJcbiAgQElucHV0KCkgc2hvd0lmTm9Sb3RhdGlvbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJvdGF0aW9uJC5zdWJzY3JpYmUoKHIpID0+IHtcclxuICAgICAgY29uc3QgcmFkaWFucyA9IHIgfHwgMDtcclxuICAgICAgY29uc3QgZGVnID0gKHJhZGlhbnMgKiAxODApIC8gTWF0aC5QSTtcclxuICAgICAgdGhpcy5yb3RhdGlvblJvdW5kZWQgPSBNYXRoLnJvdW5kKGRlZyk7XHJcbiAgICAgIHRoaXMuYXppbXV0aFJvdW5kZWQgPSBNYXRoLnJvdW5kKGJlYXJpbmdUb0F6aW11dGgoZGVnICogLTEpKTtcclxuICAgICAgdGhpcy5jdXJyZW50U3R5bGUkLm5leHQoe1xyXG4gICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgnICsgcmFkaWFucyArICdyYWQpJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5yb3RhdGVkJC5uZXh0KHJhZGlhbnMgIT09IDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcbiAgKm5nSWY9XCIoKHJvdGF0ZWQkIHwgYXN5bmMpICYmICFzaG93SWZOb1JvdGF0aW9uKSB8fCBzaG93SWZOb1JvdGF0aW9uXCJcbiAgY2xhc3M9XCJpZ28tcm90YXRpb24tYnV0dG9uLWNvbnRhaW5lclwiXG4gIFttYXRUb29sdGlwXT1cIlxuICAgIChyb3RhdGVkJCB8IGFzeW5jKVxuICAgICAgPyAoJ2lnby5nZW8ubWFwQnV0dG9ucy5yZXNldFJvdGF0aW9uJ1xuICAgICAgICB8IHRyYW5zbGF0ZTogeyBhemltdXRoOiBhemltdXRoUm91bmRlZCwgcm90YXRpb246IHJvdGF0aW9uUm91bmRlZCB9KVxuICAgICAgOiAoJ2lnby5nZW8ubWFwQnV0dG9ucy50aXBSb3RhdGlvbicgfCB0cmFuc2xhdGUpXG4gIFwiXG4gIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxuPlxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbZGlzYWJsZWRdPVwiKHJvdGF0ZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgKGNsaWNrKT1cIm1hcC52aWV3Q29udHJvbGxlci5yZXNldFJvdGF0aW9uKClcIlxuICA+XG4gICAgPG1hdC1pY29uIFtuZ1N0eWxlXT1cImN1cnJlbnRTdHlsZSQgfCBhc3luY1wiIHN2Z0ljb249XCJuYXZpZ2F0aW9uXCI+XG4gICAgPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -41,4 +41,4 @@ export class MapController {
|
|
|
41
41
|
this.observerKeys = [];
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFDeEI7O09BRUc7SUFDTyxLQUFLLENBQVE7SUFFdkI7O09BRUc7SUFDTyxZQUFZLEdBQWdCLEVBQUUsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBd0I7UUFDL0IsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFjLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcblxuLyoqXG4gKiBCYXNlIG1hcCBjb250cm9sbGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXBDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIE9MIE1hcFxuICAgKi9cbiAgcHJvdGVjdGVkIG9sTWFwOiBPbE1hcDtcblxuICAvKipcbiAgICogQXJyYXkgb2Ygb2JzZXJ2ZXIga2V5c1xuICAgKi9cbiAgcHJvdGVjdGVkIG9ic2VydmVyS2V5czogRXZlbnRzS2V5W10gPSBbXTtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBPTCBtYXAgdGhpcyBjb250cm9sbGVyIGlzIGJvdW5kIHRvXG4gICAqIEByZXR1cm5zIE9MIE1hcFxuICAgKi9cbiAgZ2V0T2xNYXAoKTogT2xNYXAge1xuICAgIHJldHVybiB0aGlzLm9sTWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXG4gICAqIEBwYXJhbSBtYXAgT0wgTWFwXG4gICAqL1xuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAob2xNYXAgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmdldE9sTWFwKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGNvbnRyb2xsZXIgaXMgYWxyZWFkeSBib3VuZCB0byBhIG1hcC4nKTtcbiAgICB9XG5cbiAgICBpZiAob2xNYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50ZWFyZG93bk9ic2VydmVycygpO1xuICAgICAgdGhpcy5vbE1hcCA9IG9sTWFwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub2xNYXAgPSBvbE1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZWFyZG93biBhbnkgb2JzZXJ2ZXJzXG4gICAqL1xuICB0ZWFyZG93bk9ic2VydmVycygpIHtcbiAgICB0aGlzLm9ic2VydmVyS2V5cy5mb3JFYWNoKChrZXk6IEV2ZW50c0tleSkgPT4gdW5CeUtleShrZXkpKTtcbiAgICB0aGlzLm9ic2VydmVyS2V5cyA9IFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -5,4 +5,4 @@ export var GeolocationOverlayType;
|
|
|
5
5
|
GeolocationOverlayType["Accuracy"] = "accuracy";
|
|
6
6
|
GeolocationOverlayType["Buffer"] = "buffer";
|
|
7
7
|
})(GeolocationOverlayType || (GeolocationOverlayType = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9jb250cm9sbGVycy9nZW9sb2NhdGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0NBLE1BQU0sQ0FBTixJQUFZLHNCQUtYO0FBTEQsV0FBWSxzQkFBc0I7SUFDaEMsK0NBQXFCLENBQUE7SUFDckIsaUVBQXVDLENBQUE7SUFDdkMsK0NBQXFCLENBQUE7SUFDckIsMkNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFLakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0aW9uTGlrZSB9IGZyb20gJ29sL3Byb2onO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb2xvY2F0aW9uT3B0aW9ucyB7XG4gIGFjdGl2YXRlRGVmYXVsdD86IGJvb2xlYW47XG4gIGJhc2ljPzogYm9vbGVhbjsgLy8gdG8gY29udHJvbCB0aGUgYnV0dG9uIGljb24uXG4gIGZvbGxvd1Bvc2l0aW9uPzogYm9vbGVhbjsgLy8gdG8gb3ZlcmlkZSB0aGUgZm9sbG93UG9zaXRpb24gZGVmaW5lIGF0IHRoZSBjb250ZXh0IGxldmVsLlxuICBidXR0b24/OiB7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zIHtcbiAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2U7XG4gIGFjY3VyYWN5VGhyZXNob2xkPzogbnVtYmVyO1xuICBmb2xsb3dQb3NpdGlvbj86IGJvb2xlYW47XG4gIGJ1ZmZlcj86IEdlb2xvY2F0aW9uQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcEdlb2xvY2F0aW9uU3RhdGUge1xuICBwb3NpdGlvbjogbnVtYmVyW107XG4gIHByb2plY3Rpb246IHN0cmluZztcbiAgYWNjdXJhY3k6IG51bWJlcjtcbiAgYWx0aXR1ZGU6IG51bWJlcjtcbiAgYWx0aXR1ZGVBY2N1cmFjeTogbnVtYmVyO1xuICBoZWFkaW5nOiBudW1iZXI7XG4gIHNwZWVkOiBudW1iZXI7XG4gIGVuYWJsZUhpZ2hBY2N1cmFjeTogYm9vbGVhbjtcbiAgdGltZXN0YW1wOiBEYXRlO1xufVxuZXhwb3J0IGludGVyZmFjZSBHZW9sb2NhdGlvbkJ1ZmZlciB7XG4gIGJ1ZmZlclJhZGl1cz86IG51bWJlcjtcbiAgYnVmZmVyU3Ryb2tlPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGJ1ZmZlckZpbGw/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc2hvd0J1ZmZlclJhZGl1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUge1xuICBQb3NpdGlvbiA9ICdwb3NpdGlvbicsXG4gIFBvc2l0aW9uRGlyZWN0aW9uID0gJ3Bvc2l0aW9uRGlyZWN0aW9uJyxcbiAgQWNjdXJhY3kgPSAnYWNjdXJhY3knLFxuICBCdWZmZXIgPSAnYnVmZmVyJ1xufVxuIl19
|
|
@@ -428,4 +428,4 @@ export class MapGeolocationController extends MapController {
|
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFnSy9DO0lBQ0E7SUFDQTtJQUNBO0lBbEtGLGFBQWEsQ0FBUztJQUN0QixlQUFl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LENBQUMsY0FBYyxJQUFJLFlBQVk7Z0JBQ2pDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDcEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7YUFDN0I7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IG9sR2VvbG9jYXRpb24gZnJvbSAnb2wvR2VvbG9jYXRpb24nO1xyXG5pbXBvcnQgT2xNYXAgZnJvbSAnb2wvTWFwJztcclxuaW1wb3J0IHsgUG9pbnQsIFBvbHlnb24gfSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcclxuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBmcm9tQ2lyY2xlIH0gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcclxuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgKiBhcyBvbFNwaGVyZSBmcm9tICdvbC9zcGhlcmUnO1xyXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7XHJcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXHJcbiAgZmVhdHVyZXNBcmVPdXRPZlZpZXcsXHJcbiAgaGlkZU9sRmVhdHVyZSxcclxuICBtb3ZlVG9PbEZlYXR1cmVzXHJcbn0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS51dGlscyc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcclxuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi4vbWFwLmFic3RyYWN0JztcclxuaW1wb3J0IHsgTWFwVmlld09wdGlvbnMgfSBmcm9tICcuLi9tYXAuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTWFwQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcic7XHJcbmltcG9ydCB7XHJcbiAgR2VvbG9jYXRpb25CdWZmZXIsXHJcbiAgR2VvbG9jYXRpb25PdmVybGF5VHlwZSxcclxuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxyXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGVcclxufSBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQ29udHJvbGxlciB0byBoYW5kbGUgbWFwIHZpZXcgaW50ZXJhY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyIGV4dGVuZHMgTWFwQ29udHJvbGxlciB7XHJcbiAgcHJpdmF0ZSBhcnJvd1JvdGF0aW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBnZW9sb2NhdGlvbk92ZXJsYXk6IE92ZXJsYXk7XHJcbiAgcHJpdmF0ZSBwb3NpdGlvbkZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XHJcbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xyXG4gICAgICAgIHJhZGl1czogNixcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgIGNvbG9yOiAnIzMzOTlDQydcclxuICAgICAgICB9KSxcclxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICBjb2xvcjogJyNmZmYnLFxyXG4gICAgICAgICAgd2lkdGg6IDJcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgcHJpdmF0ZSBhY2N1cmFjeUZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XHJcbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KScsXHJcbiAgICAgICAgd2lkdGg6IDFcclxuICAgICAgfSksXHJcbiAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgIGNvbG9yOiAncmdiYSgxMjAsIDEyMCwgMTIwLCAwLjQpJ1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gIHByaXZhdGUgZ2V0IGJ1ZmZlclN0eWxlKCk6IG9sc3R5bGUuU3R5bGUge1xyXG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2UoeyB3aWR0aDogMiwgY29sb3I6IHRoaXMuYnVmZmVyLmJ1ZmZlclN0cm9rZSB9KSxcclxuICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7IGNvbG9yOiB0aGlzLmJ1ZmZlci5idWZmZXJGaWxsIH0pLFxyXG4gICAgICB0ZXh0OiBuZXcgb2xzdHlsZS5UZXh0KHtcclxuICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcclxuICAgICAgICBvZmZzZXRYOiAxMCxcclxuICAgICAgICBvZmZzZXRZOiAtMTAsXHJcbiAgICAgICAgZm9udDogJzEycHggQ2FsaWJyaSxzYW5zLXNlcmlmJyxcclxuICAgICAgICB0ZXh0OiB0aGlzLmJ1ZmZlci5zaG93QnVmZmVyUmFkaXVzXHJcbiAgICAgICAgICA/IGAke3RoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c31tYFxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHsgY29sb3I6ICcjMDAwJyB9KSxcclxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFycm93U3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XHJcbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuUmVndWxhclNoYXBlKHtcclxuICAgICAgICByYWRpdXM6IDUuNSxcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAxMzIsIDIwMiknXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgY29sb3I6ICcjZmZmJyxcclxuICAgICAgICAgIHdpZHRoOiAxLjVcclxuICAgICAgICB9KSxcclxuICAgICAgICBwb2ludHM6IDMsXHJcbiAgICAgICAgZGlzcGxhY2VtZW50OiBbMCwgOV0sXHJcbiAgICAgICAgcm90YXRpb246IHRoaXMuYXJyb3dSb3RhdGlvbixcclxuICAgICAgICByb3RhdGVXaXRoVmlldzogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlb2xvY2F0aW9uOiBvbEdlb2xvY2F0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IGVtaXNzaW9uIGludGVydmFsIG9mIHRoZSBwb3NpdGlvbi4gSW4gc2Vjb25kc1xyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBlbWlzc2lvbkludGVydmFsU2Vjb25kcyQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoNSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgcG9zaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXBHZW9sb2NhdGlvblN0YXRlPihcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgdHJhY2tpbmcgc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdHJhY2tpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGZvbGxvdyBwb3NpdGlvbiBzdGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBmb2xsb3dQb3NpdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByaXZhdGUgbGFzdFBvc2l0aW9uOiB7IGNvb3JkaW5hdGVzOiBudW1iZXJbXTsgZGF0ZVRpbWU6IERhdGUgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgZ2VvbG9jYXRlIHNob3VsZCBzaG93IGEgYnVmZmVyIGFyb3VuZCB0aGUgY3VycmVudCBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHNldCBidWZmZXIodmFsdWU6IEdlb2xvY2F0aW9uQnVmZmVyKSB7XHJcbiAgICB0aGlzLl9idWZmZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGJ1ZmZlcigpOiBHZW9sb2NhdGlvbkJ1ZmZlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyO1xyXG4gIH1cclxuICBwcml2YXRlIF9idWZmZXI6IEdlb2xvY2F0aW9uQnVmZmVyO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBnZW9sb2NhdGUgY29udHJvbGxlciBhY2N1cmFjeSB0aHJlc2hvbGQgdG8gc3RvcmUvc2hvdyB0aGUgcG9zaXRpb24uXHJcbiAgICovXHJcbiAgc2V0IGFjY3VyYWN5VGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2FjY3VyYWN5VGhyZXNob2xkID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjdXJhY3lUaHJlc2hvbGQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWNjdXJhY3lUaHJlc2hvbGQ7XHJcblxyXG4gIGdldCBvbEdlb2xvY2F0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgZ2VvbG9jYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0IHRyYWNraW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb24uZ2V0VHJhY2tpbmcoKTtcclxuICB9XHJcblxyXG4gIHNldCB0cmFja2luZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi5zZXRUcmFja2luZyh2YWx1ZSB8fCBmYWxzZSk7XHJcbiAgICB0aGlzLnRyYWNraW5nJC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2dlb2xvY2F0aW9uLnRyYWNraW5nJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgdmlldyB0cmFja2luZyBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHNldCBmb2xsb3dQb3NpdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuZm9sbG93UG9zaXRpb24kLm5leHQodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZT8uZ2V0Q29uZmlnKCdnZW9sb2NhdGUuZm9sbG93UG9zaXRpb24nKSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5mb2xsb3dQb3NpdGlvbiQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdnZW9sb2NhdGlvbi5mb2xsb3dQb3NpdGlvbicsIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmb2xsb3dQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2xsb3dQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZvbGxvd1Bvc2l0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWFwOiBNYXBCYXNlLFxyXG4gICAgcHJpdmF0ZSBvcHRpb25zPzogTWFwR2VvbG9jYXRpb25Db250cm9sbGVyT3B0aW9ucyxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U/OiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZT86IENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMubWFwKTtcclxuICAgIHRoaXMuX2ZvbGxvd1Bvc2l0aW9uID1cclxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxyXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmZvbGxvd1Bvc2l0aW9uXHJcbiAgICAgICAgOiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9idWZmZXIgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmJ1ZmZlciA/IHRoaXMub3B0aW9ucy5idWZmZXIgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYWNjdXJhY3lUaHJlc2hvbGRcclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5hY2N1cmFjeVRocmVzaG9sZFxyXG4gICAgICAgIDogNTAwMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcclxuICAgKi9cclxuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcclxuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcclxuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpIHtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uKTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uKTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5KTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XHJcbiAgfVxyXG5cclxuICBzZXR1cE9ic2VydmVycygpIHtcclxuICAgIHRoaXMudHJhY2tpbmckLnN1YnNjcmliZSgodHJhY2tpbmcpID0+IHtcclxuICAgICAgaWYgKHRyYWNraW5nKSB7XHJcbiAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUsIHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uID0gbmV3IG9sR2VvbG9jYXRpb24oe1xyXG4gICAgICAvLyBlbmFibGVIaWdoQWNjdXJhY3kgbXVzdCBiZSBzZXQgdG8gdHJ1ZSB0byBoYXZlIHRoZSBoZWFkaW5nIHZhbHVlLlxyXG4gICAgICB0cmFja2luZ09wdGlvbnM6IHtcclxuICAgICAgICBlbmFibGVIaWdoQWNjdXJhY3k6IHRydWUsXHJcbiAgICAgICAgbWF4aW11bUFnZTogMTAwMDAsXHJcbiAgICAgICAgdGltZW91dDogNjAwMDAwXHJcbiAgICAgIH0sXHJcbiAgICAgIHByb2plY3Rpb246IHRoaXMub3B0aW9ucy5wcm9qZWN0aW9uXHJcbiAgICB9KTtcclxuICAgIGxldCB0cmFja2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcclxuICAgICAgdGhpcy5lbWlzc2lvbkludGVydmFsU2Vjb25kcyRcclxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHZhbHVlKSA9PiBpbnRlcnZhbCh2YWx1ZSAqIDEwMDApKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0cmFja2luZyA9PT0gdGhpcy50cmFja2luZykge1xyXG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFja2luZyA9IHRoaXMudHJhY2tpbmc7XHJcbiAgICAgICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uLm9uKCdjaGFuZ2UnLCAoZXZ0KSA9PiB7XHJcbiAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZShmYWxzZSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBcnJvd0ZlYXR1cmVPcmllbnRhdGlvbihwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSkge1xyXG4gICAgY29uc3QgcG9zaXRpb240MzI2ID0gb2xwcm9qLnRyYW5zZm9ybShcclxuICAgICAgcG9zaXRpb24ucG9zaXRpb24sXHJcbiAgICAgIHBvc2l0aW9uLnByb2plY3Rpb24sXHJcbiAgICAgICdFUFNHOjQzMjYnXHJcbiAgICApO1xyXG4gICAgaWYgKCF0aGlzLmxhc3RQb3NpdGlvbikge1xyXG4gICAgICB0aGlzLmxhc3RQb3NpdGlvbiA9IHsgY29vcmRpbmF0ZXM6IHBvc2l0aW9uNDMyNiwgZGF0ZVRpbWU6IG5ldyBEYXRlKCkgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXJyb3dGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgY29uc3QgaXNNb3ZpbmcgPVxyXG4gICAgICBwb3NpdGlvbj8uc3BlZWQgPiAxLjI1ICYmXHJcbiAgICAgIHRoaXMuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzLCBwb3NpdGlvbjQzMjYpID5cclxuICAgICAgICAwLjAwMztcclxuICAgIGlmIChwb3NpdGlvbi5hY2N1cmFjeSA8PSB0aGlzLmFjY3VyYWN5VGhyZXNob2xkICYmIGlzTW92aW5nKSB7XHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVhZGluZyB1c2luZyBjdXJyZW50IHBvc2l0aW9uIGFuZCBsYXN0IHJlY29yZGVkXHJcbiAgICAgIC8vIGJlY2F1c2Ugb2wgaGVhZGluZyBub3QgcmV0dXJuaW5nIHJpZ2h0IHZhbHVlXHJcbiAgICAgIHZhciBkeCA9IHBvc2l0aW9uNDMyNlsxXSAtIHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICB2YXIgZHkgPSBwb3NpdGlvbjQzMjZbMF0gLSB0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlc1swXTtcclxuICAgICAgdmFyIHRoZXRhID0gTWF0aC5hdGFuMihkeSwgZHgpO1xyXG4gICAgICBpZiAodGhldGEgPCAwKSB0aGV0YSA9IDIgKiBNYXRoLlBJICsgdGhldGE7XHJcbiAgICAgIHRoaXMuYXJyb3dSb3RhdGlvbiA9IHRoZXRhO1xyXG4gICAgICBpZiAoYXJyb3dGZWF0dXJlKSB7XHJcbiAgICAgICAgYXJyb3dGZWF0dXJlLnNldFN0eWxlKHRoaXMuYXJyb3dTdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0UG9zaXRpb24gPSB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbjQzMjYsIGRhdGVUaW1lOiBuZXcgRGF0ZSgpIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXJyb3dGZWF0dXJlICYmXHJcbiAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLmxhc3RQb3NpdGlvbi5kYXRlVGltZS5nZXRUaW1lKCkgPiAzMDAwXHJcbiAgICAgIClcclxuICAgICAgICBoaWRlT2xGZWF0dXJlKGFycm93RmVhdHVyZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBkaXN0YW5jZSBpbiBrbSBiZXR3ZWVuIGNvb3JkMSBhbmQgY29vcmQyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkaXN0YW5jZUJldHdlZW5Qb2ludHMoY29vcmQxOiBudW1iZXJbXSwgY29vcmQyOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gb2xTcGhlcmUuZ2V0RGlzdGFuY2UoY29vcmQxLCBjb29yZDIpIC8gMTAwMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRPbkNoYW5nZWRMaXN0ZW5lcihldmVudDogKGdlbzogb2xHZW9sb2NhdGlvbikgPT4gYW55KSB7XHJcbiAgICBsZXQgbGlzdGVuZXIgPSAoKSA9PiB7XHJcbiAgICAgIGV2ZW50KHRoaXMuZ2VvbG9jYXRpb24pO1xyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VvbG9jYXRpb24ub24oJ2NoYW5nZScsIGxpc3RlbmVyKTtcclxuICAgIHJldHVybiBsaXN0ZW5lcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVDaGFuZ2VkTGlzdGVuZXIoZXZlbnQ6ICgpID0+IGFueSkge1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi51bignY2hhbmdlJywgZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUdlb2xvY2F0aW9uT3B0aW9ucyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xyXG4gICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHRvZG8gbWF5YmUgYSBkZWRpY2F0ZWQgaW50ZXJmYWNlIGZvciBnZW9sb2NhdGlvbiBzaG91bGQgYmUgZGVmaW5lZCBpbnN0ZWFkIG9mIHB1dHRpbmcgdGhlc2UgaW5zaWRlIHRoZSBtYXB2aWV3b3B0aW9ucz9cclxuICAgIGxldCB0cmFja2luZyA9IG9wdGlvbnMuZ2VvbG9jYXRlO1xyXG4gICAgbGV0IGZvbGxvd1Bvc2l0aW9uID0gb3B0aW9ucy5hbHdheXNUcmFja2luZztcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZFRyYWNraW5nID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXHJcbiAgICAgICAgJ2dlb2xvY2F0aW9uLnRyYWNraW5nJ1xyXG4gICAgICApIGFzIGJvb2xlYW47XHJcbiAgICAgIGlmIChzdG9yZWRUcmFja2luZyAhPT0gbnVsbCAmJiBzdG9yZWRUcmFja2luZyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdHJhY2tpbmcgPSBzdG9yZWRUcmFja2luZztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3RvcmVkRm9sbG93UG9zaXRpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcclxuICAgICAgICAnZ2VvbG9jYXRpb24uZm9sbG93UG9zaXRpb24nXHJcbiAgICAgICkgYXMgYm9vbGVhbjtcclxuICAgICAgaWYgKHN0b3JlZEZvbGxvd1Bvc2l0aW9uICE9PSBudWxsICYmIHN0b3JlZEZvbGxvd1Bvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBmb2xsb3dQb3NpdGlvbiA9IHN0b3JlZEZvbGxvd1Bvc2l0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYWNraW5nID0gdHJhY2tpbmc7XHJcbiAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uID0gZm9sbG93UG9zaXRpb247XHJcbiAgICB0aGlzLmJ1ZmZlciA9IG9wdGlvbnMuYnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xyXG4gICAqL1xyXG4gIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucyQkLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5tYXAoKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbiAgICBzdXBlci50ZWFyZG93bk9ic2VydmVycygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gcG9zaXRpb24gY2hhbmdlLCBnZXQgdGhlIHBvc2l0aW9uLCBzaG93IGl0IG9uIHRoZSBtYXAgYW5kIHJlY29yZCBpdC5cclxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IE1hcCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Qb3NpdGlvbkNoYW5nZShcclxuICAgIGVtaXRFdmVudDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgem9vbVRvOiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGlmICghdGhpcy50cmFja2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZW9sb2NhdGVQcm9wZXJ0aWVzID0gdGhpcy5nZW9sb2NhdGlvbi5nZXRQcm9wZXJ0aWVzKCk7XHJcblxyXG4gICAgaWYgKGdlb2xvY2F0ZVByb3BlcnRpZXMuYWNjdXJhY3kgPiB0aGlzLmFjY3VyYWN5VGhyZXNob2xkKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignUG9vciBnZW9sb2NhdGlvbiBhY2N1cmFjeS4gTm8gcG9zaXRpb24gYXJlIHN0b3JlZC9zaG93bicpO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSA9IHtcclxuICAgICAgcG9zaXRpb246IGdlb2xvY2F0ZVByb3BlcnRpZXMucG9zaXRpb24sXHJcbiAgICAgIHByb2plY3Rpb246IHRoaXMuZ2VvbG9jYXRpb24uZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKSxcclxuICAgICAgYWNjdXJhY3k6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWNjdXJhY3ksXHJcbiAgICAgIGFsdGl0dWRlOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlLFxyXG4gICAgICBhbHRpdHVkZUFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlQWNjdXJhY3ksXHJcbiAgICAgIGhlYWRpbmc6IGdlb2xvY2F0ZVByb3BlcnRpZXMuaGVhZGluZyxcclxuICAgICAgc3BlZWQ6IGdlb2xvY2F0ZVByb3BlcnRpZXMuc3BlZWQsXHJcbiAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy50cmFja2luZ09wdGlvbnNcclxuICAgICAgICA/LmVuYWJsZUhpZ2hBY2N1cmFjeVxyXG4gICAgICAgID8gdHJ1ZVxyXG4gICAgICAgIDogZmFsc2UsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgfTtcclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uKTtcclxuICAgIHRoaXMuaGFuZGxlVmlld0Zyb21GZWF0dXJlcyhwb3NpdGlvbiwgem9vbVRvKTtcclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dChwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZlYXR1cmVCeVR5cGUodHlwZTogR2VvbG9jYXRpb25PdmVybGF5VHlwZSk6IG9sRmVhdHVyZTxHZW9tZXRyeT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQodHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlbGV0ZUZlYXR1cmVCeVR5cGUodHlwZTogR2VvbG9jYXRpb25PdmVybGF5VHlwZSkge1xyXG4gICAgY29uc3QgZmVhdHVyZUJ5SWQgPVxyXG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheT8uZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZCh0eXBlKTtcclxuICAgIGlmIChmZWF0dXJlQnlJZCkge1xyXG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5kYXRhU291cmNlLm9sLnJlbW92ZUZlYXR1cmUoZmVhdHVyZUJ5SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVGZWF0dXJlQ3JlYXRpb24ocG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUpIHtcclxuICAgIGlmICghcG9zaXRpb24gfHwgIXBvc2l0aW9uLnBvc2l0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBvc2l0aW9uR2VvbWV0cnkgPSBuZXcgUG9pbnQocG9zaXRpb24ucG9zaXRpb24pO1xyXG4gICAgY29uc3QgYWNjdXJhY3lHZW9tZXRyeSA9IGZyb21DaXJjbGUoXHJcbiAgICAgIG5ldyBPbENpcmNsZShwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24uYWNjdXJhY3kgfHwgMClcclxuICAgICk7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUV4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzID0gcG9zaXRpb25GZWF0dXJlQXJyb3cgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBhY2N1cmFjeUZlYXR1cmVFeGlzdHMgPSBhY2N1cmFjeUZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzKSB7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93ID0gbmV3IG9sRmVhdHVyZTxQb2ludD4oe1xyXG4gICAgICAgIGdlb21ldHJ5OiBwb3NpdGlvbkdlb21ldHJ5XHJcbiAgICAgIH0pO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdy5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uKTtcclxuICAgICAgaGlkZU9sRmVhdHVyZShwb3NpdGlvbkZlYXR1cmVBcnJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUV4aXN0cykge1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlPFBvaW50Pih7IGdlb21ldHJ5OiBwb3NpdGlvbkdlb21ldHJ5IH0pO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcclxuICAgIH1cclxuICAgIGlmICghYWNjdXJhY3lGZWF0dXJlRXhpc3RzKSB7XHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZSA9IG5ldyBvbEZlYXR1cmU8UG9seWdvbj4oeyBnZW9tZXRyeTogYWNjdXJhY3lHZW9tZXRyeSB9KTtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlLnNldElkKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3kpO1xyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0U3R5bGUodGhpcy5hY2N1cmFjeUZlYXR1cmVTdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uR2VvbWV0cnkpIHtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgPyBwb3NpdGlvbkZlYXR1cmUuc2V0R2VvbWV0cnkocG9zaXRpb25HZW9tZXRyeSlcclxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgcG9zaXRpb25GZWF0dXJlLFxyXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICk7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzXHJcbiAgICAgICAgPyBwb3NpdGlvbkZlYXR1cmVBcnJvdy5zZXRHZW9tZXRyeShwb3NpdGlvbkdlb21ldHJ5KVxyXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxyXG4gICAgICAgICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyxcclxuICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICApO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFycm93RmVhdHVyZU9yaWVudGF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgPyBhY2N1cmFjeUZlYXR1cmUuc2V0R2VvbWV0cnkoYWNjdXJhY3lHZW9tZXRyeSlcclxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgYWNjdXJhY3lGZWF0dXJlLFxyXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5idWZmZXIpIHtcclxuICAgICAgICBsZXQgYnVmZmVyRmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBidWZmZXJGZWF0dXJlRXhpc3RzID0gYnVmZmVyRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBjb25zdCBidWZmZXJHZW9tZXRyeSA9IG5ldyBPbENpcmNsZShcclxuICAgICAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxyXG4gICAgICAgICAgdGhpcy5idWZmZXIuYnVmZmVyUmFkaXVzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoIWJ1ZmZlckZlYXR1cmVFeGlzdHMpIHtcclxuICAgICAgICAgIGJ1ZmZlckZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlKGJ1ZmZlckdlb21ldHJ5KTtcclxuICAgICAgICAgIGJ1ZmZlckZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xyXG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLmJ1ZmZlclN0eWxlKTtcclxuICAgICAgICBidWZmZXJGZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgICA/IGJ1ZmZlckZlYXR1cmUuc2V0R2VvbWV0cnkoYnVmZmVyR2VvbWV0cnkpXHJcbiAgICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgICBidWZmZXJGZWF0dXJlLFxyXG4gICAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVZpZXdGcm9tRmVhdHVyZXMoXHJcbiAgICBwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSxcclxuICAgIHpvb21UbzogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeVxyXG4gICAgKTtcclxuICAgIGxldCBidWZmZXJGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcclxuICAgIGNvbnN0IGZlYXR1cmVzID0gW1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUsXHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LFxyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUsXHJcbiAgICAgIGJ1ZmZlckZlYXR1cmVcclxuICAgIF0uZmlsdGVyKChmKSA9PiBmKTtcclxuICAgIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmVzRXh0ZW50ID0gY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQoXHJcbiAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgdGhpcy5tYXAudmlld1Byb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgICAgY29uc3QgZWRnZVJhdGlvcyA9XHJcbiAgICAgICAgcG9zaXRpb24/LnNwZWVkID4gMTIuNVxyXG4gICAgICAgICAgPyBbMC4yNSwgMC4yNSwgMC4yNSwgMC4yNV1cclxuICAgICAgICAgIDogWzAuMTUsIDAuMSwgMC4xLCAwLjFdO1xyXG4gICAgICBjb25zdCBhcmVPdXRPZlZpZXcgPSBmZWF0dXJlc0FyZU91dE9mVmlldyhcclxuICAgICAgICB0aGlzLm1hcC5nZXRFeHRlbnQoKSxcclxuICAgICAgICBmZWF0dXJlc0V4dGVudCxcclxuICAgICAgICBlZGdlUmF0aW9zXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBtb3Rpb24gPVxyXG4gICAgICAgIHRoaXMuZm9sbG93UG9zaXRpb24gJiYgYXJlT3V0T2ZWaWV3XHJcbiAgICAgICAgICA/IEZlYXR1cmVNb3Rpb24uTW92ZVxyXG4gICAgICAgICAgOiBGZWF0dXJlTW90aW9uLk5vbmU7XHJcbiAgICAgIGlmICh6b29tVG8pIHtcclxuICAgICAgICBtb3Rpb24gPSBGZWF0dXJlTW90aW9uLlpvb207XHJcbiAgICAgIH1cclxuICAgICAgbW90aW9uICE9PSBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICA/IG1vdmVUb09sRmVhdHVyZXModGhpcy5tYXAudmlld0NvbnRyb2xsZXIsIGZlYXR1cmVzLCBtb3Rpb24pXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFnSy9DO0lBQ0E7SUFDQTtJQUNBO0lBbEtGLGFBQWEsQ0FBUztJQUN0QixlQUFl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QUFNLFVBQVUsR0FDZCxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQ3BCLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztZQUNGLElBQUksTUFBTSxHQUNSLElBQUksQ0FBQyxjQUFjLElBQUksWUFBWTtnQkFDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2dCQUNwQixDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XHJcblxyXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgb2xHZW9sb2NhdGlvbiBmcm9tICdvbC9HZW9sb2NhdGlvbic7XHJcbmltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xyXG5pbXBvcnQgeyBQb2ludCwgUG9seWdvbiB9IGZyb20gJ29sL2dlb20nO1xyXG5pbXBvcnQgT2xDaXJjbGUgZnJvbSAnb2wvZ2VvbS9DaXJjbGUnO1xyXG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcbmltcG9ydCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCAqIGFzIG9sU3BoZXJlIGZyb20gJ29sL3NwaGVyZSc7XHJcbmltcG9ydCAqIGFzIG9sc3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVNb3Rpb24gfSBmcm9tICcuLi8uLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmVudW1zJztcclxuaW1wb3J0IHtcclxuICBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCxcclxuICBmZWF0dXJlc0FyZU91dE9mVmlldyxcclxuICBoaWRlT2xGZWF0dXJlLFxyXG4gIG1vdmVUb09sRmVhdHVyZXNcclxufSBmcm9tICcuLi8uLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLnV0aWxzJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xyXG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9tYXAuYWJzdHJhY3QnO1xyXG5pbXBvcnQgeyBNYXBWaWV3T3B0aW9ucyB9IGZyb20gJy4uL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcclxuaW1wb3J0IHtcclxuICBHZW9sb2NhdGlvbkJ1ZmZlcixcclxuICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLFxyXG4gIE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlck9wdGlvbnMsXHJcbiAgTWFwR2VvbG9jYXRpb25TdGF0ZVxyXG59IGZyb20gJy4vZ2VvbG9jYXRpb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgZXh0ZW5kcyBNYXBDb250cm9sbGVyIHtcclxuICBwcml2YXRlIGFycm93Um90YXRpb246IG51bWJlcjtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGdlb2xvY2F0aW9uT3ZlcmxheTogT3ZlcmxheTtcclxuICBwcml2YXRlIHBvc2l0aW9uRmVhdHVyZVN0eWxlOiBvbHN0eWxlLlN0eWxlIHwgb2xzdHlsZS5TdHlsZVtdID1cclxuICAgIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkNpcmNsZSh7XHJcbiAgICAgICAgcmFkaXVzOiA2LFxyXG4gICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgY29sb3I6ICcjMzM5OUNDJ1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgIGNvbG9yOiAnI2ZmZicsXHJcbiAgICAgICAgICB3aWR0aDogMlxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICBwcml2YXRlIGFjY3VyYWN5RmVhdHVyZVN0eWxlOiBvbHN0eWxlLlN0eWxlIHwgb2xzdHlsZS5TdHlsZVtdID1cclxuICAgIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgIGNvbG9yOiAncmdiYSgxMjAsIDEyMCwgMTIwLCAwLjQpJyxcclxuICAgICAgICB3aWR0aDogMVxyXG4gICAgICB9KSxcclxuICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgY29sb3I6ICdyZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNCknXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgYnVmZmVyU3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XHJcbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7IHdpZHRoOiAyLCBjb2xvcjogdGhpcy5idWZmZXIuYnVmZmVyU3Ryb2tlIH0pLFxyXG4gICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHsgY29sb3I6IHRoaXMuYnVmZmVyLmJ1ZmZlckZpbGwgfSksXHJcbiAgICAgIHRleHQ6IG5ldyBvbHN0eWxlLlRleHQoe1xyXG4gICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxyXG4gICAgICAgIG9mZnNldFg6IDEwLFxyXG4gICAgICAgIG9mZnNldFk6IC0xMCxcclxuICAgICAgICBmb250OiAnMTJweCBDYWxpYnJpLHNhbnMtc2VyaWYnLFxyXG4gICAgICAgIHRleHQ6IHRoaXMuYnVmZmVyLnNob3dCdWZmZXJSYWRpdXNcclxuICAgICAgICAgID8gYCR7dGhpcy5idWZmZXIuYnVmZmVyUmFkaXVzfW1gXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoeyBjb2xvcjogJyMwMDAnIH0pLFxyXG4gICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHsgY29sb3I6ICcjZmZmJywgd2lkdGg6IDMgfSlcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgYXJyb3dTdHlsZSgpOiBvbHN0eWxlLlN0eWxlIHtcclxuICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5SZWd1bGFyU2hhcGUoe1xyXG4gICAgICAgIHJhZGl1czogNS41LFxyXG4gICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDEzMiwgMjAyKSdcclxuICAgICAgICB9KSxcclxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICBjb2xvcjogJyNmZmYnLFxyXG4gICAgICAgICAgd2lkdGg6IDEuNVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHBvaW50czogMyxcclxuICAgICAgICBkaXNwbGFjZW1lbnQ6IFswLCA5XSxcclxuICAgICAgICByb3RhdGlvbjogdGhpcy5hcnJvd1JvdGF0aW9uLFxyXG4gICAgICAgIHJvdGF0ZVdpdGhWaWV3OiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VvbG9jYXRpb246IG9sR2VvbG9jYXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgZW1pc3Npb24gaW50ZXJ2YWwgb2YgdGhlIHBvc2l0aW9uLiBJbiBzZWNvbmRzXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGVtaXNzaW9uSW50ZXJ2YWxTZWNvbmRzJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCg1KTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBwb3NpdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcEdlb2xvY2F0aW9uU3RhdGU+KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSB0cmFja2luZyBzdGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB0cmFja2luZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgZm9sbG93IHBvc2l0aW9uIHN0YXRlXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGZvbGxvd1Bvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0UG9zaXRpb246IHsgY29vcmRpbmF0ZXM6IG51bWJlcltdOyBkYXRlVGltZTogRGF0ZSB9O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBnZW9sb2NhdGUgc2hvdWxkIHNob3cgYSBidWZmZXIgYXJvdW5kIHRoZSBjdXJyZW50IHBvc2l0aW9uXHJcbiAgICovXHJcbiAgc2V0IGJ1ZmZlcih2YWx1ZTogR2VvbG9jYXRpb25CdWZmZXIpIHtcclxuICAgIHRoaXMuX2J1ZmZlciA9IHZhbHVlO1xyXG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24odGhpcy5wb3NpdGlvbiQudmFsdWUpO1xyXG4gIH1cclxuICBnZXQgYnVmZmVyKCk6IEdlb2xvY2F0aW9uQnVmZmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2J1ZmZlcjogR2VvbG9jYXRpb25CdWZmZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdlb2xvY2F0ZSBjb250cm9sbGVyIGFjY3VyYWN5IHRocmVzaG9sZCB0byBzdG9yZS9zaG93IHRoZSBwb3NpdGlvbi5cclxuICAgKi9cclxuICBzZXQgYWNjdXJhY3lUaHJlc2hvbGQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYWNjdXJhY3lUaHJlc2hvbGQgPSB2YWx1ZTtcclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBhY2N1cmFjeVRocmVzaG9sZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjY3VyYWN5VGhyZXNob2xkO1xyXG4gIH1cclxuICBwcml2YXRlIF9hY2N1cmFjeVRocmVzaG9sZDtcclxuXHJcbiAgZ2V0IG9sR2VvbG9jYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGFjdGl2YXRlIHRoZSBnZW9sb2NhdGlvbi5cclxuICAgKi9cclxuICBnZXQgdHJhY2tpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbi5nZXRUcmFja2luZygpO1xyXG4gIH1cclxuXHJcbiAgc2V0IHRyYWNraW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uLnNldFRyYWNraW5nKHZhbHVlIHx8IGZhbHNlKTtcclxuICAgIHRoaXMudHJhY2tpbmckLm5leHQodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnZ2VvbG9jYXRpb24udHJhY2tpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24kLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGFjdGl2YXRlIHRoZSB2aWV3IHRyYWNraW5nIG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uXHJcbiAgICovXHJcbiAgc2V0IGZvbGxvd1Bvc2l0aW9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9mb2xsb3dQb3NpdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy5mb2xsb3dQb3NpdGlvbiQubmV4dCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlPy5nZXRDb25maWcoJ2dlb2xvY2F0ZS5mb2xsb3dQb3NpdGlvbicpID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLl9mb2xsb3dQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2dlb2xvY2F0aW9uLmZvbGxvd1Bvc2l0aW9uJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvbGxvd1Bvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvbGxvd1Bvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9sbG93UG9zaXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXA6IE1hcEJhc2UsXHJcbiAgICBwcml2YXRlIG9wdGlvbnM/OiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZT86IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlPzogQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5ID0gbmV3IE92ZXJsYXkodGhpcy5tYXApO1xyXG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPVxyXG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmZvbGxvd1Bvc2l0aW9uXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZm9sbG93UG9zaXRpb25cclxuICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuX2J1ZmZlciA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYnVmZmVyID8gdGhpcy5vcHRpb25zLmJ1ZmZlciA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2FjY3VyYWN5VGhyZXNob2xkID1cclxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5hY2N1cmFjeVRocmVzaG9sZFxyXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXHJcbiAgICAgICAgOiA1MDAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIG9yIHJlbW92ZSB0aGlzIGNvbnRyb2xsZXIgdG8vZnJvbSBhIG1hcC5cclxuICAgKiBAcGFyYW0gbWFwIE9MIE1hcFxyXG4gICAqL1xyXG4gIHNldE9sTWFwKG9sTWFwOiBPbE1hcCB8IHVuZGVmaW5lZCkge1xyXG4gICAgc3VwZXIuc2V0T2xNYXAob2xNYXApO1xyXG4gICAgdGhpcy5zZXR1cE9ic2VydmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVHZW9sb2NhdGlvbkZlYXR1cmVzKCkge1xyXG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb24pO1xyXG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb24pO1xyXG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3kpO1xyXG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcclxuICB9XHJcblxyXG4gIHNldHVwT2JzZXJ2ZXJzKCkge1xyXG4gICAgdGhpcy50cmFja2luZyQuc3Vic2NyaWJlKCh0cmFja2luZykgPT4ge1xyXG4gICAgICBpZiAodHJhY2tpbmcpIHtcclxuICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVHZW9sb2NhdGlvbkZlYXR1cmVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2VvbG9jYXRpb24gPSBuZXcgb2xHZW9sb2NhdGlvbih7XHJcbiAgICAgIC8vIGVuYWJsZUhpZ2hBY2N1cmFjeSBtdXN0IGJlIHNldCB0byB0cnVlIHRvIGhhdmUgdGhlIGhlYWRpbmcgdmFsdWUuXHJcbiAgICAgIHRyYWNraW5nT3B0aW9uczoge1xyXG4gICAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogdHJ1ZSxcclxuICAgICAgICBtYXhpbXVtQWdlOiAxMDAwMCxcclxuICAgICAgICB0aW1lb3V0OiA2MDAwMDBcclxuICAgICAgfSxcclxuICAgICAgcHJvamVjdGlvbjogdGhpcy5vcHRpb25zLnByb2plY3Rpb25cclxuICAgIH0pO1xyXG4gICAgbGV0IHRyYWNraW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxyXG4gICAgICB0aGlzLmVtaXNzaW9uSW50ZXJ2YWxTZWNvbmRzJFxyXG4gICAgICAgIC5waXBlKHN3aXRjaE1hcCgodmFsdWUpID0+IGludGVydmFsKHZhbHVlICogMTAwMCkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRyYWNraW5nID09PSB0aGlzLnRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRyYWNraW5nID0gdGhpcy50cmFja2luZztcclxuICAgICAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZ2VvbG9jYXRpb24ub24oJ2NoYW5nZScsIChldnQpID0+IHtcclxuICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKGZhbHNlLCBmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFycm93RmVhdHVyZU9yaWVudGF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XHJcbiAgICBjb25zdCBwb3NpdGlvbjQzMjYgPSBvbHByb2oudHJhbnNmb3JtKFxyXG4gICAgICBwb3NpdGlvbi5wb3NpdGlvbixcclxuICAgICAgcG9zaXRpb24ucHJvamVjdGlvbixcclxuICAgICAgJ0VQU0c6NDMyNidcclxuICAgICk7XHJcbiAgICBpZiAoIXRoaXMubGFzdFBvc2l0aW9uKSB7XHJcbiAgICAgIHRoaXMubGFzdFBvc2l0aW9uID0geyBjb29yZGluYXRlczogcG9zaXRpb240MzI2LCBkYXRlVGltZTogbmV3IERhdGUoKSB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBhcnJvd0ZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb25cclxuICAgICk7XHJcbiAgICBjb25zdCBpc01vdmluZyA9XHJcbiAgICAgIHBvc2l0aW9uPy5zcGVlZCA+IDEuMjUgJiZcclxuICAgICAgdGhpcy5kaXN0YW5jZUJldHdlZW5Qb2ludHModGhpcy5sYXN0UG9zaXRpb24uY29vcmRpbmF0ZXMsIHBvc2l0aW9uNDMyNikgPlxyXG4gICAgICAgIDAuMDAzO1xyXG4gICAgaWYgKHBvc2l0aW9uLmFjY3VyYWN5IDw9IHRoaXMuYWNjdXJhY3lUaHJlc2hvbGQgJiYgaXNNb3ZpbmcpIHtcclxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWFkaW5nIHVzaW5nIGN1cnJlbnQgcG9zaXRpb24gYW5kIGxhc3QgcmVjb3JkZWRcclxuICAgICAgLy8gYmVjYXVzZSBvbCBoZWFkaW5nIG5vdCByZXR1cm5pbmcgcmlnaHQgdmFsdWVcclxuICAgICAgdmFyIGR4ID0gcG9zaXRpb240MzI2WzFdIC0gdGhpcy5sYXN0UG9zaXRpb24uY29vcmRpbmF0ZXNbMV07XHJcbiAgICAgIHZhciBkeSA9IHBvc2l0aW9uNDMyNlswXSAtIHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICB2YXIgdGhldGEgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XHJcbiAgICAgIGlmICh0aGV0YSA8IDApIHRoZXRhID0gMiAqIE1hdGguUEkgKyB0aGV0YTtcclxuICAgICAgdGhpcy5hcnJvd1JvdGF0aW9uID0gdGhldGE7XHJcbiAgICAgIGlmIChhcnJvd0ZlYXR1cmUpIHtcclxuICAgICAgICBhcnJvd0ZlYXR1cmUuc2V0U3R5bGUodGhpcy5hcnJvd1N0eWxlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RQb3NpdGlvbiA9IHsgY29vcmRpbmF0ZXM6IHBvc2l0aW9uNDMyNiwgZGF0ZVRpbWU6IG5ldyBEYXRlKCkgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBhcnJvd0ZlYXR1cmUgJiZcclxuICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFBvc2l0aW9uLmRhdGVUaW1lLmdldFRpbWUoKSA+IDMwMDBcclxuICAgICAgKVxyXG4gICAgICAgIGhpZGVPbEZlYXR1cmUoYXJyb3dGZWF0dXJlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIGRpc3RhbmNlIGluIGttIGJldHdlZW4gY29vcmQxIGFuZCBjb29yZDJcclxuICAgKi9cclxuICBwcml2YXRlIGRpc3RhbmNlQmV0d2VlblBvaW50cyhjb29yZDE6IG51bWJlcltdLCBjb29yZDI6IG51bWJlcltdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBvbFNwaGVyZS5nZXREaXN0YW5jZShjb29yZDEsIGNvb3JkMikgLyAxMDAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE9uQ2hhbmdlZExpc3RlbmVyKGV2ZW50OiAoZ2VvOiBvbEdlb2xvY2F0aW9uKSA9PiBhbnkpIHtcclxuICAgIGxldCBsaXN0ZW5lciA9ICgpID0+IHtcclxuICAgICAgZXZlbnQodGhpcy5nZW9sb2NhdGlvbik7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi5vbignY2hhbmdlJywgbGlzdGVuZXIpO1xyXG4gICAgcmV0dXJuIGxpc3RlbmVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUNoYW5nZWRMaXN0ZW5lcihldmVudDogKCkgPT4gYW55KSB7XHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uLnVuKCdjaGFuZ2UnLCBldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlR2VvbG9jYXRpb25PcHRpb25zKG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XHJcbiAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdG9kbyBtYXliZSBhIGRlZGljYXRlZCBpbnRlcmZhY2UgZm9yIGdlb2xvY2F0aW9uIHNob3VsZCBiZSBkZWZpbmVkIGluc3RlYWQgb2YgcHV0dGluZyB0aGVzZSBpbnNpZGUgdGhlIG1hcHZpZXdvcHRpb25zP1xyXG4gICAgbGV0IHRyYWNraW5nID0gb3B0aW9ucy5nZW9sb2NhdGU7XHJcbiAgICBsZXQgZm9sbG93UG9zaXRpb24gPSBvcHRpb25zLmFsd2F5c1RyYWNraW5nO1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkVHJhY2tpbmcgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcclxuICAgICAgICAnZ2VvbG9jYXRpb24udHJhY2tpbmcnXHJcbiAgICAgICkgYXMgYm9vbGVhbjtcclxuICAgICAgaWYgKHN0b3JlZFRyYWNraW5nICE9PSBudWxsICYmIHN0b3JlZFRyYWNraW5nICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0cmFja2luZyA9IHN0b3JlZFRyYWNraW5nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdG9yZWRGb2xsb3dQb3NpdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICdnZW9sb2NhdGlvbi5mb2xsb3dQb3NpdGlvbidcclxuICAgICAgKSBhcyBib29sZWFuO1xyXG4gICAgICBpZiAoc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IG51bGwgJiYgc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGZvbGxvd1Bvc2l0aW9uID0gc3RvcmVkRm9sbG93UG9zaXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudHJhY2tpbmcgPSB0cmFja2luZztcclxuICAgIHRoaXMuZm9sbG93UG9zaXRpb24gPSBmb2xsb3dQb3NpdGlvbjtcclxuICAgIHRoaXMuYnVmZmVyID0gb3B0aW9ucy5idWZmZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZWFyZG93biBhbnkgb2JzZXJ2ZXJzXHJcbiAgICovXHJcbiAgdGVhcmRvd25PYnNlcnZlcnMoKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zJCQubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuICAgIHN1cGVyLnRlYXJkb3duT2JzZXJ2ZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBwb3NpdGlvbiBjaGFuZ2UsIGdldCB0aGUgcG9zaXRpb24sIHNob3cgaXQgb24gdGhlIG1hcCBhbmQgcmVjb3JkIGl0LlxyXG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgTWFwIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblBvc2l0aW9uQ2hhbmdlKFxyXG4gICAgZW1pdEV2ZW50OiBib29sZWFuID0gZmFsc2UsXHJcbiAgICB6b29tVG86IGJvb2xlYW4gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgaWYgKCF0aGlzLnRyYWNraW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGdlb2xvY2F0ZVByb3BlcnRpZXMgPSB0aGlzLmdlb2xvY2F0aW9uLmdldFByb3BlcnRpZXMoKTtcclxuXHJcbiAgICBpZiAoZ2VvbG9jYXRlUHJvcGVydGllcy5hY2N1cmFjeSA+IHRoaXMuYWNjdXJhY3lUaHJlc2hvbGQpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdQb29yIGdlb2xvY2F0aW9uIGFjY3VyYWN5LiBObyBwb3NpdGlvbiBhcmUgc3RvcmVkL3Nob3duJyk7XHJcbiAgICAgIHRoaXMucG9zaXRpb24kLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlID0ge1xyXG4gICAgICBwb3NpdGlvbjogZ2VvbG9jYXRlUHJvcGVydGllcy5wb3NpdGlvbixcclxuICAgICAgcHJvamVjdGlvbjogdGhpcy5nZW9sb2NhdGlvbi5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpLFxyXG4gICAgICBhY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy5hY2N1cmFjeSxcclxuICAgICAgYWx0aXR1ZGU6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWx0aXR1ZGUsXHJcbiAgICAgIGFsdGl0dWRlQWNjdXJhY3k6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWx0aXR1ZGVBY2N1cmFjeSxcclxuICAgICAgaGVhZGluZzogZ2VvbG9jYXRlUHJvcGVydGllcy5oZWFkaW5nLFxyXG4gICAgICBzcGVlZDogZ2VvbG9jYXRlUHJvcGVydGllcy5zcGVlZCxcclxuICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLnRyYWNraW5nT3B0aW9uc1xyXG4gICAgICAgID8uZW5hYmxlSGlnaEFjY3VyYWN5XHJcbiAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgOiBmYWxzZSxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24ocG9zaXRpb24pO1xyXG4gICAgdGhpcy5oYW5kbGVWaWV3RnJvbUZlYXR1cmVzKHBvc2l0aW9uLCB6b29tVG8pO1xyXG4gICAgaWYgKGVtaXRFdmVudCkge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmVhdHVyZUJ5VHlwZSh0eXBlOiBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlKTogb2xGZWF0dXJlPEdlb21ldHJ5PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlRmVhdHVyZUJ5VHlwZSh0eXBlOiBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlKSB7XHJcbiAgICBjb25zdCBmZWF0dXJlQnlJZCA9XHJcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5Py5kYXRhU291cmNlLm9sLmdldEZlYXR1cmVCeUlkKHR5cGUpO1xyXG4gICAgaWYgKGZlYXR1cmVCeUlkKSB7XHJcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmRhdGFTb3VyY2Uub2wucmVtb3ZlRmVhdHVyZShmZWF0dXJlQnlJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUZlYXR1cmVDcmVhdGlvbihwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSkge1xyXG4gICAgaWYgKCFwb3NpdGlvbiB8fCAhcG9zaXRpb24ucG9zaXRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9zaXRpb25HZW9tZXRyeSA9IG5ldyBQb2ludChwb3NpdGlvbi5wb3NpdGlvbik7XHJcbiAgICBjb25zdCBhY2N1cmFjeUdlb21ldHJ5ID0gZnJvbUNpcmNsZShcclxuICAgICAgbmV3IE9sQ2lyY2xlKHBvc2l0aW9uLnBvc2l0aW9uLCBwb3NpdGlvbi5hY2N1cmFjeSB8fCAwKVxyXG4gICAgKTtcclxuICAgIGxldCBwb3NpdGlvbkZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25cclxuICAgICk7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlQXJyb3cgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb25cclxuICAgICk7XHJcbiAgICBsZXQgYWNjdXJhY3lGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5XHJcbiAgICApO1xyXG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlRXhpc3RzID0gcG9zaXRpb25GZWF0dXJlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlQXJyb3dFeGlzdHMgPSBwb3NpdGlvbkZlYXR1cmVBcnJvdyA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IGFjY3VyYWN5RmVhdHVyZUV4aXN0cyA9IGFjY3VyYWN5RmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmICghcG9zaXRpb25GZWF0dXJlQXJyb3dFeGlzdHMpIHtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3cgPSBuZXcgb2xGZWF0dXJlPFBvaW50Pih7XHJcbiAgICAgICAgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnlcclxuICAgICAgfSk7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LnNldElkKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb24pO1xyXG4gICAgICBoaWRlT2xGZWF0dXJlKHBvc2l0aW9uRmVhdHVyZUFycm93KTtcclxuICAgIH1cclxuICAgIGlmICghcG9zaXRpb25GZWF0dXJlRXhpc3RzKSB7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHsgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnkgfSk7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZS5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uKTtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlLnNldFN0eWxlKHRoaXMucG9zaXRpb25GZWF0dXJlU3R5bGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFhY2N1cmFjeUZlYXR1cmVFeGlzdHMpIHtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlID0gbmV3IG9sRmVhdHVyZTxQb2x5Z29uPih7IGdlb21ldHJ5OiBhY2N1cmFjeUdlb21ldHJ5IH0pO1xyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeSk7XHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZS5zZXRTdHlsZSh0aGlzLmFjY3VyYWN5RmVhdHVyZVN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb25HZW9tZXRyeSkge1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVFeGlzdHNcclxuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZS5zZXRHZW9tZXRyeShwb3NpdGlvbkdlb21ldHJ5KVxyXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxyXG4gICAgICAgICAgICBwb3NpdGlvbkZlYXR1cmUsXHJcbiAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3dFeGlzdHNcclxuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZUFycm93LnNldEdlb21ldHJ5KHBvc2l0aW9uR2VvbWV0cnkpXHJcbiAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXHJcbiAgICAgICAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LFxyXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICk7XHJcbiAgICAgIHRoaXMudXBkYXRlQXJyb3dGZWF0dXJlT3JpZW50YXRpb24ocG9zaXRpb24pO1xyXG4gICAgICBhY2N1cmFjeUZlYXR1cmVFeGlzdHNcclxuICAgICAgICA/IGFjY3VyYWN5RmVhdHVyZS5zZXRHZW9tZXRyeShhY2N1cmFjeUdlb21ldHJ5KVxyXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxyXG4gICAgICAgICAgICBhY2N1cmFjeUZlYXR1cmUsXHJcbiAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmJ1ZmZlcikge1xyXG4gICAgICAgIGxldCBidWZmZXJGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXJcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGJ1ZmZlckZlYXR1cmVFeGlzdHMgPSBidWZmZXJGZWF0dXJlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGJ1ZmZlckdlb21ldHJ5ID0gbmV3IE9sQ2lyY2xlKFxyXG4gICAgICAgICAgcG9zaXRpb24ucG9zaXRpb24sXHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlci5idWZmZXJSYWRpdXNcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghYnVmZmVyRmVhdHVyZUV4aXN0cykge1xyXG4gICAgICAgICAgYnVmZmVyRmVhdHVyZSA9IG5ldyBvbEZlYXR1cmUoYnVmZmVyR2VvbWV0cnkpO1xyXG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XHJcbiAgICAgICAgICBidWZmZXJGZWF0dXJlLnNldFN0eWxlKHRoaXMucG9zaXRpb25GZWF0dXJlU3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBidWZmZXJGZWF0dXJlLnNldFN0eWxlKHRoaXMuYnVmZmVyU3R5bGUpO1xyXG4gICAgICAgIGJ1ZmZlckZlYXR1cmVFeGlzdHNcclxuICAgICAgICAgID8gYnVmZmVyRmVhdHVyZS5zZXRHZW9tZXRyeShidWZmZXJHZW9tZXRyeSlcclxuICAgICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxyXG4gICAgICAgICAgICAgIGJ1ZmZlckZlYXR1cmUsXHJcbiAgICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlVmlld0Zyb21GZWF0dXJlcyhcclxuICAgIHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlLFxyXG4gICAgem9vbVRvOiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCBwb3NpdGlvbkZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25cclxuICAgICk7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlQXJyb3cgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb25cclxuICAgICk7XHJcbiAgICBsZXQgYWNjdXJhY3lGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5XHJcbiAgICApO1xyXG4gICAgbGV0IGJ1ZmZlckZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xyXG4gICAgY29uc3QgZmVhdHVyZXMgPSBbXHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSxcclxuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3csXHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZSxcclxuICAgICAgYnVmZmVyRmVhdHVyZVxyXG4gICAgXS5maWx0ZXIoKGYpID0+IGYpO1xyXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmVhdHVyZXNFeHRlbnQgPSBjb21wdXRlT2xGZWF0dXJlc0V4dGVudChcclxuICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICB0aGlzLm1hcC52aWV3UHJvamVjdGlvblxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBlZGdlUmF0aW9zID1cclxuICAgICAgICBwb3NpdGlvbj8uc3BlZWQgPiAxMi41XHJcbiAgICAgICAgICA/IFswLjI1LCAwLjI1LCAwLjI1LCAwLjI1XVxyXG4gICAgICAgICAgOiBbMC4xNSwgMC4xLCAwLjEsIDAuMV07XHJcbiAgICAgIGNvbnN0IGFyZU91dE9mVmlldyA9IGZlYXR1cmVzQXJlT3V0T2ZWaWV3KFxyXG4gICAgICAgIHRoaXMubWFwLmdldEV4dGVudCgpLFxyXG4gICAgICAgIGZlYXR1cmVzRXh0ZW50LFxyXG4gICAgICAgIGVkZ2VSYXRpb3NcclxuICAgICAgKTtcclxuICAgICAgbGV0IG1vdGlvbiA9XHJcbiAgICAgICAgdGhpcy5mb2xsb3dQb3NpdGlvbiAmJiBhcmVPdXRPZlZpZXdcclxuICAgICAgICAgID8gRmVhdHVyZU1vdGlvbi5Nb3ZlXHJcbiAgICAgICAgICA6IEZlYXR1cmVNb3Rpb24uTm9uZTtcclxuICAgICAgaWYgKHpvb21Ubykge1xyXG4gICAgICAgIG1vdGlvbiA9IEZlYXR1cmVNb3Rpb24uWm9vbTtcclxuICAgICAgfVxyXG4gICAgICBtb3Rpb24gIT09IEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgID8gbW92ZVRvT2xGZWF0dXJlcyh0aGlzLm1hcC52aWV3Q29udHJvbGxlciwgZmVhdHVyZXMsIG1vdGlvbilcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -2,4 +2,4 @@ export * from './controller';
|
|
|
2
2
|
export * from './geolocation';
|
|
3
3
|
export * from './geolocation.interface';
|
|
4
4
|
export * from './view';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9sb2NhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xuIl19
|
|
@@ -358,4 +358,4 @@ export class MapViewController extends MapController {
|
|
|
358
358
|
this.state$.next(state);
|
|
359
359
|
}
|
|
360
360
|
}
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWtFOUI7SUFqRXBCOztPQUVHO0lBQ00sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0gsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ0gsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUVyQjs7T0FFRztJQUNILGtCQUFrQixDQUFZO0lBRTlCOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO0lBRTlFOztPQUVHO0lBQ0ssUUFBUSxDQUFl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QUM7WUFDbkMsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XHJcbmltcG9ydCBPbE1hcEV2ZW50IGZyb20gJ29sL01hcEV2ZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xyXG5pbXBvcnQgT2xWaWV3IGZyb20gJ29sL1ZpZXcnO1xyXG5pbXBvcnQgKiBhcyBvbGVhc2luZyBmcm9tICdvbC9lYXNpbmcnO1xyXG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcFZpZXdBY3Rpb24gfSBmcm9tICcuLi9tYXAuZW51bXMnO1xyXG5pbXBvcnQgeyBNYXBFeHRlbnQsIE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4uL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBnZXRTY2FsZUZyb21SZXNvbHV0aW9uLCB2aWV3U3RhdGVzQXJlRXF1YWwgfSBmcm9tICcuLi9tYXAudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld0NvbnRyb2xsZXJPcHRpb25zIHtcclxuICBzdGF0ZUhpc3Rvcnk6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNYXBWaWV3Q29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcm90YXRpb24gaW4gcmFkaWFuc1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJvdGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCByZXNvbHV0aW9uXHJcbiAgICovXHJcbiAgcmVzb2x1dGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBzdGF0ZVxyXG4gICAqL1xyXG4gIHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwVmlld1N0YXRlPih1bmRlZmluZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBWaWV3IFBhZGRpbmdcclxuICAgKiBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgKi9cclxuICBwYWRkaW5nID0gWzAsIDAsIDAsIDBdO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggem9vbSBhZnRlciBzZXQgZXh0ZW50XHJcbiAgICovXHJcbiAgbWF4Wm9vbU9uRXh0ZW50ID0gMTk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBleHRlbnQgcG9zc2libGUgd2hlbiB6b29taW5nXHJcbiAgICovXHJcbiAgbWF4TGF5ZXJab29tRXh0ZW50OiBNYXBFeHRlbnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQgPSBuZXcgU3ViamVjdDx7IGV4dGVudDogTWFwRXh0ZW50OyBhY3Rpb246IE1hcFZpZXdBY3Rpb24gfT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBtb3ZlbWVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0ZXM6IE1hcFZpZXdTdGF0ZVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgc3RhdGUgaW5kZXhcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgY29udHJvbGxlciBzaG91bGQga2VlcCB0aGUgdmlldydzIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBnZXQgc3RhdGVIaXN0b3J5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyA/IHRoaXMub3B0aW9ucy5zdGF0ZUhpc3RvcnkgPT09IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9MIFZpZXdcclxuICAgKi9cclxuICBnZXQgb2xWaWV3KCk6IE9sVmlldyB7XHJcbiAgICByZXR1cm4gdGhpcy5vbE1hcC5nZXRWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM/OiBNYXBWaWV3Q29udHJvbGxlck9wdGlvbnMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWRkaW5nKHBhZGRpbmc6IHtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIGJvdHRvbT86IG51bWJlcjtcclxuICAgIGxlZnQ/OiBudW1iZXI7XHJcbiAgICByaWdodD86IG51bWJlcjtcclxuICB9KSB7XHJcbiAgICAvLyBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgIGlmIChwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnRvcCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMF0gPSBwYWRkaW5nLnRvcDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLnJpZ2h0IHx8IHBhZGRpbmcucmlnaHQgPT09IDApIHtcclxuICAgICAgdGhpcy5wYWRkaW5nWzFdID0gcGFkZGluZy5yaWdodDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmJvdHRvbSB8fCBwYWRkaW5nLmJvdHRvbSA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMl0gPSBwYWRkaW5nLmJvdHRvbTtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmxlZnQgfHwgcGFkZGluZy5sZWZ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGFkZGluZ1szXSA9IHBhZGRpbmcubGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcclxuICAgKi9cclxuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcclxuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcclxuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmUgbW92ZSBtb3ZlZW5kIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBzZXR1cE9ic2VydmVycygpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlSGlzdG9yeSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLm9ic2VydmVyS2V5cy5wdXNoKFxyXG4gICAgICAgIHRoaXMub2xNYXAub24oJ21vdmVlbmQnLCAoZXZlbnQ6IE9sTWFwRXZlbnQpID0+XHJcbiAgICAgICAgICB0aGlzLm9uTW92ZUVuZChldmVudClcclxuICAgICAgICApIGFzIEV2ZW50c0tleVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZXh0ZW50JCQgPSB0aGlzLmV4dGVudCRcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1KSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHsgZXh0ZW50OiBNYXBFeHRlbnQ7IGFjdGlvbjogTWFwVmlld0FjdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFeHRlbnQodmFsdWUuZXh0ZW50LCB2YWx1ZS5hY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG1vbml0b3JSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2JzZXJ2ZXJLZXlzLnB1c2goXHJcbiAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLm9uKCdjaGFuZ2U6cm90YXRpb24nLCAoZXZ0OiBPYmplY3RFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm90YXRpb24kLm5leHQoZXZ0LnRhcmdldC5nZXRSb3RhdGlvbigpKTtcclxuICAgICAgfSkgYXMgRXZlbnRzS2V5XHJcbiAgICApO1xyXG4gICAgdGhpcy5yb3RhdGlvbiQubmV4dCh0aGlzLmdldFJvdGF0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xyXG4gICAqL1xyXG4gIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xyXG4gICAgc3VwZXIudGVhcmRvd25PYnNlcnZlcnMoKTtcclxuICAgIGlmICh0aGlzLmV4dGVudCQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5leHRlbnQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmV4dGVudCQkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB2aWV3J3MgT0wgcHJvamVjdGlvblxyXG4gICAqIEByZXR1cm5zIE9MIHByb2plY3Rpb25cclxuICAgKi9cclxuICBnZXRPbFByb2plY3Rpb24oKTogT2xQcm9qZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRQcm9qZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbWFwIHZpZXcgY2VudGVyXHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBDZW50ZXJcclxuICAgKi9cclxuICBnZXRDZW50ZXIocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl0ge1xyXG4gICAgbGV0IGNlbnRlciA9IHRoaXMub2xWaWV3LmdldENlbnRlcigpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICBpZiAocHJvamVjdGlvbiAmJiBjZW50ZXIpIHtcclxuICAgICAgY2VudGVyID0gb2xwcm9qLnRyYW5zZm9ybShjZW50ZXIsIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCksIHByb2plY3Rpb24pIGFzIFtcclxuICAgICAgICBudW1iZXIsXHJcbiAgICAgICAgbnVtYmVyXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHZpZXcgZXh0ZW50XHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBFeHRlbnRcclxuICAgKi9cclxuICBnZXRFeHRlbnQocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IE1hcEV4dGVudCB7XHJcbiAgICBsZXQgZXh0ZW50ID0gdGhpcy5vbFZpZXcuY2FsY3VsYXRlRXh0ZW50KHRoaXMub2xNYXAuZ2V0U2l6ZSgpKTtcclxuICAgIGlmIChwcm9qZWN0aW9uICYmIGV4dGVudCkge1xyXG4gICAgICBleHRlbnQgPSBvbHByb2oudHJhbnNmb3JtRXh0ZW50KFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICB0aGlzLmdldE9sUHJvamVjdGlvbigpLFxyXG4gICAgICAgIHByb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBleHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVcclxuICAgKiBAcGFyYW0gZHBpIERvdCBwZXIgaW5jaGVzXHJcbiAgICogQHJldHVybnMgVmlldyBzY2FsZVxyXG4gICAqL1xyXG4gIGdldFNjYWxlKGRwaSA9IDk2KSB7XHJcbiAgICByZXR1cm4gZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbihcclxuICAgICAgdGhpcy5nZXRSZXNvbHV0aW9uKCksXHJcbiAgICAgIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCkuZ2V0VW5pdHMoKSxcclxuICAgICAgZHBpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHJlc29sdXRpb25cclxuICAgKiBAcmV0dXJucyBQcm9qZWN0aW9uIGRlbm9taW5hdG9yXHJcbiAgICovXHJcbiAgZ2V0UmVzb2x1dGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJlc29sdXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCB6b29tIGxldmVsXHJcbiAgICogQHJldHVybnMgWm9vbSBsZXZlbFxyXG4gICAqL1xyXG4gIGdldFpvb20oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMub2xWaWV3LmdldFpvb20oKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIGluXHJcbiAgICovXHJcbiAgem9vbUluKCkge1xyXG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIG91dFxyXG4gICAqL1xyXG4gIHpvb21PdXQoKSB7XHJcbiAgICB0aGlzLnpvb21Ubyh0aGlzLm9sVmlldy5nZXRab29tKCkgLSAxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFpvb20gdG8gc3BlY2lmaWMgem9vbSBsZXZlbFxyXG4gICAqIEBwYXJhbSB6b29tIFpvb20gbGV2ZWxcclxuICAgKi9cclxuICB6b29tVG8oem9vbTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9sVmlldy5jYW5jZWxBbmltYXRpb25zKCk7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgem9vbSxcclxuICAgICAgZHVyYXRpb246IDI1MCxcclxuICAgICAgZWFzaW5nOiBvbGVhc2luZy5lYXNlT3V0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gZXh0ZW50IGFmdGVyIGEgc2hvcnQgZGVsYXkgKDEwMG1zKSB1bmxlc3NcclxuICAgKiBhIG5ldyBtb3ZlbWVudCBnZXRzIHJlZ2lzdGVyZWQgaW4gdGhlIG1lYW50aW1lLlxyXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50IHRvIG1vdmUgdG9cclxuICAgKi9cclxuICBtb3ZlVG9FeHRlbnQoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xyXG4gICAgdGhpcy5leHRlbnQkLm5leHQoeyBleHRlbnQsIGFjdGlvbjogTWFwVmlld0FjdGlvbi5Nb3ZlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogWm9vbSB0byBleHRlbnQgYWZ0ZXIgYSBzaG9ydCBkZWxheSAoMTAwbXMpIHVubGVzc1xyXG4gICAqIGEgbmV3IG1vdmVtZW50IGdldHMgcmVnaXN0ZXJlZCBpbiB0aGUgbWVhbnRpbWUuXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnQgdG8gem9vbSB0b1xyXG4gICAqL1xyXG4gIHpvb21Ub0V4dGVudChleHRlbnQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgICB0aGlzLmV4dGVudCQubmV4dCh7IGV4dGVudCwgYWN0aW9uOiBNYXBWaWV3QWN0aW9uLlpvb20gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmlldyByb3RhdGlvblxyXG4gICAqIEByZXR1cm5zIFJvdGF0aW9uIGFuZ2xlIGluIHJhZGlhbnNcclxuICAgKi9cclxuICBnZXRSb3RhdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJvdGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0aGUgdmlldyByb3RhdGlvbiB0byAwXHJcbiAgICovXHJcbiAgcmVzZXRSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2xWaWV3LmFuaW1hdGUoeyByb3RhdGlvbjogMCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgcHJldmlvdXMgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIHByZXZpb3VzIHN0YXRlXHJcbiAgICovXHJcbiAgaGFzUHJldmlvdXNTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlcy5sZW5ndGggPiAxICYmIHRoaXMuc3RhdGVJbmRleCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKi9cclxuICBoYXNOZXh0U3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPCB0aGlzLnN0YXRlcy5sZW5ndGggLSAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgcHJldmlvdXMgdmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIHByZXZpb3VzU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNQcmV2aW91c1N0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgbmV4dCB2aWV3IHN0YXRlXHJcbiAgICovXHJcbiAgbmV4dFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzTmV4dFN0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBjbGVhclN0YXRlSGlzdG9yeSgpIHtcclxuICAgIHRoaXMuc3RhdGVzID0gW107XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSB0aGUgdmlldyB0byBpdCdzIGludGlhbCBzdGF0ZVxyXG4gICAqL1xyXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGVJbmRleCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gdGhlIGV4dGVudCByZXRyaWV2ZWQgZnJvbSB0aGUgc3RyZWFtXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEVpdGhlciB6b29tIG9yIG1vdmVcclxuICAgKiBAcGFyYW0gYW5pbWF0aW9uIFdpdGggb3Igd2l0aG91dCBhbmltYXRpb24gdG8gdGhlIHRhcmdldCBleHRlbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRFeHRlbnQoXHJcbiAgICBleHRlbnQ6IE1hcEV4dGVudCxcclxuICAgIGFjdGlvbjogTWFwVmlld0FjdGlvbixcclxuICAgIGFuaW1hdGlvbjogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGNvbnN0IG9sVmlldyA9IHRoaXMub2xWaWV3O1xyXG4gICAgb2xWaWV3LmNhbmNlbEFuaW1hdGlvbnMoKTtcclxuICAgIGNvbnN0IGR1cmF0aW9uID0gYW5pbWF0aW9uID8gNTAwIDogMDtcclxuICAgIGNvbnN0IHpvb20gPSBvbFZpZXcuZ2V0Wm9vbSgpO1xyXG5cclxuICAgIGNvbnN0IGZyb21DZW50ZXIgPSBvbFZpZXcuZ2V0Q2VudGVyKCk7XHJcbiAgICBjb25zdCB0b0NlbnRlciA9IFtcclxuICAgICAgZXh0ZW50WzBdICsgKGV4dGVudFsyXSAtIGV4dGVudFswXSkgLyAyLFxyXG4gICAgICBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDJcclxuICAgIF07XHJcbiAgICBjb25zdCBkaXN0Q2VudGVyID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzBdIC0gdG9DZW50ZXJbMF0sIDIpICtcclxuICAgICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzFdIC0gdG9DZW50ZXJbMV0sIDIpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZnJvbUV4dGVudCA9IG9sVmlldy5jYWxjdWxhdGVFeHRlbnQoKTtcclxuICAgIGNvbnN0IGZyb21TaXplID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tRXh0ZW50WzJdIC0gZnJvbUV4dGVudFswXSwgMikgK1xyXG4gICAgICAgIE1hdGgucG93KGZyb21FeHRlbnRbM10gLSBmcm9tRXh0ZW50WzFdLCAyKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRvU2l6ZSA9IE1hdGguc3FydChcclxuICAgICAgTWF0aC5wb3coZXh0ZW50WzJdIC0gZXh0ZW50WzBdLCAyKSArIE1hdGgucG93KGV4dGVudFszXSAtIGV4dGVudFsxXSwgMilcclxuICAgICk7XHJcbiAgICBjb25zdCBtb3lTaXplID0gKHRvU2l6ZSArIGZyb21TaXplKSAvIDI7XHJcbiAgICBjb25zdCB4U2l6ZSA9IGRpc3RDZW50ZXIgLyBtb3lTaXplO1xyXG5cclxuICAgIGNvbnN0IG1heFpvb20gPVxyXG4gICAgICBhY3Rpb24gPT09IE1hcFZpZXdBY3Rpb24uTW92ZSB8fCB6b29tID4gdGhpcy5tYXhab29tT25FeHRlbnRcclxuICAgICAgICA/IHpvb21cclxuICAgICAgICA6IHRoaXMubWF4Wm9vbU9uRXh0ZW50O1xyXG5cclxuICAgIG9sVmlldy5maXQoZXh0ZW50LCB7XHJcbiAgICAgIHNpemU6IHRoaXMub2xNYXAuZ2V0U2l6ZSgpLFxyXG4gICAgICBtYXhab29tLFxyXG4gICAgICBwYWRkaW5nOiB0aGlzLnBhZGRpbmcsXHJcbiAgICAgIGR1cmF0aW9uOiB4U2l6ZSA+IDQgPyAwIDogZHVyYXRpb24sXHJcbiAgICAgIGNhbGxiYWNrOiAoaXNGaW5pc2hlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmICghaXNGaW5pc2hlZCkge1xyXG4gICAgICAgICAgb2xWaWV3LmZpdChleHRlbnQsIHtcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5vbE1hcC5nZXRTaXplKCksXHJcbiAgICAgICAgICAgIG1heFpvb20sXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IHRoaXMucGFkZGluZyxcclxuICAgICAgICAgICAgZHVyYXRpb246IHhTaXplID4gNCA/IDAgOiBkdXJhdGlvblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZSBpbmRleFxyXG4gICAqIEBwYXJhbSBpbmRleCBTdGF0ZSBpbmRleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0U3RhdGVJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZXNbaW5kZXhdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZVxyXG4gICAqIEBwYXJhbSBzdGF0ZSBWaWV3IHN0YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTdGF0ZShzdGF0ZTogTWFwVmlld1N0YXRlKSB7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgcmVzb2x1dGlvbjogc3RhdGUucmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiBzdGF0ZS5jZW50ZXIsXHJcbiAgICAgIGR1cmF0aW9uOiAwXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1vdmUgZW5kLCBnZXQgdGhlIHZpZXcgc3RhdGUgYW5kIHJlY29yZCBpdC5cclxuICAgKiBAcGFyYW0gZXZlbnQgTWFwIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdmVFbmQoZXZlbnQ6IE9sTWFwRXZlbnQpIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLmdldFJlc29sdXRpb24oKTtcclxuICAgIGlmICh0aGlzLnJlc29sdXRpb24kLnZhbHVlICE9PSByZXNvbHV0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQubmV4dChyZXNvbHV0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGF0ZSA9IHtcclxuICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiB0aGlzLmdldENlbnRlcigpLFxyXG4gICAgICB6b29tOiB0aGlzLmdldFpvb20oKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zdGF0ZUhpc3RvcnkgPT09IHRydWUpIHtcclxuICAgICAgY29uc3Qgc3RhdGVJbmRleCA9IHRoaXMuc3RhdGVJbmRleDtcclxuICAgICAgY29uc3Qgc3RhdGVBdEluZGV4ID1cclxuICAgICAgICB0aGlzLnN0YXRlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlc1tzdGF0ZUluZGV4XTtcclxuICAgICAgaWYgKCF2aWV3U3RhdGVzQXJlRXF1YWwoc3RhdGUsIHN0YXRlQXRJbmRleCkpIHtcclxuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMuc3RhdGVzLnNsaWNlKDAsIHN0YXRlSW5kZXggKyAxKS5jb25jYXQoW3N0YXRlXSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZGV4ID0gdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWtFOUI7SUFqRXBCOztPQUVHO0lBQ00sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0gsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ0gsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUVyQjs7T0FFRztJQUNILGtCQUFrQixDQUFZO0lBRTlCOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO0lBRTlFOztPQUVHO0lBQ0ssUUFBUSxDQUFl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LEVBQUU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDckIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xyXG5pbXBvcnQgT2xNYXBFdmVudCBmcm9tICdvbC9NYXBFdmVudCc7XHJcbmltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcclxuaW1wb3J0IE9sVmlldyBmcm9tICdvbC9WaWV3JztcclxuaW1wb3J0ICogYXMgb2xlYXNpbmcgZnJvbSAnb2wvZWFzaW5nJztcclxuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcclxuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgT2xQcm9qZWN0aW9uIGZyb20gJ29sL3Byb2ovUHJvamVjdGlvbic7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBNYXBWaWV3QWN0aW9uIH0gZnJvbSAnLi4vbWFwLmVudW1zJztcclxuaW1wb3J0IHsgTWFwRXh0ZW50LCBNYXBWaWV3U3RhdGUgfSBmcm9tICcuLi9tYXAuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbiwgdmlld1N0YXRlc0FyZUVxdWFsIH0gZnJvbSAnLi4vbWFwLnV0aWxzJztcclxuaW1wb3J0IHsgTWFwQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcFZpZXdDb250cm9sbGVyT3B0aW9ucyB7XHJcbiAgc3RhdGVIaXN0b3J5OiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udHJvbGxlciB0byBoYW5kbGUgbWFwIHZpZXcgaW50ZXJhY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTWFwVmlld0NvbnRyb2xsZXIgZXh0ZW5kcyBNYXBDb250cm9sbGVyIHtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IHJvdGF0aW9uIGluIHJhZGlhbnNcclxuICAgKi9cclxuICByZWFkb25seSByb3RhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcmVzb2x1dGlvblxyXG4gICAqL1xyXG4gIHJlc29sdXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHVuZGVmaW5lZCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgc3RhdGVcclxuICAgKi9cclxuICBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcFZpZXdTdGF0ZT4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVmlldyBQYWRkaW5nXHJcbiAgICogVmFsdWVzIGluIHRoZSBhcnJheSBhcmUgdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0IHBhZGRpbmcuXHJcbiAgICovXHJcbiAgcGFkZGluZyA9IFswLCAwLCAwLCAwXTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHpvb20gYWZ0ZXIgc2V0IGV4dGVudFxyXG4gICAqL1xyXG4gIG1heFpvb21PbkV4dGVudCA9IDE5O1xyXG5cclxuICAvKipcclxuICAgKiBNYXggZXh0ZW50IHBvc3NpYmxlIHdoZW4gem9vbWluZ1xyXG4gICAqL1xyXG4gIG1heExheWVyWm9vbUV4dGVudDogTWFwRXh0ZW50O1xyXG5cclxuICAvKipcclxuICAgKiBFeHRlbnQgc3RyZWFtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHRlbnQkID0gbmV3IFN1YmplY3Q8eyBleHRlbnQ6IE1hcEV4dGVudDsgYWN0aW9uOiBNYXBWaWV3QWN0aW9uIH0+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgbW92ZW1lbnQgc3RyZWFtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHRlbnQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBIaXN0b3J5IG9mIHN0YXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGVzOiBNYXBWaWV3U3RhdGVbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBDdXJyZW50IHN0YXRlIGluZGV4XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0ZUluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB2aWV3IGNvbnRyb2xsZXIgc2hvdWxkIGtlZXAgdGhlIHZpZXcncyBzdGF0ZSBoaXN0b3J5XHJcbiAgICovXHJcbiAgZ2V0IHN0YXRlSGlzdG9yeSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgPyB0aGlzLm9wdGlvbnMuc3RhdGVIaXN0b3J5ID09PSB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPTCBWaWV3XHJcbiAgICovXHJcbiAgZ2V0IG9sVmlldygpOiBPbFZpZXcge1xyXG4gICAgcmV0dXJuIHRoaXMub2xNYXAuZ2V0VmlldygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zPzogTWFwVmlld0NvbnRyb2xsZXJPcHRpb25zKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFkZGluZyhwYWRkaW5nOiB7XHJcbiAgICB0b3A/OiBudW1iZXI7XHJcbiAgICBib3R0b20/OiBudW1iZXI7XHJcbiAgICBsZWZ0PzogbnVtYmVyO1xyXG4gICAgcmlnaHQ/OiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgLy8gVmFsdWVzIGluIHRoZSBhcnJheSBhcmUgdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0IHBhZGRpbmcuXHJcbiAgICBpZiAocGFkZGluZy50b3AgfHwgcGFkZGluZy50b3AgPT09IDApIHtcclxuICAgICAgdGhpcy5wYWRkaW5nWzBdID0gcGFkZGluZy50b3A7XHJcbiAgICB9XHJcbiAgICBpZiAocGFkZGluZy5yaWdodCB8fCBwYWRkaW5nLnJpZ2h0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGFkZGluZ1sxXSA9IHBhZGRpbmcucmlnaHQ7XHJcbiAgICB9XHJcbiAgICBpZiAocGFkZGluZy5ib3R0b20gfHwgcGFkZGluZy5ib3R0b20gPT09IDApIHtcclxuICAgICAgdGhpcy5wYWRkaW5nWzJdID0gcGFkZGluZy5ib3R0b207XHJcbiAgICB9XHJcbiAgICBpZiAocGFkZGluZy5sZWZ0IHx8IHBhZGRpbmcubGVmdCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbM10gPSBwYWRkaW5nLmxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgb3IgcmVtb3ZlIHRoaXMgY29udHJvbGxlciB0by9mcm9tIGEgbWFwLlxyXG4gICAqIEBwYXJhbSBtYXAgT0wgTWFwXHJcbiAgICovXHJcbiAgc2V0T2xNYXAob2xNYXA6IE9sTWFwIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzdXBlci5zZXRPbE1hcChvbE1hcCk7XHJcbiAgICB0aGlzLnNldHVwT2JzZXJ2ZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZlIG1vdmUgbW92ZWVuZCBhbmQgc3Vic2NyaWJlIHRvIHRoZSBleHRlbnQgc3RyZWFtXHJcbiAgICovXHJcbiAgc2V0dXBPYnNlcnZlcnMoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZUhpc3RvcnkgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5vYnNlcnZlcktleXMucHVzaChcclxuICAgICAgICB0aGlzLm9sTWFwLm9uKCdtb3ZlZW5kJywgKGV2ZW50OiBPbE1hcEV2ZW50KSA9PlxyXG4gICAgICAgICAgdGhpcy5vbk1vdmVFbmQoZXZlbnQpXHJcbiAgICAgICAgKSBhcyBFdmVudHNLZXlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmV4dGVudCQkID0gdGhpcy5leHRlbnQkXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiB7IGV4dGVudDogTWFwRXh0ZW50OyBhY3Rpb246IE1hcFZpZXdBY3Rpb24gfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZW50KHZhbHVlLmV4dGVudCwgdmFsdWUuYWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBtb25pdG9yUm90YXRpb24oKSB7XHJcbiAgICB0aGlzLm9ic2VydmVyS2V5cy5wdXNoKFxyXG4gICAgICB0aGlzLm9sTWFwLmdldFZpZXcoKS5vbignY2hhbmdlOnJvdGF0aW9uJywgKGV2dDogT2JqZWN0RXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLnJvdGF0aW9uJC5uZXh0KGV2dC50YXJnZXQuZ2V0Um90YXRpb24oKSk7XHJcbiAgICAgIH0pIGFzIEV2ZW50c0tleVxyXG4gICAgKTtcclxuICAgIHRoaXMucm90YXRpb24kLm5leHQodGhpcy5nZXRSb3RhdGlvbigpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlYXJkb3duIGFueSBvYnNlcnZlcnNcclxuICAgKi9cclxuICB0ZWFyZG93bk9ic2VydmVycygpIHtcclxuICAgIHN1cGVyLnRlYXJkb3duT2JzZXJ2ZXJzKCk7XHJcbiAgICBpZiAodGhpcy5leHRlbnQkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZXh0ZW50JCQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5leHRlbnQkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdmlldydzIE9MIHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBPTCBwcm9qZWN0aW9uXHJcbiAgICovXHJcbiAgZ2V0T2xQcm9qZWN0aW9uKCk6IE9sUHJvamVjdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vbFZpZXcuZ2V0UHJvamVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IG1hcCB2aWV3IGNlbnRlclxyXG4gICAqIEBwYXJhbSBwcm9qZWN0aW9uIE91dHB1dCBwcm9qZWN0aW9uXHJcbiAgICogQHJldHVybnMgQ2VudGVyXHJcbiAgICovXHJcbiAgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICAgIGxldCBjZW50ZXIgPSB0aGlzLm9sVmlldy5nZXRDZW50ZXIoKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG4gICAgaWYgKHByb2plY3Rpb24gJiYgY2VudGVyKSB7XHJcbiAgICAgIGNlbnRlciA9IG9scHJvai50cmFuc2Zvcm0oY2VudGVyLCB0aGlzLmdldE9sUHJvamVjdGlvbigpLCBwcm9qZWN0aW9uKSBhcyBbXHJcbiAgICAgICAgbnVtYmVyLFxyXG4gICAgICAgIG51bWJlclxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNlbnRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCB2aWV3IGV4dGVudFxyXG4gICAqIEBwYXJhbSBwcm9qZWN0aW9uIE91dHB1dCBwcm9qZWN0aW9uXHJcbiAgICogQHJldHVybnMgRXh0ZW50XHJcbiAgICovXHJcbiAgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBNYXBFeHRlbnQge1xyXG4gICAgbGV0IGV4dGVudCA9IHRoaXMub2xWaWV3LmNhbGN1bGF0ZUV4dGVudCh0aGlzLm9sTWFwLmdldFNpemUoKSk7XHJcbiAgICBpZiAocHJvamVjdGlvbiAmJiBleHRlbnQpIHtcclxuICAgICAgZXh0ZW50ID0gb2xwcm9qLnRyYW5zZm9ybUV4dGVudChcclxuICAgICAgICBleHRlbnQsXHJcbiAgICAgICAgdGhpcy5nZXRPbFByb2plY3Rpb24oKSxcclxuICAgICAgICBwcm9qZWN0aW9uXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHNjYWxlXHJcbiAgICogQHBhcmFtIGRwaSBEb3QgcGVyIGluY2hlc1xyXG4gICAqIEByZXR1cm5zIFZpZXcgc2NhbGVcclxuICAgKi9cclxuICBnZXRTY2FsZShkcGkgPSA5Nikge1xyXG4gICAgcmV0dXJuIGdldFNjYWxlRnJvbVJlc29sdXRpb24oXHJcbiAgICAgIHRoaXMuZ2V0UmVzb2x1dGlvbigpLFxyXG4gICAgICB0aGlzLmdldE9sUHJvamVjdGlvbigpLmdldFVuaXRzKCksXHJcbiAgICAgIGRwaVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCByZXNvbHV0aW9uXHJcbiAgICogQHJldHVybnMgUHJvamVjdGlvbiBkZW5vbWluYXRvclxyXG4gICAqL1xyXG4gIGdldFJlc29sdXRpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRSZXNvbHV0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgem9vbSBsZXZlbFxyXG4gICAqIEByZXR1cm5zIFpvb20gbGV2ZWxcclxuICAgKi9cclxuICBnZXRab29tKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLm9sVmlldy5nZXRab29tKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogWm9vbSBpblxyXG4gICAqL1xyXG4gIHpvb21JbigpIHtcclxuICAgIHRoaXMuem9vbVRvKHRoaXMub2xWaWV3LmdldFpvb20oKSArIDEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogWm9vbSBvdXRcclxuICAgKi9cclxuICB6b29tT3V0KCkge1xyXG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpIC0gMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIHRvIHNwZWNpZmljIHpvb20gbGV2ZWxcclxuICAgKiBAcGFyYW0gem9vbSBab29tIGxldmVsXHJcbiAgICovXHJcbiAgem9vbVRvKHpvb206IG51bWJlcikge1xyXG4gICAgdGhpcy5vbFZpZXcuY2FuY2VsQW5pbWF0aW9ucygpO1xyXG4gICAgdGhpcy5vbFZpZXcuYW5pbWF0ZSh7XHJcbiAgICAgIHpvb20sXHJcbiAgICAgIGR1cmF0aW9uOiAyNTAsXHJcbiAgICAgIGVhc2luZzogb2xlYXNpbmcuZWFzZU91dFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIHRvIGV4dGVudCBhZnRlciBhIHNob3J0IGRlbGF5ICgxMDBtcykgdW5sZXNzXHJcbiAgICogYSBuZXcgbW92ZW1lbnQgZ2V0cyByZWdpc3RlcmVkIGluIHRoZSBtZWFudGltZS5cclxuICAgKiBAcGFyYW0gZXh0ZW50IEV4dGVudCB0byBtb3ZlIHRvXHJcbiAgICovXHJcbiAgbW92ZVRvRXh0ZW50KGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcclxuICAgIHRoaXMuZXh0ZW50JC5uZXh0KHsgZXh0ZW50LCBhY3Rpb246IE1hcFZpZXdBY3Rpb24uTW92ZSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFpvb20gdG8gZXh0ZW50IGFmdGVyIGEgc2hvcnQgZGVsYXkgKDEwMG1zKSB1bmxlc3NcclxuICAgKiBhIG5ldyBtb3ZlbWVudCBnZXRzIHJlZ2lzdGVyZWQgaW4gdGhlIG1lYW50aW1lLlxyXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50IHRvIHpvb20gdG9cclxuICAgKi9cclxuICB6b29tVG9FeHRlbnQoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xyXG4gICAgdGhpcy5leHRlbnQkLm5leHQoeyBleHRlbnQsIGFjdGlvbjogTWFwVmlld0FjdGlvbi5ab29tIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBjdXJyZW50IHZpZXcgcm90YXRpb25cclxuICAgKiBAcmV0dXJucyBSb3RhdGlvbiBhbmdsZSBpbiByYWRpYW5zXHJcbiAgICovXHJcbiAgZ2V0Um90YXRpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRSb3RhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdGhlIHZpZXcgcm90YXRpb24gdG8gMFxyXG4gICAqL1xyXG4gIHJlc2V0Um90YXRpb24oKSB7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHsgcm90YXRpb246IDAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB2aWV3IGhhcyBhIHByZXZpb3VzIHN0YXRlXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBoYXMgYSBwcmV2aW91cyBzdGF0ZVxyXG4gICAqL1xyXG4gIGhhc1ByZXZpb3VzU3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgdmlldyBoYXMgYSBuZXh0IHN0YXRlXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBoYXMgYSBuZXh0IHN0YXRlXHJcbiAgICovXHJcbiAgaGFzTmV4dFN0YXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVzLmxlbmd0aCA+IDEgJiYgdGhpcy5zdGF0ZUluZGV4IDwgdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3RvcmUgdGhlIHByZXZpb3VzIHZpZXcgc3RhdGVcclxuICAgKi9cclxuICBwcmV2aW91c1N0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXNTdGF0ZSgpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGVJbmRleCh0aGlzLnN0YXRlSW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3RvcmUgdGhlIG5leHQgdmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIG5leHRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmhhc05leHRTdGF0ZSgpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGVJbmRleCh0aGlzLnN0YXRlSW5kZXggKyAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBzdGF0ZSBoaXN0b3J5XHJcbiAgICovXHJcbiAgY2xlYXJTdGF0ZUhpc3RvcnkoKSB7XHJcbiAgICB0aGlzLnN0YXRlcyA9IFtdO1xyXG4gICAgdGhpcy5zdGF0ZUluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgdGhlIHZpZXcgdG8gaXQncyBpbnRpYWwgc3RhdGVcclxuICAgKi9cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlSW5kZXgoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3ZlIHRvIHRoZSBleHRlbnQgcmV0cmlldmVkIGZyb20gdGhlIHN0cmVhbVxyXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50XHJcbiAgICogQHBhcmFtIGFjdGlvbiBFaXRoZXIgem9vbSBvciBtb3ZlXHJcbiAgICogQHBhcmFtIGFuaW1hdGlvbiBXaXRoIG9yIHdpdGhvdXQgYW5pbWF0aW9uIHRvIHRoZSB0YXJnZXQgZXh0ZW50LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RXh0ZW50KFxyXG4gICAgZXh0ZW50OiBNYXBFeHRlbnQsXHJcbiAgICBhY3Rpb246IE1hcFZpZXdBY3Rpb24sXHJcbiAgICBhbmltYXRpb246IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBvbFZpZXcgPSB0aGlzLm9sVmlldztcclxuICAgIG9sVmlldy5jYW5jZWxBbmltYXRpb25zKCk7XHJcbiAgICBjb25zdCBkdXJhdGlvbiA9IGFuaW1hdGlvbiA/IDUwMCA6IDA7XHJcbiAgICBjb25zdCB6b29tID0gb2xWaWV3LmdldFpvb20oKTtcclxuXHJcbiAgICBjb25zdCBmcm9tQ2VudGVyID0gb2xWaWV3LmdldENlbnRlcigpO1xyXG4gICAgY29uc3QgdG9DZW50ZXIgPSBbXHJcbiAgICAgIGV4dGVudFswXSArIChleHRlbnRbMl0gLSBleHRlbnRbMF0pIC8gMixcclxuICAgICAgZXh0ZW50WzFdICsgKGV4dGVudFszXSAtIGV4dGVudFsxXSkgLyAyXHJcbiAgICBdO1xyXG4gICAgY29uc3QgZGlzdENlbnRlciA9IE1hdGguc3FydChcclxuICAgICAgTWF0aC5wb3coZnJvbUNlbnRlclswXSAtIHRvQ2VudGVyWzBdLCAyKSArXHJcbiAgICAgICAgTWF0aC5wb3coZnJvbUNlbnRlclsxXSAtIHRvQ2VudGVyWzFdLCAyKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZyb21FeHRlbnQgPSBvbFZpZXcuY2FsY3VsYXRlRXh0ZW50KCk7XHJcbiAgICBjb25zdCBmcm9tU2l6ZSA9IE1hdGguc3FydChcclxuICAgICAgTWF0aC5wb3coZnJvbUV4dGVudFsyXSAtIGZyb21FeHRlbnRbMF0sIDIpICtcclxuICAgICAgICBNYXRoLnBvdyhmcm9tRXh0ZW50WzNdIC0gZnJvbUV4dGVudFsxXSwgMilcclxuICAgICk7XHJcbiAgICBjb25zdCB0b1NpemUgPSBNYXRoLnNxcnQoXHJcbiAgICAgIE1hdGgucG93KGV4dGVudFsyXSAtIGV4dGVudFswXSwgMikgKyBNYXRoLnBvdyhleHRlbnRbM10gLSBleHRlbnRbMV0sIDIpXHJcbiAgICApO1xyXG4gICAgY29uc3QgbW95U2l6ZSA9ICh0b1NpemUgKyBmcm9tU2l6ZSkgLyAyO1xyXG4gICAgY29uc3QgeFNpemUgPSBkaXN0Q2VudGVyIC8gbW95U2l6ZTtcclxuXHJcbiAgICBjb25zdCBtYXhab29tID1cclxuICAgICAgYWN0aW9uID09PSBNYXBWaWV3QWN0aW9uLk1vdmUgfHwgem9vbSA+IHRoaXMubWF4Wm9vbU9uRXh0ZW50XHJcbiAgICAgICAgPyB6b29tXHJcbiAgICAgICAgOiB0aGlzLm1heFpvb21PbkV4dGVudDtcclxuXHJcbiAgICBvbFZpZXcuZml0KGV4dGVudCwge1xyXG4gICAgICBzaXplOiB0aGlzLm9sTWFwLmdldFNpemUoKSxcclxuICAgICAgbWF4Wm9vbSxcclxuICAgICAgcGFkZGluZzogdGhpcy5wYWRkaW5nLFxyXG4gICAgICBkdXJhdGlvbjogeFNpemUgPiA0ID8gMCA6IGR1cmF0aW9uLFxyXG4gICAgICBjYWxsYmFjazogKGlzRmluaXNoZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAoIWlzRmluaXNoZWQpIHtcclxuICAgICAgICAgIG9sVmlldy5maXQoZXh0ZW50LCB7XHJcbiAgICAgICAgICAgIHNpemU6IHRoaXMub2xNYXAuZ2V0U2l6ZSgpLFxyXG4gICAgICAgICAgICBtYXhab29tLFxyXG4gICAgICAgICAgICBwYWRkaW5nOiB0aGlzLnBhZGRpbmcsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiB4U2l6ZSA+IDQgPyAwIDogZHVyYXRpb25cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHZpZXcgc3RhdGUgaW5kZXhcclxuICAgKiBAcGFyYW0gaW5kZXggU3RhdGUgaW5kZXhcclxuICAgKi9cclxuICBwcml2YXRlIHNldFN0YXRlSW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGF0ZUluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGVzW2luZGV4XSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHZpZXcgc3RhdGVcclxuICAgKiBAcGFyYW0gc3RhdGUgVmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0U3RhdGUoc3RhdGU6IE1hcFZpZXdTdGF0ZSkge1xyXG4gICAgdGhpcy5vbFZpZXcuYW5pbWF0ZSh7XHJcbiAgICAgIHJlc29sdXRpb246IHN0YXRlLnJlc29sdXRpb24sXHJcbiAgICAgIGNlbnRlcjogc3RhdGUuY2VudGVyLFxyXG4gICAgICBkdXJhdGlvbjogMFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtb3ZlIGVuZCwgZ2V0IHRoZSB2aWV3IHN0YXRlIGFuZCByZWNvcmQgaXQuXHJcbiAgICogQHBhcmFtIGV2ZW50IE1hcCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Nb3ZlRW5kKGV2ZW50OiBPbE1hcEV2ZW50KSB7XHJcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5nZXRSZXNvbHV0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5yZXNvbHV0aW9uJC52YWx1ZSAhPT0gcmVzb2x1dGlvbikge1xyXG4gICAgICB0aGlzLnJlc29sdXRpb24kLm5leHQocmVzb2x1dGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhdGUgPSB7XHJcbiAgICAgIHJlc29sdXRpb24sXHJcbiAgICAgIGNlbnRlcjogdGhpcy5nZXRDZW50ZXIoKSxcclxuICAgICAgem9vbTogdGhpcy5nZXRab29tKClcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhdGVIaXN0b3J5ID09PSB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IHN0YXRlSW5kZXggPSB0aGlzLnN0YXRlSW5kZXg7XHJcbiAgICAgIGNvbnN0IHN0YXRlQXRJbmRleCA9XHJcbiAgICAgICAgdGhpcy5zdGF0ZXMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy5zdGF0ZXNbc3RhdGVJbmRleF07XHJcbiAgICAgIGlmICghdmlld1N0YXRlc0FyZUVxdWFsKHN0YXRlLCBzdGF0ZUF0SW5kZXgpKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnN0YXRlcy5zbGljZSgwLCBzdGF0ZUluZGV4ICsgMSkuY29uY2F0KFtzdGF0ZV0pO1xyXG4gICAgICAgIHRoaXMuc3RhdGVJbmRleCA9IHRoaXMuc3RhdGVzLmxlbmd0aCAtIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcclxuICB9XHJcbn1cclxuIl19
|