@igo2/geo 16.2.0 → 16.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +3 -3
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +64 -26
- package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +7 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- 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 +2 -2
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.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.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.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/index.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.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.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 +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +1 -1
- 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 +3 -3
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +3 -3
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions.component.mjs +3 -3
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
- package/esm2022/lib/directions/shared/store.mjs +1 -1
- package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
- package/esm2022/lib/download/shared/download.service.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw.component.mjs +3 -3
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +3 -3
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/index.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/loading-layer.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +1 -1
- 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 +1 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +3 -3
- package/esm2022/lib/geometry/shared/controls/draw.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.errors.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +6 -6
- 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.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.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 +3 -3
- package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +3 -3
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
- 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/info-section/info-section.component.mjs +3 -3
- package/esm2022/lib/map/map-center/map-center.component.mjs +3 -3
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +3 -3
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
- 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/index.mjs +1 -1
- package/esm2022/lib/map/shared/index.mjs +1 -1
- package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
- package/esm2022/lib/map/shared/map.interface.mjs +1 -1
- package/esm2022/lib/map/shared/map.utils.mjs +1 -1
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +1 -1
- package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
- package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +3 -3
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer.component.mjs +3 -3
- package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +1 -1
- package/esm2022/lib/offline/layerDB/index.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +1 -1
- package/esm2022/lib/offline/shared/geo-network.service.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.mjs +2 -2
- package/esm2022/lib/overlay/shared/overlay.service.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +3 -3
- package/esm2022/lib/print/print-form/print-form.component.mjs +3 -3
- package/esm2022/lib/print/shared/geopdf.mjs +1 -1
- package/esm2022/lib/print/shared/print.interface.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +1 -1
- package/esm2022/lib/print/shared/print.type.mjs +1 -1
- package/esm2022/lib/query/shared/query-search-source.mjs +1 -1
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +1 -1
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/query/shared/query.utils.mjs +1 -1
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results.component.mjs +3 -3
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +3 -3
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +3 -3
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.enums.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.utils.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/index.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +2 -2
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +1 -1
- package/esm2022/lib/style/index.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
- package/esm2022/lib/style/shared/font.enum.mjs +1 -1
- package/esm2022/lib/style/shared/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/style-list/style-list.module.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.service.mjs +1 -1
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
- package/esm2022/lib/style/style-service/draw-style.service.mjs +1 -1
- package/esm2022/lib/style/style-service/style.service.mjs +1 -1
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/utils/googleLinks.mjs +1 -1
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/osmLinks.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +1 -1
- package/esm2022/lib/wkt/shared/wkt.service.mjs +15 -15
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +1 -1
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
- package/fesm2022/igo2-geo.mjs +233 -190
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/capabilities.interface.d.ts +16 -0
- package/lib/overlay/shared/overlay.d.ts +1 -1
- package/package.json +5 -5
- package/src/geo-theme.scss +23 -23
- package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
- package/src/lib/catalog/catalog.theming.scss +5 -5
- package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
- package/src/lib/directions/directions.theming.scss +6 -6
- package/src/lib/draw/draw.theming.scss +32 -32
- package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
- package/src/lib/feature/feature.theming.scss +4 -4
- 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/lib/measure/measure.theming.scss +5 -5
- package/src/lib/measure/measurer/measurer.theming.scss +26 -26
- package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
- package/src/lib/search/search.theming.scss +7 -7
- package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
- package/src/lib/workspace/workspace.theming.scss +6 -6
- package/src/style/style.scss +1 -1
|
@@ -325,11 +325,11 @@ export class DirectionsComponent {
|
|
|
325
325
|
: ol.removeInteraction(interaction));
|
|
326
326
|
}
|
|
327
327
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DirectionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LanguageService }, { token: i2.DirectionsService }, { token: i3.SearchService }, { token: i4.QueryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DirectionsComponent, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$" }, ngImport: i0, template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"], dependencies: [{ kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: i7.DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomToActiveRoute$", "stopsStore", "routesFeatureStore", "stepFeatureStore"] }, { kind: "component", type: i8.DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepFeatureStore"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
|
|
328
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DirectionsComponent, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$" }, ngImport: i0, template: "<div class=\"directions-options\">\r\n <mat-slide-toggle\r\n [checked]=\"directionControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDirectionsControl($event.checked)\"\r\n >\r\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<igo-directions-buttons\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [contextUri]=\"contextUri\"\r\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n [stopsStore]=\"stopsStore\"\r\n></igo-directions-buttons>\r\n\r\n<igo-directions-inputs\r\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\r\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\r\n [projection]=\"projection\"\r\n [stopsFeatureStore]=\"stopsFeatureStore\"\r\n [stopsStore]=\"stopsStore\"\r\n [debounce]=\"debounce\"\r\n [length]=\"length\"\r\n></igo-directions-inputs>\r\n\r\n<igo-directions-results\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n></igo-directions-results>\r\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"], dependencies: [{ kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: i7.DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomToActiveRoute$", "stopsStore", "routesFeatureStore", "stepFeatureStore"] }, { kind: "component", type: i8.DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepFeatureStore"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
|
|
329
329
|
}
|
|
330
330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DirectionsComponent, decorators: [{
|
|
331
331
|
type: Component,
|
|
332
|
-
args: [{ selector: 'igo-directions', template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"] }]
|
|
332
|
+
args: [{ selector: 'igo-directions', template: "<div class=\"directions-options\">\r\n <mat-slide-toggle\r\n [checked]=\"directionControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDirectionsControl($event.checked)\"\r\n >\r\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<igo-directions-buttons\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [contextUri]=\"contextUri\"\r\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n [stopsStore]=\"stopsStore\"\r\n></igo-directions-buttons>\r\n\r\n<igo-directions-inputs\r\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\r\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\r\n [projection]=\"projection\"\r\n [stopsFeatureStore]=\"stopsFeatureStore\"\r\n [stopsStore]=\"stopsStore\"\r\n [debounce]=\"debounce\"\r\n [length]=\"length\"\r\n></igo-directions-inputs>\r\n\r\n<igo-directions-results\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n></igo-directions-results>\r\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"] }]
|
|
333
333
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.LanguageService }, { type: i2.DirectionsService }, { type: i3.SearchService }, { type: i4.QueryService }]; }, propDecorators: { contextUri: [{
|
|
334
334
|
type: Input
|
|
335
335
|
}], stopsStore: [{
|
|
@@ -349,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
349
349
|
}], zoomToActiveRoute$: [{
|
|
350
350
|
type: Input
|
|
351
351
|
}] } });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFN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SSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDcEMsUUFBUTtZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQzt3R0E5WVUsbUJBQW1COzRGQUFuQixtQkFBbUIsOFdDeERoQyx1L0JBZ0NBOzs0RkR3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjs2TkF3QmpCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRW50aXR5U3RvcmVXYXRjaGVyIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gJ29sL0NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcclxuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XHJcbmltcG9ydCB7IFNlbGVjdEV2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vU2VsZWN0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XHJcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xyXG5pbXBvcnQgeyBRdWVyeVNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS9zaGFyZWQvcXVlcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zZWFyY2gvc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIERpcmVjdGlvbk9wdGlvbnMsXHJcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcclxuICBTdG9wXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgYWRkRGlyZWN0aW9uVG9Sb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcmUsXHJcbiAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgdXBkYXRlU3RvcmVTb3J0aW5nXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgUm91dGVzRmVhdHVyZVN0b3JlLFxyXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNTdG9yZVxyXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XHJcblxyXG4gIHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgPSAnRVBTRzo0MzI2JztcclxuXHJcbiAgcHJpdmF0ZSB6b29tUm91dGUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdG9yZUNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZXNRdWVyaWVzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0U3RvcEludGVyYWN0aW9uOiBvbEludGVyYWN0aW9uLlNlbGVjdDtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVN0b3A6IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XHJcbiAgcHJpdmF0ZSBmb2N1c09uU3RvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNUcmFuc2xhdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcHJldmlvdXNTdG9wczogU3RvcFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjb250ZXh0VXJpOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcclxuICBASW5wdXQoKSBzdG9wc0ZlYXR1cmVTdG9yZTogU3RvcHNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcclxuICBASW5wdXQoKSBkZWJvdW5jZTogbnVtYmVyID0gMjAwO1xyXG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyID0gMjtcclxuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFsczogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB6b29tVG9BY3RpdmVSb3V0ZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkaXJlY3Rpb24gY29udHJvbCBpcyBhY3RpdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaW50ZXJhY3Rpb25zKCk6IG9sSW50ZXJhY3Rpb24uSW50ZXJhY3Rpb25bXSB7XHJcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlyZWN0aW9uc1NlcnZpY2U6IERpcmVjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGluaXRTdG9wc0ZlYXR1cmVTdG9yZSh0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XHJcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICAgICAgaW5pdFN0ZXBGZWF0dXJlU3RvcmUodGhpcy5zdGVwRmVhdHVyZVN0b3JlKTtcclxuICAgICAgdGhpcy5pbml0T2xJbnRlcmFjdGlvbigpO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnN0b3JlRW1wdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnpvb21Sb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmZyZWV6ZVN0b3JlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXHJcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxyXG4gICAgKTtcclxuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcclxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XHJcbiAgICApO1xyXG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xyXG4gICAgdGhpcy53YXRjaGVyID0gbmV3IEVudGl0eVN0b3JlV2F0Y2hlcih0aGlzLnN0b3BzU3RvcmUsIHRoaXMuY2RSZWYpO1xyXG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xyXG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcclxuICAgIHRoaXMubW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yQWN0aXZlUm91dGVab29tKCkge1xyXG4gICAgdGhpcy56b29tUm91dGUkJCA9IHRoaXMuem9vbVRvQWN0aXZlUm91dGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAgICAgLmFsbCgpXHJcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XHJcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgY29uc3Qgcm91dGVFeHRlbnQgPSBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcclxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdE9sSW50ZXJhY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XHJcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3AgPSBuZXcgb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGUoe1xyXG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3Aub24oJ3RyYW5zbGF0aW5nJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRlZW5kJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcclxuICAgICAgbGF5ZXJzOiBbdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGZpbHRlcjogKGZlYXR1cmUpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ3R5cGUnKSA9PT0gRGlyZWN0aW9uVHlwZS5Sb3V0ZSAmJlxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2FjdGl2ZScpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm91dGUub24oJ3NlbGVjdCcsIChldnQ6IFNlbGVjdEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvY3VzT25TdG9wID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxyXG4gICAgICAgICAgb2xQcm9qLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgKGV2dCBhcyBhbnkpLm1hcEJyb3dzZXJFdmVudC5jb29yZGluYXRlLFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uXHJcbiAgICAgICAgICApIGFzIFtudW1iZXIsIG51bWJlcl0sXHJcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhZGRlZFN0b3AgPSBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xyXG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xyXG4gICAgICAgIGFkZGVkU3RvcC5jb29yZGluYXRlcyA9IFtzZWxlY3RDb29yZGluYXRlc1swXSwgc2VsZWN0Q29vcmRpbmF0ZXNbMV1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZShzdG9wSW5wdXRIYXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgc3RvcElucHV0SGFzRm9jdXNcclxuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGVcclxuICAgICAgICApXHJcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xyXG4gICAgaWYgKGZlYXR1cmVzLmdldExlbmd0aCgpID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpcnN0RmVhdHVyZSA9IGZlYXR1cmVzLmdldEFycmF5KClbMF07XHJcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcElkID0gZmlyc3RGZWF0dXJlLmdldElkKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNsYXRpb25Db29yZGluYXRlcyA9IG9sUHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIGZpcnN0RmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCksXHJcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMucHJvamVjdGlvblxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcclxuICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICApO1xyXG4gICAgdHJhbnNsYXRlZFN0b3AuY29vcmRpbmF0ZXMgPSByb3VuZGVkQ29vcmQ7XHJcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcclxuICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGUodHJhbnNsYXRlZFN0b3ApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpIHtcclxuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxyXG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xyXG4gICAgICAgICAgYWRkU3RvcFRvU3RvcmUodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkID0gdGhpcy5zdG9wc1N0b3JlLmVudGl0aWVzJFxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BEaWZmKHN0b3BzKTtcclxuICAgICAgICB1cGRhdGVTdG9yZVNvcnRpbmcodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Um91dGVzKHRoaXMuaXNUcmFuc2xhdGluZyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XHJcbiAgICBjb25zdCBzaW1wbGlmaWVkU3RvcHMgPSBzdG9wcy5tYXAoKHN0b3A6IFN0b3ApID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XHJcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcclxuICAgICAgJ2Nvb3JkaW5hdGVzJ1xyXG4gICAgXSk7XHJcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcclxuICAgIGlmIChzdG9wSWRUb1Byb2Nlc3MpIHtcclxuICAgICAgc3RvcElkVG9Qcm9jZXNzLm1hcCgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcclxuICAgICAgICBpZiAoY2hhbmdlZFN0b3ApIHtcclxuICAgICAgICAgIGNvbnN0IHN0b3A6IFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KGNoYW5nZWRTdG9wLmlkKTtcclxuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XHJcbiAgICAgICAgICBpZiAoIXRlcm0gfHwgdGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzdHJpbmdUb0xvbkxhdChcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCByZXNlYXJjaGVzOiBSZXNlYXJjaFtdO1xyXG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5sb25MYXQpIHtcclxuICAgICAgICAgICAgaXNDb29yZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNlYXJjaGVzID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCh0ZXJtLCB7XHJcbiAgICAgICAgICAgIHNlYXJjaFR5cGU6ICdGZWF0dXJlJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpO1xyXG4gICAgICAgICAgY29uc3QgcmVxdWVzdHMkID0gcmVzZWFyY2hlcy5tYXAoKHJlcykgPT5cclxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5maWx0ZXIoKHIpID0+XHJcbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcclxuICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgIDogci5kYXRhLmdlb21ldHJ5XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hzJCQgPSByZXF1ZXN0cyQubWFwKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XHJcbiAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cclxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVzWzBdLnNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzLm1hcCgocikgPT4gci5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wLnNlYXJjaFByb3Bvc2Fscykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3AudHlwZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgIChpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQpXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZWRTb3VyY2UgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChzcCkgPT4gc3Auc291cmNlID09PSBzb3VyY2VcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZFNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlZFNvdXJjZS5yZXN1bHRzID0gcmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2Fscy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG1ldGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xyXG4gICAgY29uc3Qgc3RvcHMgPSB0aGlzLnN0b3BzU3RvcmUuYWxsKCk7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gc3RvcC5jb29yZGluYXRlcyk7XHJcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAuYWxsKClcclxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RvcHNTdG9yZS5nZXQoc3RvcEZlYXR1cmUucHJvcGVydGllcy5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVsZXRlKHN0b3BGZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgc3RvcHNXaXRob3V0Q29vcmRpbmF0ZXMgPSBzdG9wcy5maWx0ZXIoKHN0b3ApID0+ICFzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xyXG4gICAgICBjb25zdCBzdG9wRmVhdHVyZSA9IHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZ2V0KHN0b3AuaWQpO1xyXG4gICAgICBpZiAoc3RvcEZlYXR1cmUpIHtcclxuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZXMoaXNPdmVydmlldzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XHJcbiAgICAgIC5hbGwoKVxyXG4gICAgICAuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm91bmRlZENvb3JkaW5hdGVzID0gc3RvcHNXaXRoQ29vcmRpbmF0ZXMubWFwKChzdG9wKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgICBzdG9wLmNvb3JkaW5hdGVzLFxyXG4gICAgICAgIHRoaXMuY29vcmRSb3VuZGVkRGVjaW1hbHNcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHJvdW5kZWRDb29yZDtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcclxuICAgICAgb3ZlcnZpZXc6IHRydWUsXHJcbiAgICAgIHN0ZXBzOiBmYWxzZSxcclxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcclxuICAgICAgY29udGludWVfc3RyYWlnaHQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgY29uc3Qgcm91dGVSZXNwb25zZSA9IHRoaXMuZGlyZWN0aW9uc1NlcnZpY2Uucm91dGUoXHJcbiAgICAgIHJvdW5kZWRDb29yZGluYXRlcyxcclxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBpZiAocm91dGVSZXNwb25zZSkge1xyXG4gICAgICByb3V0ZVJlc3BvbnNlLm1hcCgocmVzKSA9PlxyXG4gICAgICAgIHRoaXMucm91dGVzUXVlcmllcyQkLnB1c2goXHJcbiAgICAgICAgICByZXMuc3Vic2NyaWJlKChkaXJlY3Rpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICAgICAgICBkaXJlY3Rpb25zLm1hcCgoZGlyZWN0aW9uKSA9PlxyXG4gICAgICAgICAgICAgIGFkZERpcmVjdGlvblRvUm91dGVzRmVhdHVyZVN0b3JlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTdG9wT3ZlcmxheShzdG9wOiBTdG9wKSB7XHJcbiAgICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZShcclxuICAgICAgc3RvcCxcclxuICAgICAgdGhpcy5zdG9wc1N0b3JlLFxyXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLFxyXG4gICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xyXG4gICAgY29uc3Qgb2wgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2w7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICBpc0FjdGl2ZVxyXG4gICAgICAgID8gb2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICAgICAgOiBvbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cbiAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJkaXJlY3Rpb25Db250cm9sSXNBY3RpdmVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1yZXN1bHRzXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1yZXN1bHRzPlxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFN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SSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDcEMsUUFBUTtZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQzt3R0E5WVUsbUJBQW1COzRGQUFuQixtQkFBbUIsOFdDeERoQyx1akNBZ0NBOzs0RkR3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjs2TkF3QmpCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRW50aXR5U3RvcmVXYXRjaGVyIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gJ29sL0NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcclxuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XHJcbmltcG9ydCB7IFNlbGVjdEV2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vU2VsZWN0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XHJcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xyXG5pbXBvcnQgeyBRdWVyeVNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS9zaGFyZWQvcXVlcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zZWFyY2gvc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIERpcmVjdGlvbk9wdGlvbnMsXHJcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcclxuICBTdG9wXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgYWRkRGlyZWN0aW9uVG9Sb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcmUsXHJcbiAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgdXBkYXRlU3RvcmVTb3J0aW5nXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgUm91dGVzRmVhdHVyZVN0b3JlLFxyXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNTdG9yZVxyXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XHJcblxyXG4gIHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgPSAnRVBTRzo0MzI2JztcclxuXHJcbiAgcHJpdmF0ZSB6b29tUm91dGUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdG9yZUNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZXNRdWVyaWVzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0U3RvcEludGVyYWN0aW9uOiBvbEludGVyYWN0aW9uLlNlbGVjdDtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVN0b3A6IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XHJcbiAgcHJpdmF0ZSBmb2N1c09uU3RvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNUcmFuc2xhdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcHJldmlvdXNTdG9wczogU3RvcFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjb250ZXh0VXJpOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcclxuICBASW5wdXQoKSBzdG9wc0ZlYXR1cmVTdG9yZTogU3RvcHNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcclxuICBASW5wdXQoKSBkZWJvdW5jZTogbnVtYmVyID0gMjAwO1xyXG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyID0gMjtcclxuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFsczogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB6b29tVG9BY3RpdmVSb3V0ZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkaXJlY3Rpb24gY29udHJvbCBpcyBhY3RpdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaW50ZXJhY3Rpb25zKCk6IG9sSW50ZXJhY3Rpb24uSW50ZXJhY3Rpb25bXSB7XHJcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlyZWN0aW9uc1NlcnZpY2U6IERpcmVjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGluaXRTdG9wc0ZlYXR1cmVTdG9yZSh0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XHJcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICAgICAgaW5pdFN0ZXBGZWF0dXJlU3RvcmUodGhpcy5zdGVwRmVhdHVyZVN0b3JlKTtcclxuICAgICAgdGhpcy5pbml0T2xJbnRlcmFjdGlvbigpO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnN0b3JlRW1wdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnpvb21Sb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmZyZWV6ZVN0b3JlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXHJcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxyXG4gICAgKTtcclxuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcclxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XHJcbiAgICApO1xyXG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xyXG4gICAgdGhpcy53YXRjaGVyID0gbmV3IEVudGl0eVN0b3JlV2F0Y2hlcih0aGlzLnN0b3BzU3RvcmUsIHRoaXMuY2RSZWYpO1xyXG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xyXG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcclxuICAgIHRoaXMubW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yQWN0aXZlUm91dGVab29tKCkge1xyXG4gICAgdGhpcy56b29tUm91dGUkJCA9IHRoaXMuem9vbVRvQWN0aXZlUm91dGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAgICAgLmFsbCgpXHJcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XHJcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgY29uc3Qgcm91dGVFeHRlbnQgPSBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcclxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdE9sSW50ZXJhY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XHJcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3AgPSBuZXcgb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGUoe1xyXG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3Aub24oJ3RyYW5zbGF0aW5nJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRlZW5kJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcclxuICAgICAgbGF5ZXJzOiBbdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGZpbHRlcjogKGZlYXR1cmUpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ3R5cGUnKSA9PT0gRGlyZWN0aW9uVHlwZS5Sb3V0ZSAmJlxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2FjdGl2ZScpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm91dGUub24oJ3NlbGVjdCcsIChldnQ6IFNlbGVjdEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvY3VzT25TdG9wID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxyXG4gICAgICAgICAgb2xQcm9qLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgKGV2dCBhcyBhbnkpLm1hcEJyb3dzZXJFdmVudC5jb29yZGluYXRlLFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uXHJcbiAgICAgICAgICApIGFzIFtudW1iZXIsIG51bWJlcl0sXHJcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhZGRlZFN0b3AgPSBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xyXG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xyXG4gICAgICAgIGFkZGVkU3RvcC5jb29yZGluYXRlcyA9IFtzZWxlY3RDb29yZGluYXRlc1swXSwgc2VsZWN0Q29vcmRpbmF0ZXNbMV1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZShzdG9wSW5wdXRIYXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgc3RvcElucHV0SGFzRm9jdXNcclxuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGVcclxuICAgICAgICApXHJcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xyXG4gICAgaWYgKGZlYXR1cmVzLmdldExlbmd0aCgpID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpcnN0RmVhdHVyZSA9IGZlYXR1cmVzLmdldEFycmF5KClbMF07XHJcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcElkID0gZmlyc3RGZWF0dXJlLmdldElkKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNsYXRpb25Db29yZGluYXRlcyA9IG9sUHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIGZpcnN0RmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCksXHJcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMucHJvamVjdGlvblxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcclxuICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICApO1xyXG4gICAgdHJhbnNsYXRlZFN0b3AuY29vcmRpbmF0ZXMgPSByb3VuZGVkQ29vcmQ7XHJcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcclxuICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGUodHJhbnNsYXRlZFN0b3ApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpIHtcclxuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxyXG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xyXG4gICAgICAgICAgYWRkU3RvcFRvU3RvcmUodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkID0gdGhpcy5zdG9wc1N0b3JlLmVudGl0aWVzJFxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BEaWZmKHN0b3BzKTtcclxuICAgICAgICB1cGRhdGVTdG9yZVNvcnRpbmcodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Um91dGVzKHRoaXMuaXNUcmFuc2xhdGluZyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XHJcbiAgICBjb25zdCBzaW1wbGlmaWVkU3RvcHMgPSBzdG9wcy5tYXAoKHN0b3A6IFN0b3ApID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XHJcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcclxuICAgICAgJ2Nvb3JkaW5hdGVzJ1xyXG4gICAgXSk7XHJcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcclxuICAgIGlmIChzdG9wSWRUb1Byb2Nlc3MpIHtcclxuICAgICAgc3RvcElkVG9Qcm9jZXNzLm1hcCgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcclxuICAgICAgICBpZiAoY2hhbmdlZFN0b3ApIHtcclxuICAgICAgICAgIGNvbnN0IHN0b3A6IFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KGNoYW5nZWRTdG9wLmlkKTtcclxuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XHJcbiAgICAgICAgICBpZiAoIXRlcm0gfHwgdGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzdHJpbmdUb0xvbkxhdChcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCByZXNlYXJjaGVzOiBSZXNlYXJjaFtdO1xyXG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5sb25MYXQpIHtcclxuICAgICAgICAgICAgaXNDb29yZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNlYXJjaGVzID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCh0ZXJtLCB7XHJcbiAgICAgICAgICAgIHNlYXJjaFR5cGU6ICdGZWF0dXJlJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpO1xyXG4gICAgICAgICAgY29uc3QgcmVxdWVzdHMkID0gcmVzZWFyY2hlcy5tYXAoKHJlcykgPT5cclxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5maWx0ZXIoKHIpID0+XHJcbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcclxuICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgIDogci5kYXRhLmdlb21ldHJ5XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hzJCQgPSByZXF1ZXN0cyQubWFwKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XHJcbiAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cclxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVzWzBdLnNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzLm1hcCgocikgPT4gci5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wLnNlYXJjaFByb3Bvc2Fscykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3AudHlwZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgIChpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQpXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZWRTb3VyY2UgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChzcCkgPT4gc3Auc291cmNlID09PSBzb3VyY2VcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZFNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlZFNvdXJjZS5yZXN1bHRzID0gcmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2Fscy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG1ldGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xyXG4gICAgY29uc3Qgc3RvcHMgPSB0aGlzLnN0b3BzU3RvcmUuYWxsKCk7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gc3RvcC5jb29yZGluYXRlcyk7XHJcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAuYWxsKClcclxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RvcHNTdG9yZS5nZXQoc3RvcEZlYXR1cmUucHJvcGVydGllcy5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVsZXRlKHN0b3BGZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgc3RvcHNXaXRob3V0Q29vcmRpbmF0ZXMgPSBzdG9wcy5maWx0ZXIoKHN0b3ApID0+ICFzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xyXG4gICAgICBjb25zdCBzdG9wRmVhdHVyZSA9IHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZ2V0KHN0b3AuaWQpO1xyXG4gICAgICBpZiAoc3RvcEZlYXR1cmUpIHtcclxuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZXMoaXNPdmVydmlldzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XHJcbiAgICAgIC5hbGwoKVxyXG4gICAgICAuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm91bmRlZENvb3JkaW5hdGVzID0gc3RvcHNXaXRoQ29vcmRpbmF0ZXMubWFwKChzdG9wKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgICBzdG9wLmNvb3JkaW5hdGVzLFxyXG4gICAgICAgIHRoaXMuY29vcmRSb3VuZGVkRGVjaW1hbHNcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHJvdW5kZWRDb29yZDtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcclxuICAgICAgb3ZlcnZpZXc6IHRydWUsXHJcbiAgICAgIHN0ZXBzOiBmYWxzZSxcclxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcclxuICAgICAgY29udGludWVfc3RyYWlnaHQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgY29uc3Qgcm91dGVSZXNwb25zZSA9IHRoaXMuZGlyZWN0aW9uc1NlcnZpY2Uucm91dGUoXHJcbiAgICAgIHJvdW5kZWRDb29yZGluYXRlcyxcclxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBpZiAocm91dGVSZXNwb25zZSkge1xyXG4gICAgICByb3V0ZVJlc3BvbnNlLm1hcCgocmVzKSA9PlxyXG4gICAgICAgIHRoaXMucm91dGVzUXVlcmllcyQkLnB1c2goXHJcbiAgICAgICAgICByZXMuc3Vic2NyaWJlKChkaXJlY3Rpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICAgICAgICBkaXJlY3Rpb25zLm1hcCgoZGlyZWN0aW9uKSA9PlxyXG4gICAgICAgICAgICAgIGFkZERpcmVjdGlvblRvUm91dGVzRmVhdHVyZVN0b3JlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTdG9wT3ZlcmxheShzdG9wOiBTdG9wKSB7XHJcbiAgICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZShcclxuICAgICAgc3RvcCxcclxuICAgICAgdGhpcy5zdG9wc1N0b3JlLFxyXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLFxyXG4gICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xyXG4gICAgY29uc3Qgb2wgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2w7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICBpc0FjdGl2ZVxyXG4gICAgICAgID8gb2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICAgICAgOiBvbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgW2NoZWNrZWRdPVwiZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlXCJcclxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxyXG4gID5cclxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbjwvZGl2PlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLWJ1dHRvbnNcclxuICBbc3RlcEZlYXR1cmVTdG9yZV09XCJzdGVwRmVhdHVyZVN0b3JlXCJcclxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcclxuICBbem9vbVRvQWN0aXZlUm91dGUkXT1cInpvb21Ub0FjdGl2ZVJvdXRlJFwiXHJcbiAgW3JvdXRlc0ZlYXR1cmVTdG9yZV09XCJyb3V0ZXNGZWF0dXJlU3RvcmVcIlxyXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxyXG4+PC9pZ28tZGlyZWN0aW9ucy1idXR0b25zPlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xyXG4gIChzdG9wSW5wdXRIYXNGb2N1cyk9XCJvblN0b3BJbnB1dEhhc0ZvY3VzQ2hhbmdlKCRldmVudClcIlxyXG4gIFtjb29yZFJvdW5kZWREZWNpbWFsc109XCJjb29yZFJvdW5kZWREZWNpbWFsc1wiXHJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXHJcbiAgW3N0b3BzRmVhdHVyZVN0b3JlXT1cInN0b3BzRmVhdHVyZVN0b3JlXCJcclxuICBbc3RvcHNTdG9yZV09XCJzdG9wc1N0b3JlXCJcclxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxyXG4gIFtsZW5ndGhdPVwibGVuZ3RoXCJcclxuPjwvaWdvLWRpcmVjdGlvbnMtaW5wdXRzPlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLXJlc3VsdHNcclxuICBbc3RlcEZlYXR1cmVTdG9yZV09XCJzdGVwRmVhdHVyZVN0b3JlXCJcclxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXHJcbj48L2lnby1kaXJlY3Rpb25zLXJlc3VsdHM+XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VvSnNvbkdlb21ldHJ5VHlwZXMgfSBmcm9tICdnZW9qc29uJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTZWFyY2hTb3VyY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvc291cmNlJztcclxuaW1wb3J0IHtcclxuICBEaXJlY3Rpb25SZWxhdGl2ZVBvc2l0aW9uVHlwZSxcclxuICBEaXJlY3Rpb25UeXBlLFxyXG4gIERpcmVjdGlvbnNGb3JtYXQsXHJcbiAgUHJvcG9zYWxUeXBlLFxyXG4gIFNvdXJjZURpcmVjdGlvbnNUeXBlXHJcbn0gZnJvbSAnLi9kaXJlY3Rpb25zLmVudW0nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3Rpb25PcHRpb25zIHtcclxuICBvdmVydmlldz86IGJvb2xlYW47XHJcbiAgc3RlcHM/OiBib29sZWFuO1xyXG4gIGdlb21ldHJpZXM/OiBzdHJpbmc7XHJcbiAgYWx0ZXJuYXRpdmVzPzogYm9vbGVhbjtcclxuICBjb250aW51ZV9zdHJhaWdodD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhTdG9wIGV4dGVuZHMgRmVhdHVyZTxGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzPiB7fVxyXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoRGlyZWN0aW9uXHJcbiAgZXh0ZW5kcyBGZWF0dXJlPEZlYXR1cmVXaXRoRGlyZWN0aW9uUHJvcGVydGllcz4ge31cclxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlV2l0aFN0ZXAgZXh0ZW5kcyBGZWF0dXJlPEZlYXR1cmVXaXRoU3RlcFByb3BlcnRpZXM+IHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoU3RlcFByb3BlcnRpZXMge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgc3RlcDogSWdvU3RlcDtcclxuICB0eXBlOiBEaXJlY3Rpb25UeXBlO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhEaXJlY3Rpb25Qcm9wZXJ0aWVzIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xyXG4gIHR5cGU6IERpcmVjdGlvblR5cGU7XHJcbiAgYWN0aXZlOiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzdG9wOiBTdG9wO1xyXG4gIHR5cGU6IERpcmVjdGlvblR5cGU7XHJcbiAgc3RvcFRleHQ6IHN0cmluZztcclxuICBzdG9wQ29sb3I6IHN0cmluZztcclxuICBzdG9wT3BhY2l0eTogMTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdG9wIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbiAgc2VhcmNoUHJvcG9zYWxzPzogU291cmNlUHJvcG9zYWxbXTtcclxuICBjb29yZGluYXRlcz86IFtudW1iZXIsIG51bWJlcl07XHJcbiAgcG9zaXRpb246IG51bWJlcjtcclxuICByZWxhdGl2ZVBvc2l0aW9uOiBEaXJlY3Rpb25SZWxhdGl2ZVBvc2l0aW9uVHlwZTtcclxuICBzdG9wUG9pbnQ/OiBzdHJpbmc7XHJcbiAgc3RvcFByb3Bvc2Fscz86IFtdO1xyXG4gIGRpcmVjdGlvbnNUZXh0Pzogc3RyaW5nO1xyXG4gIHN0b3BDb29yZGluYXRlcz86IFtudW1iZXIsIG51bWJlcl07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlUHJvcG9zYWwge1xyXG4gIHR5cGU6IFByb3Bvc2FsVHlwZTtcclxuICBzb3VyY2U6IFNlYXJjaFNvdXJjZTtcclxuICByZXN1bHRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W107XHJcbiAgbWV0YToge1xyXG4gICAgZGF0YVR5cGU6IHN0cmluZztcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgdGl0bGVIdG1sPzogc3RyaW5nO1xyXG4gICAgaWNvbjogc3RyaW5nO1xyXG4gICAgc2NvcmU/OiBudW1iZXI7XHJcbiAgICBuZXh0UGFnZT86IGJvb2xlYW47XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3Rpb24ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgc291cmNlOiBzdHJpbmc7XHJcbiAgc291cmNlVHlwZT86IFNvdXJjZURpcmVjdGlvbnNUeXBlO1xyXG4gIG9yZGVyPzogbnVtYmVyO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZvcm1hdD86IERpcmVjdGlvbnNGb3JtYXQ7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBwcm9qZWN0aW9uPzogc3RyaW5nO1xyXG4gIHdheXBvaW50cz86IGFueTtcclxuICBkaXN0YW5jZT86IG51bWJlcjtcclxuICBkdXJhdGlvbj86IG51bWJlcjtcclxuICBnZW9tZXRyeT86IERpcmVjdGlvbnNHZW9tZXRyeTtcclxuICBsZWdzPzogT3NybUxlZ1tdO1xyXG4gIHN0ZXBzPzogSWdvU3RlcFtdO1xyXG4gIHdlaWdodD86IG51bWJlcjtcclxuICB3ZWlnaHRfbmFtZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGlvbnNHZW9tZXRyeSB7XHJcbiAgdHlwZTogR2VvSnNvbkdlb21ldHJ5VHlwZXM7XHJcbiAgY29vcmRpbmF0ZXM6IFthbnldO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgT3NybUxlZyB7XHJcbiAgZGlzdGFuY2U/OiBudW1iZXI7XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgc3RlcHM/OiBPc3JtU3RlcFtdO1xyXG4gIHN1bW1hcnk6IHN0cmluZztcclxuICB3ZWlnaHQ/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJZ29TdGVwIHtcclxuICAvLyBSRUZFUiBUTyBUSElTIElOVEVSRkFDRSBGT1IgVkFSSU9VUyBTT1VSQ0VcclxuICBkaXN0YW5jZT86IG51bWJlcjtcclxuICBkcml2aW5nX3NpZGU/OiBzdHJpbmc7XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgZ2VvbWV0cnk/OiBEaXJlY3Rpb25zR2VvbWV0cnk7XHJcbiAgaW50ZXJzZWN0aW9ucz86IE9zcm1JbnRlcnNlY3Rpb25bXTtcclxuICBtYW5ldXZlcj86IE9zcm1NYW5ldXZlcjtcclxuICBtb2RlPzogc3RyaW5nO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBPc3JtU3RlcCB7XHJcbiAgZGlzdGFuY2U/OiBudW1iZXI7XHJcbiAgZHJpdmluZ19zaWRlPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogbnVtYmVyO1xyXG4gIGdlb21ldHJ5PzogRGlyZWN0aW9uc0dlb21ldHJ5O1xyXG4gIGludGVyc2VjdGlvbnM/OiBPc3JtSW50ZXJzZWN0aW9uW107XHJcbiAgbWFuZXV2ZXI/OiBPc3JtTWFuZXV2ZXI7XHJcbiAgbW9kZT86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgT3NybUludGVyc2VjdGlvbiB7XHJcbiAgYmVhcmluZz86IFthbnldO1xyXG4gIGVudHJ5PzogW2Jvb2xlYW5dO1xyXG4gIGxvY2F0aW9uPzogW251bWJlciwgbnVtYmVyXTtcclxuICBvdXQ/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBPc3JtTWFuZXV2ZXIge1xyXG4gIGJlYXJpbmdfYWZ0ZXI/OiBudW1iZXI7XHJcbiAgYmVhcmluZ19iZWZvcmU/OiBudW1iZXI7XHJcbiAgbG9jYXRpb24/OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIG1vZGlmaWVyPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -199,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
199
199
|
type: Inject,
|
|
200
200
|
args: [DOCUMENT]
|
|
201
201
|
}] }, { type: i2.ActivityService }]; } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFFekIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGlCQUFpQixFQUNsQixNQUFNLG9CQUFvQixDQUFDOzs7OztBQUs1QixNQUFNLE9BQU8saUJBQWlCO0lBRWxCO0lBQ0E7SUFDQTtJQUNBO0lBQ2tCO0lBQ2xCO0lBTlYsWUFDVSx1QkFBZ0QsRUFDaEQsYUFBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDUixRQUFrQixFQUNwQyxlQUFnQztRQUxoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hE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RUFBRSxDQUFDLFVBQVUsR0FBRyxLQUFLLEdBQUcsU0FBUyxFQUNqRSxLQUFLLEdBQUcsRUFBRSxFQUNWLFVBQVUsR0FBRyxFQUFFLENBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7d0dBN05VLGlCQUFpQixpSkFNbEIsUUFBUTs0R0FOUCxpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcbmltcG9ydCB7IFVzZXJPcHRpb25zIH0gZnJvbSAnanNwZGYtYXV0b3RhYmxlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJpbnQvc2hhcmVkL3ByaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJpbnRMZWdlbmRQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3ByaW50L3NoYXJlZC9wcmludC50eXBlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2UgfSBmcm9tICcuLi9kaXJlY3Rpb25zLXNvdXJjZXMvZGlyZWN0aW9ucy1zb3VyY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXREdXJhdGlvbixcbiAgZm9ybWF0SW5zdHJ1Y3Rpb25cbn0gZnJvbSAnLi9kaXJlY3Rpb25zLnV0aWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlOiBEaXJlY3Rpb25zU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlOiBBY3Rpdml0eVNlcnZpY2VcbiAgKSB7fVxuXG4gIHJvdXRlKFxuICAgIGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdW10sXG4gICAgZGlyZWN0aW9uc09wdGlvbnM6IERpcmVjdGlvbk9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPERpcmVjdGlvbltdPltdIHtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNcbiAgICAgIC5maWx0ZXIoKHNvdXJjZTogRGlyZWN0aW9uc1NvdXJjZSkgPT4gc291cmNlLmVuYWJsZWQpXG4gICAgICAubWFwKChzb3VyY2U6IERpcmVjdGlvbnNTb3VyY2UpID0+XG4gICAgICAgIHRoaXMucm91dGVTb3VyY2Uoc291cmNlLCBjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpXG4gICAgICApO1xuICB9XG5cbiAgcm91dGVTb3VyY2UoXG4gICAgc291cmNlOiBEaXJlY3Rpb25zU291cmNlLFxuICAgIGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdW10sXG4gICAgZGlyZWN0aW9uc09wdGlvbnM6IERpcmVjdGlvbk9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPERpcmVjdGlvbltdPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHNvdXJjZS5yb3V0ZShjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpO1xuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgZG93bmxvYWREaXJlY3Rpb24oXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25cbiAgKTogT2JzZXJ2YWJsZTxTdWJqZWN0U3RhdHVzPiB7XG4gICAgY29uc3QgYWN0aXZpdHlJZCA9IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgY29uc3Qgc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFN1YmplY3RTdGF0dXM+KCk7XG5cbiAgICBjb25zdCBkb2M6IGpzUERGID0gbmV3IGpzUERGKHtcbiAgICAgIG9yaWVudGF0aW9uOiAncCcsXG4gICAgICBmb3JtYXQ6ICdMZXR0ZXInLFxuICAgICAgdW5pdDogJ21tJyAvLyBkZWZhdWx0XG4gICAgfSk7XG4gICAgY29uc3QgZGltZW5zaW9ucyA9IFtcbiAgICAgIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCxcbiAgICAgIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHRcbiAgICBdO1xuICAgIGNvbnN0IG1hcmdpbnMgPSBbMTAsIDEwLCAxMCwgMTBdO1xuICAgIGNvbnN0IHdpZHRoID0gZGltZW5zaW9uc1swXTtcbiAgICBjb25zdCBoZWlnaHQgPSBkaW1lbnNpb25zWzFdIC0gbWFyZ2luc1swXSAtIG1hcmdpbnNbMl07XG4gICAgY29uc3Qgc2l6ZTogW251bWJlciwgbnVtYmVyXSA9IFt3aWR0aCwgaGVpZ2h0XTtcblxuICAgIGNvbnN0IHRpdGxlID0gYCR7ZGlyZWN0aW9uLnRpdGxlfSAoJHtmb3JtYXREaXN0YW5jZShcbiAgICAgIGRpcmVjdGlvbi5kaXN0YW5jZVxuICAgICl9LCAke2Zvcm1hdER1cmF0aW9uKGRpcmVjdGlvbi5kdXJhdGlvbil9KWA7XG4gICAgY29uc3QgdGl0bGVQb3NpdGlvbiA9IDI1O1xuXG4gICAgZG9jLnRleHQodGl0bGUsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAvIDIsIHRpdGxlUG9zaXRpb24sIHtcbiAgICAgIGFsaWduOiAnY2VudGVyJ1xuICAgIH0pO1xuXG4gICAgbWFyZ2luc1swXSArPSAyMDtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gOTY7IC8vIERlZmF1bHQgaXMgOTZcbiAgICB0aGlzLnByaW50U2VydmljZVxuICAgICAgLmFkZE1hcChkb2MsIG1hcCwgcmVzb2x1dGlvbiwgc2l6ZSwgbWFyZ2lucywgUHJpbnRMZWdlbmRQb3NpdGlvbi5ub25lKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoc3RhdHVzOiBTdWJqZWN0U3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRkSW5zdHJ1Y3Rpb25zKGRvYywgZGlyZWN0aW9uLCB0aXRsZSk7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlSGVhZGVyRm9vdGVyKGRvYyk7XG4gICAgICAgICAgYXdhaXQgZG9jLnNhdmUoYCR7dGl0bGV9LnBkZmAsIHsgcmV0dXJuUHJvbWlzZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVucmVnaXN0ZXIoYWN0aXZpdHlJZCk7XG4gICAgICAgIHN0YXR1cyQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc3RhdHVzJDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0SFRNTFRhYmxlQ29udGVudChcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvblxuICApOiBQcm9taXNlPEhUTUxUYWJsZUVsZW1lbnQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kaXJlY3Rpb25zSW5zdHJ1Y3Rpb24oZGlyZWN0aW9uKTtcbiAgICBjb25zdCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgY29uc3QgdGJsQm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRhdGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGF0YVtpbmRleF07XG4gICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgIHZhciBjZWxsSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgdmFyIGNlbGxUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcbiAgICAgIC8vIGljb25cbiAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICBpbWcuc3JjID0gZWxlbWVudC5pY29uO1xuICAgICAgLy8gaW5zdHJ1Y3Rpb24gdGV4dFxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHNwYW4uaW5uZXJIVE1MID0gZWxlbWVudC5pbnN0cnVjdGlvbjtcbiAgICAgIGNlbGxJbWFnZS5hcHBlbmRDaGlsZChpbWcpO1xuICAgICAgY2VsbFRleHQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICBpZiAoZWxlbWVudC5kaXN0YW5jZSkge1xuICAgICAgICBjb25zdCBzcGFuRGlzdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHNwYW5EaXN0YW5jZS5zdHlsZS52ZXJ0aWNhbEFsaWduID0gJ21pZGRsZSc7XG4gICAgICAgIHNwYW5EaXN0YW5jZS5pbm5lckhUTUwgPVxuICAgICAgICAgICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgZWxlbWVudC5kaXN0YW5jZTtcbiAgICAgICAgY2VsbFRleHQuYXBwZW5kQ2hpbGQoc3BhbkRpc3RhbmNlKTtcbiAgICAgIH1cbiAgICAgIHJvdy5hcHBlbmQoY2VsbEltYWdlKTtcbiAgICAgIHJvdy5hcHBlbmQoY2VsbFRleHQpO1xuICAgICAgdGJsQm9keS5hcHBlbmRDaGlsZChyb3cpO1xuICAgIH1cbiAgICB0YWJsZS5hcHBlbmRDaGlsZCh0YmxCb2R5KTtcbiAgICByZXR1cm4gdGFibGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRpcmVjdGlvbnNJbnN0cnVjdGlvbihcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvblxuICApOiBQcm9taXNlPEFycmF5PHsgaW5zdHJ1Y3Rpb246IHN0cmluZzsgaWNvbjogc3RyaW5nOyBkaXN0YW5jZTogc3RyaW5nIH0+PiB7XG4gICAgY29uc3QgbWF0TGlzdEl0ZW1zID0gdGhpcy5kb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZ28tZGlyZWN0aW9ucy1yZXN1bHRzJylbMF1cbiAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QnKVswXTtcbiAgICBjb25zdCBtYXRMaXN0SXRlbSA9IG1hdExpc3RJdGVtcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QtaXRlbScpO1xuICAgIC8vIGNvbnZlcnQgaWNvbiBsaXN0IHRvIGJhc2U2NFxuICAgIGxldCBpY29uc0FycmF5OiBBcnJheTx7IG5hbWU6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+ID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hdExpc3RJdGVtLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IG1hdExpc3RJdGVtW2luZGV4XTtcbiAgICAgIGNvbnN0IGljb24gPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtaWNvbicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaWNvbk5hbWUgPSBpY29uLmdldEF0dHJpYnV0ZSgnZGF0YS1tYXQtaWNvbi1uYW1lJykgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgZm91bmQgPSBpY29uc0FycmF5LnNvbWUoKGVsKSA9PiBlbC5uYW1lID09PSBpY29uTmFtZSk7XG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIGNvbnN0IGljb25DYW52YXMgPSBhd2FpdCBodG1sMmNhbnZhcyhpY29uLCB7IHNjYWxlOiAzIH0pO1xuICAgICAgICBpY29uc0FycmF5LnB1c2goeyBuYW1lOiBpY29uTmFtZSwgaWNvbjogaWNvbkNhbnZhcy50b0RhdGFVUkwoKSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZm9ybWF0dGVkRGlyZWN0aW9uOiBBcnJheTx7XG4gICAgICBpbnN0cnVjdGlvbjogc3RyaW5nO1xuICAgICAgaWNvbjogc3RyaW5nO1xuICAgICAgZGlzdGFuY2U6IHN0cmluZztcbiAgICB9PiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlyZWN0aW9uLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGVwID0gZGlyZWN0aW9uLnN0ZXBzW2ldO1xuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBmb3JtYXRJbnN0cnVjdGlvbihcbiAgICAgICAgc3RlcC5tYW5ldXZlci50eXBlLFxuICAgICAgICBzdGVwLm1hbmV1dmVyLm1vZGlmaWVyLFxuICAgICAgICBzdGVwLm5hbWUsXG4gICAgICAgIHN0ZXAubWFuZXV2ZXIuYmVhcmluZ19hZnRlcixcbiAgICAgICAgaSxcbiAgICAgICAgKHN0ZXAubWFuZXV2ZXIgYXMgYW55KS5leGl0LFxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZSxcbiAgICAgICAgaSA9PT0gZGlyZWN0aW9uLnN0ZXBzLmxlbmd0aCAtIDFcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gZm9ybWF0RGlzdGFuY2Uoc3RlcC5kaXN0YW5jZSk7XG4gICAgICBmb3JtYXR0ZWREaXJlY3Rpb24ucHVzaCh7XG4gICAgICAgIGluc3RydWN0aW9uOiBpICsgMSArICcuICcgKyBpbnN0cnVjdGlvbi5pbnN0cnVjdGlvbixcbiAgICAgICAgaWNvbjogaWNvbnNBcnJheS5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IGluc3RydWN0aW9uLmltYWdlKS5pY29uLFxuICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UgPyAnKCcgKyBkaXN0YW5jZSArICcpJyA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWREaXJlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEluc3RydWN0aW9ucyhcbiAgICBkb2M6IGpzUERGLFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uLFxuICAgIHRpdGxlOiBzdHJpbmdcbiAgKSB7XG4gICAgZG9jLmFkZFBhZ2UoKTtcbiAgICBjb25zdCB0aXRsZVBvc2l0aW9uID0gMjU7XG4gICAgZG9jLnRleHQodGl0bGUsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAvIDIsIHRpdGxlUG9zaXRpb24sIHtcbiAgICAgIGFsaWduOiAnY2VudGVyJ1xuICAgIH0pO1xuICAgIGNvbnN0IEhUTUx0YWJsZSA9IGF3YWl0IHRoaXMuc2V0SFRNTFRhYmxlQ29udGVudChkaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhYmxlUG9zID0gdGl0bGVQb3NpdGlvbiArIDU7XG4gICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gICAgICBodG1sOiBIVE1MdGFibGUsXG4gICAgICBzdGFydFk6IHRhYmxlUG9zLFxuICAgICAgbWFyZ2luOiB7IHRvcDogMjAsIGJvdHRvbTogMjAgfSxcbiAgICAgIGNvbHVtblN0eWxlczoge1xuICAgICAgICAwOiB7IGNlbGxXaWR0aDogMTAgfVxuICAgICAgfSxcbiAgICAgIHRoZW1lOiAncGxhaW4nLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMlxuICAgICAgfSxcbiAgICAgIGRpZERyYXdDZWxsOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YS5jb2x1bW4uaW5kZXggPT09IDAgJiYgZGF0YS5jZWxsLnNlY3Rpb24gPT09ICdib2R5Jykge1xuICAgICAgICAgIGRhdGEucm93LmhlaWdodCA9IDEwO1xuICAgICAgICAgIGNvbnN0IHRkID0gZGF0YS5jZWxsLnJhdyBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBjb25zdCBpbWcgPSB0ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF07XG4gICAgICAgICAgZG9jLmFkZEltYWdlKGltZy5zcmMsIGRhdGEuY2VsbC54LCBkYXRhLmNlbGwueSwgOCwgOCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IHNhdGlzZmllcyBVc2VyT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHNldFBhZ2VIZWFkZXJGb290ZXIoZG9jOiBqc1BERikge1xuICAgIGNvbnN0IHBhZ2VDb3VudCA9IGRvYy5nZXROdW1iZXJPZlBhZ2VzKCk7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudChEYXRlLm5vdygpKS5mb3JtYXQoJ0REL01NL1lZWVkgaGg6bW0nKS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgbG9nb0NvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2RpcmVjdGlvbnNTb3VyY2VzLmxvZ28nKTtcbiAgICBjb25zdCBsb2dvID0gbG9nb0NvbmZpZyA/IGxvZ29Db25maWcgOiAnYXNzZXRzL2xvZ28ucG5nJztcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwYWdlQ291bnQ7IGluZGV4KyspIHtcbiAgICAgIGRvYy5zZXRQYWdlKGluZGV4KTtcbiAgICAgIGRvYy5zZXRGb250U2l6ZSg4KTtcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gZG9jLmludGVybmFsLnBhZ2VTaXplO1xuICAgICAgY29uc3QgcGFnZUhlaWdodCA9IHBhZ2VTaXplLmhlaWdodFxuICAgICAgICA/IHBhZ2VTaXplLmhlaWdodFxuICAgICAgICA6IHBhZ2VTaXplLmdldEhlaWdodCgpO1xuICAgICAgY29uc3Qgd2lkdGggPSBwYWdlU2l6ZS53aWR0aCA/IHBhZ2VTaXplLndpZHRoIDogcGFnZVNpemUuZ2V0V2lkdGgoKTtcbiAgICAgIGRvYy50ZXh0KGRhdGUsIDEwLCAxMCwgeyBiYXNlbGluZTogJ3RvcCcgfSk7XG4gICAgICBkb2MuYWRkSW1hZ2UobG9nbywgJ1BORycsIHdpZHRoIC0gMjAsIDUsIDEwLCAxMCk7XG4gICAgICBkb2MudGV4dChkYXRlLCAxMCwgcGFnZUhlaWdodCAtIDEwKTtcbiAgICAgIGRvYy50ZXh0KFxuICAgICAgICAnUGFnZSAnICsgZG9jLmdldEN1cnJlbnRQYWdlSW5mbygpLnBhZ2VOdW1iZXIgKyAnIC8gJyArIHBhZ2VDb3VudCxcbiAgICAgICAgd2lkdGggLSAyMCxcbiAgICAgICAgcGFnZUhlaWdodCAtIDEwXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFFekIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGlCQUFpQixFQUNsQixNQUFNLG9CQUFvQixDQUFDOzs7OztBQUs1QixNQUFNLE9BQU8saUJBQWlCO0lBRWxCO0lBQ0E7SUFDQTtJQUNBO0lBQ2tCO0lBQ2xCO0lBTlYsWUFDVSx1QkFBZ0QsRUFDaEQsYUFBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDUixRQUFrQixFQUNwQyxlQUFnQztRQUxoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hE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RUFBRSxDQUFDLFVBQVUsR0FBRyxLQUFLLEdBQUcsU0FBUyxFQUNqRSxLQUFLLEdBQUcsRUFBRSxFQUNWLFVBQVUsR0FBRyxFQUFFLENBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7d0dBN05VLGlCQUFpQixpSkFNbEIsUUFBUTs0R0FOUCxpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xyXG5pbXBvcnQganNQREYgZnJvbSAnanNwZGYnO1xyXG5pbXBvcnQgJ2pzcGRmLWF1dG90YWJsZSc7XHJcbmltcG9ydCB7IFVzZXJPcHRpb25zIH0gZnJvbSAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50L3NoYXJlZC9wcmludC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpbnRMZWdlbmRQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3ByaW50L3NoYXJlZC9wcmludC50eXBlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uc1NvdXJjZSB9IGZyb20gJy4uL2RpcmVjdGlvbnMtc291cmNlcy9kaXJlY3Rpb25zLXNvdXJjZSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBmb3JtYXREaXN0YW5jZSxcclxuICBmb3JtYXREdXJhdGlvbixcclxuICBmb3JtYXRJbnN0cnVjdGlvblxyXG59IGZyb20gJy4vZGlyZWN0aW9ucy51dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25zU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlOiBEaXJlY3Rpb25zU291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIGFjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICByb3V0ZShcclxuICAgIGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdW10sXHJcbiAgICBkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKTogT2JzZXJ2YWJsZTxEaXJlY3Rpb25bXT5bXSB7XHJcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNcclxuICAgICAgLmZpbHRlcigoc291cmNlOiBEaXJlY3Rpb25zU291cmNlKSA9PiBzb3VyY2UuZW5hYmxlZClcclxuICAgICAgLm1hcCgoc291cmNlOiBEaXJlY3Rpb25zU291cmNlKSA9PlxyXG4gICAgICAgIHRoaXMucm91dGVTb3VyY2Uoc291cmNlLCBjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICByb3V0ZVNvdXJjZShcclxuICAgIHNvdXJjZTogRGlyZWN0aW9uc1NvdXJjZSxcclxuICAgIGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdW10sXHJcbiAgICBkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9XHJcbiAgKTogT2JzZXJ2YWJsZTxEaXJlY3Rpb25bXT4ge1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHNvdXJjZS5yb3V0ZShjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZERpcmVjdGlvbihcclxuICAgIG1hcDogSWdvTWFwLFxyXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25cclxuICApOiBPYnNlcnZhYmxlPFN1YmplY3RTdGF0dXM+IHtcclxuICAgIGNvbnN0IGFjdGl2aXR5SWQgPSB0aGlzLmFjdGl2aXR5U2VydmljZS5yZWdpc3RlcigpO1xyXG4gICAgY29uc3Qgc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFN1YmplY3RTdGF0dXM+KCk7XHJcblxyXG4gICAgY29uc3QgZG9jOiBqc1BERiA9IG5ldyBqc1BERih7XHJcbiAgICAgIG9yaWVudGF0aW9uOiAncCcsXHJcbiAgICAgIGZvcm1hdDogJ0xldHRlcicsXHJcbiAgICAgIHVuaXQ6ICdtbScgLy8gZGVmYXVsdFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBkaW1lbnNpb25zID0gW1xyXG4gICAgICBkb2MuaW50ZXJuYWwucGFnZVNpemUud2lkdGgsXHJcbiAgICAgIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHRcclxuICAgIF07XHJcbiAgICBjb25zdCBtYXJnaW5zID0gWzEwLCAxMCwgMTAsIDEwXTtcclxuICAgIGNvbnN0IHdpZHRoID0gZGltZW5zaW9uc1swXTtcclxuICAgIGNvbnN0IGhlaWdodCA9IGRpbWVuc2lvbnNbMV0gLSBtYXJnaW5zWzBdIC0gbWFyZ2luc1syXTtcclxuICAgIGNvbnN0IHNpemU6IFtudW1iZXIsIG51bWJlcl0gPSBbd2lkdGgsIGhlaWdodF07XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSBgJHtkaXJlY3Rpb24udGl0bGV9ICgke2Zvcm1hdERpc3RhbmNlKFxyXG4gICAgICBkaXJlY3Rpb24uZGlzdGFuY2VcclxuICAgICl9LCAke2Zvcm1hdER1cmF0aW9uKGRpcmVjdGlvbi5kdXJhdGlvbil9KWA7XHJcbiAgICBjb25zdCB0aXRsZVBvc2l0aW9uID0gMjU7XHJcblxyXG4gICAgZG9jLnRleHQodGl0bGUsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAvIDIsIHRpdGxlUG9zaXRpb24sIHtcclxuICAgICAgYWxpZ246ICdjZW50ZXInXHJcbiAgICB9KTtcclxuXHJcbiAgICBtYXJnaW5zWzBdICs9IDIwO1xyXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IDk2OyAvLyBEZWZhdWx0IGlzIDk2XHJcbiAgICB0aGlzLnByaW50U2VydmljZVxyXG4gICAgICAuYWRkTWFwKGRvYywgbWFwLCByZXNvbHV0aW9uLCBzaXplLCBtYXJnaW5zLCBQcmludExlZ2VuZFBvc2l0aW9uLm5vbmUpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHN0YXR1czogU3ViamVjdFN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGRJbnN0cnVjdGlvbnMoZG9jLCBkaXJlY3Rpb24sIHRpdGxlKTtcclxuICAgICAgICAgIHRoaXMuc2V0UGFnZUhlYWRlckZvb3Rlcihkb2MpO1xyXG4gICAgICAgICAgYXdhaXQgZG9jLnNhdmUoYCR7dGl0bGV9LnBkZmAsIHsgcmV0dXJuUHJvbWlzZTogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVucmVnaXN0ZXIoYWN0aXZpdHlJZCk7XHJcbiAgICAgICAgc3RhdHVzJC5uZXh0KHN0YXR1cyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBzdGF0dXMkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRIVE1MVGFibGVDb250ZW50KFxyXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25cclxuICApOiBQcm9taXNlPEhUTUxUYWJsZUVsZW1lbnQ+IHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRpcmVjdGlvbnNJbnN0cnVjdGlvbihkaXJlY3Rpb24pO1xyXG4gICAgY29uc3QgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xyXG4gICAgY29uc3QgdGJsQm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRhdGFbaW5kZXhdO1xyXG4gICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcclxuICAgICAgdmFyIGNlbGxJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XHJcbiAgICAgIHZhciBjZWxsVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XHJcbiAgICAgIC8vIGljb25cclxuICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJykgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICAgICAgaW1nLnNyYyA9IGVsZW1lbnQuaWNvbjtcclxuICAgICAgLy8gaW5zdHJ1Y3Rpb24gdGV4dFxyXG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBzcGFuLmlubmVySFRNTCA9IGVsZW1lbnQuaW5zdHJ1Y3Rpb247XHJcbiAgICAgIGNlbGxJbWFnZS5hcHBlbmRDaGlsZChpbWcpO1xyXG4gICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuKTtcclxuICAgICAgaWYgKGVsZW1lbnQuZGlzdGFuY2UpIHtcclxuICAgICAgICBjb25zdCBzcGFuRGlzdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgc3BhbkRpc3RhbmNlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnbWlkZGxlJztcclxuICAgICAgICBzcGFuRGlzdGFuY2UuaW5uZXJIVE1MID1cclxuICAgICAgICAgICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgZWxlbWVudC5kaXN0YW5jZTtcclxuICAgICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuRGlzdGFuY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHJvdy5hcHBlbmQoY2VsbEltYWdlKTtcclxuICAgICAgcm93LmFwcGVuZChjZWxsVGV4dCk7XHJcbiAgICAgIHRibEJvZHkuYXBwZW5kQ2hpbGQocm93KTtcclxuICAgIH1cclxuICAgIHRhYmxlLmFwcGVuZENoaWxkKHRibEJvZHkpO1xyXG4gICAgcmV0dXJuIHRhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBkaXJlY3Rpb25zSW5zdHJ1Y3Rpb24oXHJcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvblxyXG4gICk6IFByb21pc2U8QXJyYXk8eyBpbnN0cnVjdGlvbjogc3RyaW5nOyBpY29uOiBzdHJpbmc7IGRpc3RhbmNlOiBzdHJpbmcgfT4+IHtcclxuICAgIGNvbnN0IG1hdExpc3RJdGVtcyA9IHRoaXMuZG9jdW1lbnRcclxuICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZ28tZGlyZWN0aW9ucy1yZXN1bHRzJylbMF1cclxuICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtbGlzdCcpWzBdO1xyXG4gICAgY29uc3QgbWF0TGlzdEl0ZW0gPSBtYXRMaXN0SXRlbXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hdC1saXN0LWl0ZW0nKTtcclxuICAgIC8vIGNvbnZlcnQgaWNvbiBsaXN0IHRvIGJhc2U2NFxyXG4gICAgbGV0IGljb25zQXJyYXk6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfT4gPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXRMaXN0SXRlbS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IG1hdExpc3RJdGVtW2luZGV4XTtcclxuICAgICAgY29uc3QgaWNvbiA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21hdC1pY29uJylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGljb25OYW1lID0gaWNvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWF0LWljb24tbmFtZScpIGFzIHN0cmluZztcclxuICAgICAgY29uc3QgZm91bmQgPSBpY29uc0FycmF5LnNvbWUoKGVsKSA9PiBlbC5uYW1lID09PSBpY29uTmFtZSk7XHJcbiAgICAgIGlmICghZm91bmQpIHtcclxuICAgICAgICBjb25zdCBpY29uQ2FudmFzID0gYXdhaXQgaHRtbDJjYW52YXMoaWNvbiwgeyBzY2FsZTogMyB9KTtcclxuICAgICAgICBpY29uc0FycmF5LnB1c2goeyBuYW1lOiBpY29uTmFtZSwgaWNvbjogaWNvbkNhbnZhcy50b0RhdGFVUkwoKSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBmb3JtYXR0ZWREaXJlY3Rpb246IEFycmF5PHtcclxuICAgICAgaW5zdHJ1Y3Rpb246IHN0cmluZztcclxuICAgICAgaWNvbjogc3RyaW5nO1xyXG4gICAgICBkaXN0YW5jZTogc3RyaW5nO1xyXG4gICAgfT4gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlyZWN0aW9uLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0ZXAgPSBkaXJlY3Rpb24uc3RlcHNbaV07XHJcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uID0gZm9ybWF0SW5zdHJ1Y3Rpb24oXHJcbiAgICAgICAgc3RlcC5tYW5ldXZlci50eXBlLFxyXG4gICAgICAgIHN0ZXAubWFuZXV2ZXIubW9kaWZpZXIsXHJcbiAgICAgICAgc3RlcC5uYW1lLFxyXG4gICAgICAgIHN0ZXAubWFuZXV2ZXIuYmVhcmluZ19hZnRlcixcclxuICAgICAgICBpLFxyXG4gICAgICAgIChzdGVwLm1hbmV1dmVyIGFzIGFueSkuZXhpdCxcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZSxcclxuICAgICAgICBpID09PSBkaXJlY3Rpb24uc3RlcHMubGVuZ3RoIC0gMVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgZGlzdGFuY2UgPSBmb3JtYXREaXN0YW5jZShzdGVwLmRpc3RhbmNlKTtcclxuICAgICAgZm9ybWF0dGVkRGlyZWN0aW9uLnB1c2goe1xyXG4gICAgICAgIGluc3RydWN0aW9uOiBpICsgMSArICcuICcgKyBpbnN0cnVjdGlvbi5pbnN0cnVjdGlvbixcclxuICAgICAgICBpY29uOiBpY29uc0FycmF5LmZpbmQoKGljb24pID0+IGljb24ubmFtZSA9PT0gaW5zdHJ1Y3Rpb24uaW1hZ2UpLmljb24sXHJcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlID8gJygnICsgZGlzdGFuY2UgKyAnKScgOiB1bmRlZmluZWRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkRGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBhZGRJbnN0cnVjdGlvbnMoXHJcbiAgICBkb2M6IGpzUERGLFxyXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb24sXHJcbiAgICB0aXRsZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBkb2MuYWRkUGFnZSgpO1xyXG4gICAgY29uc3QgdGl0bGVQb3NpdGlvbiA9IDI1O1xyXG4gICAgZG9jLnRleHQodGl0bGUsIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aCAvIDIsIHRpdGxlUG9zaXRpb24sIHtcclxuICAgICAgYWxpZ246ICdjZW50ZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IEhUTUx0YWJsZSA9IGF3YWl0IHRoaXMuc2V0SFRNTFRhYmxlQ29udGVudChkaXJlY3Rpb24pO1xyXG4gICAgY29uc3QgdGFibGVQb3MgPSB0aXRsZVBvc2l0aW9uICsgNTtcclxuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xyXG4gICAgICBodG1sOiBIVE1MdGFibGUsXHJcbiAgICAgIHN0YXJ0WTogdGFibGVQb3MsXHJcbiAgICAgIG1hcmdpbjogeyB0b3A6IDIwLCBib3R0b206IDIwIH0sXHJcbiAgICAgIGNvbHVtblN0eWxlczoge1xyXG4gICAgICAgIDA6IHsgY2VsbFdpZHRoOiAxMCB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHRoZW1lOiAncGxhaW4nLFxyXG4gICAgICBzdHlsZXM6IHtcclxuICAgICAgICBmb250U2l6ZTogMTJcclxuICAgICAgfSxcclxuICAgICAgZGlkRHJhd0NlbGw6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKGRhdGEuY29sdW1uLmluZGV4ID09PSAwICYmIGRhdGEuY2VsbC5zZWN0aW9uID09PSAnYm9keScpIHtcclxuICAgICAgICAgIGRhdGEucm93LmhlaWdodCA9IDEwO1xyXG4gICAgICAgICAgY29uc3QgdGQgPSBkYXRhLmNlbGwucmF3IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgY29uc3QgaW1nID0gdGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdO1xyXG4gICAgICAgICAgZG9jLmFkZEltYWdlKGltZy5zcmMsIGRhdGEuY2VsbC54LCBkYXRhLmNlbGwueSwgOCwgOCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IHNhdGlzZmllcyBVc2VyT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBhZ2VIZWFkZXJGb290ZXIoZG9jOiBqc1BERikge1xyXG4gICAgY29uc3QgcGFnZUNvdW50ID0gZG9jLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoRGF0ZS5ub3coKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tJykudG9TdHJpbmcoKTtcclxuXHJcbiAgICBjb25zdCBsb2dvQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGlyZWN0aW9uc1NvdXJjZXMubG9nbycpO1xyXG4gICAgY29uc3QgbG9nbyA9IGxvZ29Db25maWcgPyBsb2dvQ29uZmlnIDogJ2Fzc2V0cy9sb2dvLnBuZyc7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhZ2VDb3VudDsgaW5kZXgrKykge1xyXG4gICAgICBkb2Muc2V0UGFnZShpbmRleCk7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSg4KTtcclxuICAgICAgY29uc3QgcGFnZVNpemUgPSBkb2MuaW50ZXJuYWwucGFnZVNpemU7XHJcbiAgICAgIGNvbnN0IHBhZ2VIZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHRcclxuICAgICAgICA/IHBhZ2VTaXplLmhlaWdodFxyXG4gICAgICAgIDogcGFnZVNpemUuZ2V0SGVpZ2h0KCk7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gcGFnZVNpemUud2lkdGggPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VTaXplLmdldFdpZHRoKCk7XHJcbiAgICAgIGRvYy50ZXh0KGRhdGUsIDEwLCAxMCwgeyBiYXNlbGluZTogJ3RvcCcgfSk7XHJcbiAgICAgIGRvYy5hZGRJbWFnZShsb2dvLCAnUE5HJywgd2lkdGggLSAyMCwgNSwgMTAsIDEwKTtcclxuICAgICAgZG9jLnRleHQoZGF0ZSwgMTAsIHBhZ2VIZWlnaHQgLSAxMCk7XHJcbiAgICAgIGRvYy50ZXh0KFxyXG4gICAgICAgICdQYWdlICcgKyBkb2MuZ2V0Q3VycmVudFBhZ2VJbmZvKCkucGFnZU51bWJlciArICcgLyAnICsgcGFnZUNvdW50LFxyXG4gICAgICAgIHdpZHRoIC0gMjAsXHJcbiAgICAgICAgcGFnZUhlaWdodCAtIDEwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|