@igo2/geo 1.11.1 → 1.13.0-alpha.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.
Files changed (989) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/{esm2015/igo2-geo.js → esm2020/igo2-geo.mjs} +0 -0
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +299 -0
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +268 -0
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +244 -0
  10. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +80 -0
  11. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +209 -0
  12. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +79 -0
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +217 -0
  14. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +95 -0
  15. package/esm2020/lib/catalog/catalog.module.mjs +53 -0
  16. package/esm2020/lib/catalog/index.mjs +5 -0
  17. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +95 -0
  18. package/esm2020/lib/catalog/shared/catalog.enum.mjs +16 -0
  19. package/esm2020/lib/catalog/shared/catalog.interface.mjs +2 -0
  20. package/esm2020/lib/catalog/shared/catalog.service.mjs +606 -0
  21. package/esm2020/lib/catalog/shared/index.mjs +5 -0
  22. package/esm2020/lib/datasource/datasource.module.mjs +22 -0
  23. package/esm2020/lib/datasource/index.mjs +3 -0
  24. package/esm2020/lib/datasource/shared/capabilities.service.mjs +426 -0
  25. package/esm2020/lib/datasource/shared/datasource.service.mjs +236 -0
  26. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
  27. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
  28. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
  29. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +145 -0
  30. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
  31. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +109 -0
  32. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
  33. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +15 -0
  34. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +3 -0
  35. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
  36. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +29 -0
  37. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
  38. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +43 -0
  39. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
  40. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +57 -0
  41. package/esm2020/lib/datasource/shared/datasources/index.mjs +36 -0
  42. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
  43. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +28 -0
  44. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
  45. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +12 -0
  46. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
  47. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +49 -0
  48. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
  49. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +15 -0
  50. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
  51. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +54 -0
  52. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
  53. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +74 -0
  54. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +152 -0
  55. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
  56. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -0
  57. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +207 -0
  58. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
  59. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +16 -0
  60. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
  61. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +9 -0
  62. package/esm2020/lib/datasource/shared/index.mjs +5 -0
  63. package/esm2020/lib/datasource/shared/options/index.mjs +5 -0
  64. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +2 -0
  65. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +15 -0
  66. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +81 -0
  67. package/esm2020/lib/datasource/shared/options/options.service.mjs +3 -0
  68. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +357 -0
  69. package/esm2020/lib/datasource/utils/index.mjs +3 -0
  70. package/esm2020/lib/datasource/utils/tilegrid.mjs +20 -0
  71. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +224 -0
  72. package/esm2020/lib/directions/directions-buttons/index.mjs +2 -0
  73. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +290 -0
  74. package/esm2020/lib/directions/directions-inputs/index.mjs +2 -0
  75. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +196 -0
  76. package/esm2020/lib/directions/directions-results/index.mjs +2 -0
  77. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +2 -0
  78. package/esm2020/lib/directions/directions-sources/directions-source.mjs +3 -0
  79. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +16 -0
  80. package/esm2020/lib/directions/directions-sources/index.mjs +5 -0
  81. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +99 -0
  82. package/esm2020/lib/directions/directions.component.mjs +311 -0
  83. package/esm2020/lib/directions/directions.module.mjs +102 -0
  84. package/esm2020/lib/directions/index.mjs +7 -0
  85. package/esm2020/lib/directions/shared/directions-source.service.mjs +17 -0
  86. package/esm2020/lib/directions/shared/directions.enum.mjs +28 -0
  87. package/esm2020/lib/directions/shared/directions.interface.mjs +2 -0
  88. package/esm2020/lib/directions/shared/directions.service.mjs +29 -0
  89. package/esm2020/lib/directions/shared/directions.utils.mjs +510 -0
  90. package/esm2020/lib/directions/shared/index.mjs +6 -0
  91. package/esm2020/lib/directions/shared/store.mjs +24 -0
  92. package/esm2020/lib/download/download-button/download-button.component.mjs +61 -0
  93. package/esm2020/lib/download/download-button/index.mjs +2 -0
  94. package/esm2020/lib/download/download.module.mjs +42 -0
  95. package/esm2020/lib/download/index.mjs +3 -0
  96. package/esm2020/lib/download/shared/download.interface.mjs +2 -0
  97. package/esm2020/lib/download/shared/download.service.mjs +65 -0
  98. package/esm2020/lib/download/shared/index.mjs +3 -0
  99. package/esm2020/lib/draw/draw/draw-popup.component.mjs +61 -0
  100. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +48 -0
  101. package/esm2020/lib/draw/draw/draw.component.mjs +714 -0
  102. package/esm2020/lib/draw/draw/draw.module.mjs +100 -0
  103. package/esm2020/lib/draw/drawingTool.module.mjs +20 -0
  104. package/esm2020/lib/draw/index.mjs +3 -0
  105. package/esm2020/lib/draw/shared/draw-icon.service.mjs +27 -0
  106. package/esm2020/lib/draw/shared/draw-style.service.mjs +173 -0
  107. package/esm2020/lib/draw/shared/draw.enum.mjs +24 -0
  108. package/esm2020/lib/draw/shared/draw.interface.mjs +2 -0
  109. package/esm2020/lib/draw/shared/draw.utils.mjs +104 -0
  110. package/esm2020/lib/draw/shared/index.mjs +6 -0
  111. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +377 -0
  112. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +54 -0
  113. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +48 -0
  114. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +112 -0
  115. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +34 -0
  116. package/esm2020/lib/feature/feature.module.mjs +28 -0
  117. package/esm2020/lib/feature/index.mjs +4 -0
  118. package/esm2020/lib/feature/shared/feature.enums.mjs +9 -0
  119. package/esm2020/lib/feature/shared/feature.interfaces.mjs +2 -0
  120. package/esm2020/lib/feature/shared/feature.utils.mjs +348 -0
  121. package/esm2020/lib/feature/shared/index.mjs +7 -0
  122. package/esm2020/lib/feature/shared/store.mjs +112 -0
  123. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +113 -0
  124. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +94 -0
  125. package/esm2020/lib/feature/shared/strategies/index.mjs +6 -0
  126. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +104 -0
  127. package/esm2020/lib/feature/shared/strategies/loading.mjs +133 -0
  128. package/esm2020/lib/feature/shared/strategies/selection.mjs +370 -0
  129. package/esm2020/lib/feature/shared/strategies.utils.mjs +37 -0
  130. package/esm2020/lib/filter/filter.module.mjs +289 -0
  131. package/esm2020/lib/filter/index.mjs +16 -0
  132. package/esm2020/lib/filter/ogc-filter-button/index.mjs +2 -0
  133. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +140 -0
  134. package/esm2020/lib/filter/ogc-filter-form/index.mjs +2 -0
  135. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +645 -0
  136. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +2 -0
  137. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1302 -0
  138. package/esm2020/lib/filter/ogc-filter-time/index.mjs +3 -0
  139. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +177 -0
  140. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +871 -0
  141. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +2 -0
  142. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +59 -0
  143. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +2 -0
  144. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +302 -0
  145. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +3 -0
  146. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +31 -0
  147. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +31 -0
  148. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +55 -0
  149. package/esm2020/lib/filter/shared/index.mjs +12 -0
  150. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
  151. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +30 -0
  152. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +2 -0
  153. package/esm2020/lib/filter/shared/ogc-filter.mjs +692 -0
  154. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +46 -0
  155. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +23 -0
  156. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +2 -0
  157. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +269 -0
  158. package/esm2020/lib/filter/shared/time-filter.enum.mjs +13 -0
  159. package/esm2020/lib/filter/shared/time-filter.interface.mjs +2 -0
  160. package/esm2020/lib/filter/shared/time-filter.service.mjs +107 -0
  161. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
  162. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1076 -0
  163. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
  164. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +208 -0
  165. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
  166. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +144 -0
  167. package/esm2020/lib/filter/time-filter-button/index.mjs +2 -0
  168. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +78 -0
  169. package/esm2020/lib/filter/time-filter-form/index.mjs +2 -0
  170. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +734 -0
  171. package/esm2020/lib/filter/time-filter-item/index.mjs +2 -0
  172. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +119 -0
  173. package/esm2020/lib/filter/time-filter-list/index.mjs +3 -0
  174. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +31 -0
  175. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +39 -0
  176. package/esm2020/lib/geo.module.mjs +102 -0
  177. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +511 -0
  178. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +189 -0
  179. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +64 -0
  180. package/esm2020/lib/geometry/geometry.module.mjs +27 -0
  181. package/esm2020/lib/geometry/index.mjs +4 -0
  182. package/esm2020/lib/geometry/shared/controls/draw.mjs +271 -0
  183. package/esm2020/lib/geometry/shared/controls/index.mjs +4 -0
  184. package/esm2020/lib/geometry/shared/controls/modify.mjs +521 -0
  185. package/esm2020/lib/geometry/shared/controls/slice.mjs +177 -0
  186. package/esm2020/lib/geometry/shared/geometry.errors.mjs +26 -0
  187. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +2 -0
  188. package/esm2020/lib/geometry/shared/geometry.utils.mjs +122 -0
  189. package/esm2020/lib/geometry/shared/index.mjs +5 -0
  190. package/esm2020/lib/import-export/export-button/export-button.component.mjs +64 -0
  191. package/esm2020/lib/import-export/export-button/index.mjs +2 -0
  192. package/esm2020/lib/import-export/import-export/import-export.component.mjs +1190 -0
  193. package/esm2020/lib/import-export/import-export/index.mjs +2 -0
  194. package/esm2020/lib/import-export/import-export.module.mjs +93 -0
  195. package/esm2020/lib/import-export/index.mjs +5 -0
  196. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +135 -0
  197. package/esm2020/lib/import-export/shared/export.errors.mjs +15 -0
  198. package/esm2020/lib/import-export/shared/export.interface.mjs +2 -0
  199. package/esm2020/lib/import-export/shared/export.service.mjs +195 -0
  200. package/esm2020/lib/import-export/shared/export.type.mjs +4 -0
  201. package/esm2020/lib/import-export/shared/export.utils.mjs +55 -0
  202. package/esm2020/lib/import-export/shared/import.errors.mjs +39 -0
  203. package/esm2020/lib/import-export/shared/import.interface.mjs +2 -0
  204. package/esm2020/lib/import-export/shared/import.service.mjs +195 -0
  205. package/esm2020/lib/import-export/shared/import.utils.mjs +234 -0
  206. package/esm2020/lib/import-export/shared/index.mjs +11 -0
  207. package/esm2020/lib/import-export/style-list/index.mjs +5 -0
  208. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +2 -0
  209. package/esm2020/lib/import-export/style-list/style-list.module.mjs +23 -0
  210. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +21 -0
  211. package/esm2020/lib/import-export/style-list/style-list.service.mjs +51 -0
  212. package/esm2020/lib/layer/index.mjs +10 -0
  213. package/esm2020/lib/layer/layer-item/index.mjs +2 -0
  214. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +300 -0
  215. package/esm2020/lib/layer/layer-legend/index.mjs +2 -0
  216. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +382 -0
  217. package/esm2020/lib/layer/layer-legend-item/index.mjs +2 -0
  218. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +84 -0
  219. package/esm2020/lib/layer/layer-legend-list/index.mjs +3 -0
  220. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +48 -0
  221. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +195 -0
  222. package/esm2020/lib/layer/layer-list/index.mjs +4 -0
  223. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +59 -0
  224. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1024 -0
  225. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +19 -0
  226. package/esm2020/lib/layer/layer-list-tool/index.mjs +5 -0
  227. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +165 -0
  228. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +7 -0
  229. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +2 -0
  230. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +22 -0
  231. package/esm2020/lib/layer/layer.module.mjs +173 -0
  232. package/esm2020/lib/layer/shared/clusterParam.mjs +2 -0
  233. package/esm2020/lib/layer/shared/index.mjs +7 -0
  234. package/esm2020/lib/layer/shared/layer.enums.mjs +2 -0
  235. package/esm2020/lib/layer/shared/layer.service.mjs +186 -0
  236. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
  237. package/esm2020/lib/layer/shared/layers/any-layer.mjs +2 -0
  238. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
  239. package/esm2020/lib/layer/shared/layers/image-layer.mjs +68 -0
  240. package/esm2020/lib/layer/shared/layers/index.mjs +13 -0
  241. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +17 -0
  242. package/esm2020/lib/layer/shared/layers/layer.mjs +170 -0
  243. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
  244. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +47 -0
  245. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
  246. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +376 -0
  247. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
  248. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +104 -0
  249. package/esm2020/lib/layer/shared/style.service.mjs +356 -0
  250. package/esm2020/lib/layer/shared/vector-style.interface.mjs +2 -0
  251. package/esm2020/lib/layer/track-feature-button/index.mjs +2 -0
  252. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +59 -0
  253. package/esm2020/lib/layer/utils/image-watcher.mjs +62 -0
  254. package/esm2020/lib/layer/utils/index.mjs +7 -0
  255. package/esm2020/lib/layer/utils/layer.utils.mjs +10 -0
  256. package/esm2020/lib/layer/utils/layerSync-watcher.mjs +242 -0
  257. package/esm2020/lib/layer/utils/outputLegend.mjs +27 -0
  258. package/esm2020/lib/layer/utils/tile-watcher.mjs +50 -0
  259. package/esm2020/lib/layer/utils/vector-watcher.mjs +48 -0
  260. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
  261. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +97 -0
  262. package/esm2020/lib/map/baselayers-switcher/index.mjs +3 -0
  263. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +133 -0
  264. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +76 -0
  265. package/esm2020/lib/map/geolocate-button/index.mjs +2 -0
  266. package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +63 -0
  267. package/{esm2015/lib/map/home-extent-button/index.js → esm2020/lib/map/home-extent-button/index.mjs} +0 -0
  268. package/esm2020/lib/map/index.mjs +14 -0
  269. package/esm2020/lib/map/info-section/index.mjs +2 -0
  270. package/esm2020/lib/map/info-section/info-section.component.mjs +30 -0
  271. package/esm2020/lib/map/map-browser/index.mjs +2 -0
  272. package/esm2020/lib/map/map-browser/map-browser.component.mjs +66 -0
  273. package/esm2020/lib/map/map-center/index.mjs +2 -0
  274. package/esm2020/lib/map/map-center/map-center.component.mjs +50 -0
  275. package/esm2020/lib/map/map.module.mjs +127 -0
  276. package/esm2020/lib/map/menu-button/index.mjs +2 -0
  277. package/esm2020/lib/map/menu-button/menu-button.component.mjs +62 -0
  278. package/esm2020/lib/map/offline-button/index.mjs +2 -0
  279. package/esm2020/lib/map/offline-button/offline-button.component.mjs +76 -0
  280. package/esm2020/lib/map/rotation-button/index.mjs +2 -0
  281. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +91 -0
  282. package/esm2020/lib/map/shared/controllers/controller.mjs +42 -0
  283. package/esm2020/lib/map/shared/controllers/geolocation.mjs +308 -0
  284. package/esm2020/lib/map/shared/controllers/index.mjs +4 -0
  285. package/esm2020/lib/map/shared/controllers/view.mjs +342 -0
  286. package/esm2020/lib/map/shared/hover-feature.directive.mjs +506 -0
  287. package/esm2020/lib/map/shared/index.mjs +13 -0
  288. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +107 -0
  289. package/esm2020/lib/map/shared/map.enums.mjs +6 -0
  290. package/esm2020/lib/map/shared/map.interface.mjs +2 -0
  291. package/esm2020/lib/map/shared/map.mjs +417 -0
  292. package/esm2020/lib/map/shared/map.service.mjs +29 -0
  293. package/esm2020/lib/map/shared/map.utils.mjs +459 -0
  294. package/esm2020/lib/map/shared/mapOffline.directive.mjs +163 -0
  295. package/esm2020/lib/map/shared/projection.interfaces.mjs +2 -0
  296. package/esm2020/lib/map/shared/projection.service.mjs +65 -0
  297. package/esm2020/lib/map/shared/projection.utils.mjs +64 -0
  298. package/esm2020/lib/map/swipe-control/index.mjs +2 -0
  299. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +193 -0
  300. package/esm2020/lib/map/utils/layer-watcher.mjs +58 -0
  301. package/esm2020/lib/map/wake-lock-button/index.mjs +2 -0
  302. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +114 -0
  303. package/esm2020/lib/map/zoom-button/index.mjs +2 -0
  304. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +40 -0
  305. package/esm2020/lib/measure/index.mjs +4 -0
  306. package/esm2020/lib/measure/measure.module.mjs +20 -0
  307. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +37 -0
  308. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +180 -0
  309. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +140 -0
  310. package/esm2020/lib/measure/measurer/measurer.component.mjs +1042 -0
  311. package/esm2020/lib/measure/measurer/measurer.module.mjs +94 -0
  312. package/esm2020/lib/measure/shared/index.mjs +4 -0
  313. package/esm2020/lib/measure/shared/measure.enum.mjs +37 -0
  314. package/esm2020/lib/measure/shared/measure.interfaces.mjs +2 -0
  315. package/esm2020/lib/measure/shared/measure.utils.mjs +489 -0
  316. package/esm2020/lib/metadata/index.mjs +3 -0
  317. package/esm2020/lib/metadata/metadata-button/index.mjs +2 -0
  318. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +134 -0
  319. package/esm2020/lib/metadata/metadata.module.mjs +55 -0
  320. package/esm2020/lib/metadata/shared/index.mjs +3 -0
  321. package/esm2020/lib/metadata/shared/metadata.interface.mjs +2 -0
  322. package/esm2020/lib/metadata/shared/metadata.service.mjs +19 -0
  323. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +6 -0
  324. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +2 -0
  325. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +161 -0
  326. package/esm2020/lib/offline/geoDB/index.mjs +4 -0
  327. package/esm2020/lib/offline/index.mjs +3 -0
  328. package/esm2020/lib/offline/shared/geo-network.service.mjs +66 -0
  329. package/esm2020/lib/offline/shared/index.mjs +2 -0
  330. package/esm2020/lib/overlay/index.mjs +2 -0
  331. package/esm2020/lib/overlay/overlay.module.mjs +23 -0
  332. package/esm2020/lib/overlay/shared/index.mjs +7 -0
  333. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +69 -0
  334. package/esm2020/lib/overlay/shared/overlay.directive.mjs +33 -0
  335. package/esm2020/lib/overlay/shared/overlay.enum.mjs +8 -0
  336. package/esm2020/lib/overlay/shared/overlay.mjs +130 -0
  337. package/esm2020/lib/overlay/shared/overlay.service.mjs +27 -0
  338. package/esm2020/lib/overlay/shared/overlay.utils.mjs +103 -0
  339. package/esm2020/lib/print/index.mjs +4 -0
  340. package/esm2020/lib/print/print/print.component.mjs +123 -0
  341. package/esm2020/lib/print/print-form/index.mjs +2 -0
  342. package/esm2020/lib/print/print-form/print-form.component.mjs +405 -0
  343. package/esm2020/lib/print/print.module.mjs +65 -0
  344. package/esm2020/lib/print/shared/index.mjs +4 -0
  345. package/esm2020/lib/print/shared/print.interface.mjs +2 -0
  346. package/esm2020/lib/print/shared/print.service.mjs +807 -0
  347. package/esm2020/lib/print/shared/print.type.mjs +30 -0
  348. package/esm2020/lib/query/index.mjs +2 -0
  349. package/esm2020/lib/query/query.module.mjs +29 -0
  350. package/esm2020/lib/query/shared/index.mjs +7 -0
  351. package/esm2020/lib/query/shared/query-search-source.mjs +35 -0
  352. package/esm2020/lib/query/shared/query-search-source.providers.mjs +22 -0
  353. package/esm2020/lib/query/shared/query.directive.mjs +261 -0
  354. package/esm2020/lib/query/shared/query.enums.mjs +30 -0
  355. package/esm2020/lib/query/shared/query.interfaces.mjs +2 -0
  356. package/esm2020/lib/query/shared/query.service.mjs +613 -0
  357. package/esm2020/lib/query/shared/query.utils.mjs +37 -0
  358. package/esm2020/lib/search/index.mjs +12 -0
  359. package/esm2020/lib/search/search-bar/search-bar.component.mjs +489 -0
  360. package/esm2020/lib/search/search-bar/search-bar.module.mjs +75 -0
  361. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +35 -0
  362. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +193 -0
  363. package/esm2020/lib/search/search-results/search-results-item.component.mjs +124 -0
  364. package/esm2020/lib/search/search-results/search-results.component.mjs +331 -0
  365. package/esm2020/lib/search/search-results/search-results.module.mjs +77 -0
  366. package/esm2020/lib/search/search-selector/search-selector.component.mjs +123 -0
  367. package/esm2020/lib/search/search-selector/search-selector.module.mjs +56 -0
  368. package/esm2020/lib/search/search-settings/search-settings.component.mjs +418 -0
  369. package/esm2020/lib/search/search-settings/search-settings.module.mjs +60 -0
  370. package/esm2020/lib/search/search.module.mjs +67 -0
  371. package/esm2020/lib/search/shared/index.mjs +9 -0
  372. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +322 -0
  373. package/esm2020/lib/search/shared/search-source-service.providers.mjs +20 -0
  374. package/esm2020/lib/search/shared/search-source.service.mjs +47 -0
  375. package/esm2020/lib/search/shared/search.enums.mjs +4 -0
  376. package/esm2020/lib/search/shared/search.interfaces.mjs +2 -0
  377. package/esm2020/lib/search/shared/search.service.mjs +118 -0
  378. package/esm2020/lib/search/shared/search.utils.mjs +78 -0
  379. package/esm2020/lib/search/shared/sources/cadastre.mjs +126 -0
  380. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +23 -0
  381. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
  382. package/esm2020/lib/search/shared/sources/coordinates.mjs +147 -0
  383. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +40 -0
  384. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
  385. package/esm2020/lib/search/shared/sources/icherche.mjs +755 -0
  386. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +66 -0
  387. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
  388. package/esm2020/lib/search/shared/sources/ilayer.mjs +320 -0
  389. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +40 -0
  390. package/esm2020/lib/search/shared/sources/index.mjs +20 -0
  391. package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
  392. package/esm2020/lib/search/shared/sources/nominatim.mjs +253 -0
  393. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +23 -0
  394. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +2 -0
  395. package/esm2020/lib/search/shared/sources/source.mjs +179 -0
  396. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
  397. package/esm2020/lib/search/shared/sources/storedqueries.mjs +425 -0
  398. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +41 -0
  399. package/esm2020/lib/toast/index.mjs +2 -0
  400. package/esm2020/lib/toast/toast.component.mjs +113 -0
  401. package/esm2020/lib/toast/toast.module.mjs +45 -0
  402. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +2 -0
  403. package/esm2020/lib/utils/commonVectorStyle.mjs +75 -0
  404. package/esm2020/lib/utils/googleLinks.mjs +13 -0
  405. package/esm2020/lib/utils/id-generator.mjs +110 -0
  406. package/esm2020/lib/utils/index.mjs +6 -0
  407. package/esm2020/lib/utils/osmLinks.mjs +10 -0
  408. package/esm2020/lib/wkt/index.mjs +2 -0
  409. package/esm2020/lib/wkt/shared/index.mjs +2 -0
  410. package/esm2020/lib/wkt/shared/wkt.service.mjs +239 -0
  411. package/esm2020/lib/wkt/wkt.module.mjs +22 -0
  412. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +48 -0
  413. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +36 -0
  414. package/esm2020/lib/workspace/confirmation-popup/index.mjs +3 -0
  415. package/esm2020/lib/workspace/index.mjs +8 -0
  416. package/esm2020/lib/workspace/shared/edition-workspace.mjs +278 -0
  417. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +642 -0
  418. package/esm2020/lib/workspace/shared/feature-workspace.mjs +35 -0
  419. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +150 -0
  420. package/esm2020/lib/workspace/shared/index.mjs +8 -0
  421. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +35 -0
  422. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +150 -0
  423. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +261 -0
  424. package/esm2020/lib/workspace/shared/workspace.utils.mjs +24 -0
  425. package/esm2020/lib/workspace/widgets/index.mjs +4 -0
  426. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +47 -0
  427. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +36 -0
  428. package/esm2020/lib/workspace/widgets/widgets.mjs +15 -0
  429. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +133 -0
  430. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +28 -0
  431. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +113 -0
  432. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +28 -0
  433. package/esm2020/lib/workspace/workspace.module.mjs +62 -0
  434. package/esm2020/public_api.mjs +55 -0
  435. package/fesm2015/igo2-geo.mjs +42904 -0
  436. package/fesm2015/igo2-geo.mjs.map +1 -0
  437. package/fesm2020/igo2-geo.mjs +41183 -0
  438. package/fesm2020/igo2-geo.mjs.map +1 -0
  439. package/{igo2-geo.d.ts → index.d.ts} +0 -0
  440. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
  441. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  442. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  443. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -4
  444. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
  445. package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
  446. package/lib/catalog/shared/catalog.interface.d.ts +9 -1
  447. package/lib/catalog/shared/catalog.service.d.ts +1 -0
  448. package/lib/datasource/shared/datasources/datasource.interface.d.ts +7 -1
  449. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +1 -1
  450. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
  451. package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
  452. package/lib/directions/directions.component.d.ts +1 -1
  453. package/lib/download/download-button/download-button.component.d.ts +1 -1
  454. package/lib/draw/draw/draw-popup.component.d.ts +4 -2
  455. package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
  456. package/lib/draw/draw/draw.component.d.ts +22 -5
  457. package/lib/draw/shared/draw-style.service.d.ts +6 -0
  458. package/lib/draw/shared/draw.enum.d.ts +15 -0
  459. package/lib/feature/feature-details/feature-details.component.d.ts +13 -3
  460. package/lib/feature/feature-details/feature-details.directive.d.ts +3 -14
  461. package/lib/feature/feature-form/feature-form.component.d.ts +1 -1
  462. package/lib/feature/shared/feature.interfaces.d.ts +2 -2
  463. package/lib/filter/filter.module.d.ts +1 -1
  464. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
  465. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +1 -1
  466. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +33 -15
  467. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  468. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -6
  469. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +1 -1
  470. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
  471. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  472. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +1 -1
  473. package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
  474. package/lib/filter/shared/ogc-filter.interface.d.ts +19 -2
  475. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +5 -5
  476. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +4 -4
  477. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -3
  478. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  479. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +1 -1
  480. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  481. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  482. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
  483. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
  484. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +3 -3
  485. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  486. package/lib/import-export/import-export/import-export.component.d.ts +5 -5
  487. package/lib/import-export/shared/drop-geo-file.directive.d.ts +1 -1
  488. package/lib/import-export/shared/import.utils.d.ts +1 -1
  489. package/lib/layer/layer-item/layer-item.component.d.ts +2 -1
  490. package/lib/layer/layer-legend/layer-legend.component.d.ts +4 -3
  491. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
  492. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  493. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
  494. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
  495. package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
  496. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  497. package/lib/layer/shared/layer.service.d.ts +6 -3
  498. package/lib/layer/shared/layers/layer.interface.d.ts +1 -0
  499. package/lib/layer/shared/layers/vector-layer.d.ts +5 -1
  500. package/lib/layer/shared/style.service.d.ts +38 -3
  501. package/lib/layer/shared/vector-style.interface.d.ts +11 -0
  502. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
  503. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
  504. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  505. package/lib/map/geolocate-button/geolocate-button.component.d.ts +9 -2
  506. package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
  507. package/lib/map/index.d.ts +1 -0
  508. package/lib/map/info-section/info-section.component.d.ts +1 -1
  509. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  510. package/lib/map/map-center/map-center.component.d.ts +1 -1
  511. package/lib/map/map.module.d.ts +13 -12
  512. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  513. package/lib/map/offline-button/offline-button.component.d.ts +1 -1
  514. package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
  515. package/lib/map/shared/controllers/geolocation.d.ts +112 -0
  516. package/lib/map/shared/controllers/index.d.ts +1 -0
  517. package/lib/map/shared/controllers/view.d.ts +7 -0
  518. package/lib/map/shared/hover-feature.directive.d.ts +2 -2
  519. package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
  520. package/lib/map/shared/map.d.ts +7 -19
  521. package/lib/map/shared/map.interface.d.ts +0 -1
  522. package/lib/map/shared/mapOffline.directive.d.ts +1 -1
  523. package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
  524. package/lib/map/wake-lock-button/index.d.ts +1 -0
  525. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -0
  526. package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
  527. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  528. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  529. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  530. package/lib/measure/measurer/measurer.component.d.ts +1 -1
  531. package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
  532. package/lib/offline/geoDB/geoDB.enums.d.ts +4 -0
  533. package/lib/offline/geoDB/geoDB.interface.d.ts +9 -0
  534. package/lib/offline/geoDB/geoDB.service.d.ts +35 -0
  535. package/lib/offline/geoDB/index.d.ts +3 -0
  536. package/lib/offline/index.d.ts +2 -0
  537. package/lib/offline/shared/geo-network.service.d.ts +28 -0
  538. package/lib/offline/shared/index.d.ts +1 -0
  539. package/lib/overlay/shared/overlay.directive.d.ts +1 -1
  540. package/lib/print/print/print.component.d.ts +1 -1
  541. package/lib/print/print-form/print-form.component.d.ts +17 -17
  542. package/lib/print/shared/print.service.d.ts +9 -3
  543. package/lib/query/query.module.d.ts +2 -1
  544. package/lib/query/shared/query.directive.d.ts +1 -1
  545. package/lib/query/shared/query.service.d.ts +7 -1
  546. package/lib/search/search-bar/search-bar.component.d.ts +1 -1
  547. package/lib/search/search-bar/search-url-param.directive.d.ts +1 -1
  548. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  549. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  550. package/lib/search/search-results/search-results.component.d.ts +1 -1
  551. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  552. package/lib/search/search-settings/search-settings.component.d.ts +1 -1
  553. package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
  554. package/lib/toast/toast.component.d.ts +1 -1
  555. package/lib/wkt/shared/wkt.service.d.ts +1 -1
  556. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  557. package/lib/workspace/shared/edition-workspace.d.ts +2 -1
  558. package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
  559. package/lib/workspace/shared/feature-workspace.service.d.ts +3 -2
  560. package/lib/workspace/shared/wfs-workspace.service.d.ts +3 -2
  561. package/lib/workspace/shared/wms-workspace.service.d.ts +5 -2
  562. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  563. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  564. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  565. package/ngcc.config.js +3 -3
  566. package/package.json +35 -20
  567. package/public_api.d.ts +1 -0
  568. package/style/geo.theming.scss +12 -12
  569. package/bundles/igo2-geo.umd.js +0 -45805
  570. package/bundles/igo2-geo.umd.js.map +0 -1
  571. package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +0 -305
  572. package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +0 -274
  573. package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +0 -248
  574. package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +0 -82
  575. package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +0 -235
  576. package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +0 -85
  577. package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +0 -224
  578. package/esm2015/lib/catalog/catalog-library/catalog-library.module.js +0 -97
  579. package/esm2015/lib/catalog/catalog.module.js +0 -55
  580. package/esm2015/lib/catalog/index.js +0 -5
  581. package/esm2015/lib/catalog/shared/catalog.abstract.js +0 -95
  582. package/esm2015/lib/catalog/shared/catalog.enum.js +0 -16
  583. package/esm2015/lib/catalog/shared/catalog.interface.js +0 -2
  584. package/esm2015/lib/catalog/shared/catalog.service.js +0 -535
  585. package/esm2015/lib/catalog/shared/index.js +0 -5
  586. package/esm2015/lib/datasource/datasource.module.js +0 -22
  587. package/esm2015/lib/datasource/index.js +0 -3
  588. package/esm2015/lib/datasource/shared/capabilities.service.js +0 -427
  589. package/esm2015/lib/datasource/shared/datasource.service.js +0 -236
  590. package/esm2015/lib/datasource/shared/datasources/any-datasource.interface.js +0 -2
  591. package/esm2015/lib/datasource/shared/datasources/any-datasource.js +0 -2
  592. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js +0 -2
  593. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +0 -145
  594. package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +0 -2
  595. package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +0 -109
  596. package/esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js +0 -2
  597. package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +0 -15
  598. package/esm2015/lib/datasource/shared/datasources/data.service.js +0 -3
  599. package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +0 -2
  600. package/esm2015/lib/datasource/shared/datasources/datasource.js +0 -29
  601. package/esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js +0 -2
  602. package/esm2015/lib/datasource/shared/datasources/feature-datasource.js +0 -43
  603. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js +0 -2
  604. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +0 -57
  605. package/esm2015/lib/datasource/shared/datasources/index.js +0 -36
  606. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +0 -2
  607. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +0 -28
  608. package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +0 -2
  609. package/esm2015/lib/datasource/shared/datasources/osm-datasource.js +0 -12
  610. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js +0 -2
  611. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +0 -49
  612. package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js +0 -2
  613. package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js +0 -15
  614. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +0 -2
  615. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +0 -54
  616. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +0 -2
  617. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +0 -71
  618. package/esm2015/lib/datasource/shared/datasources/wfs.service.js +0 -153
  619. package/esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js +0 -2
  620. package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +0 -202
  621. package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +0 -207
  622. package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +0 -2
  623. package/esm2015/lib/datasource/shared/datasources/wmts-datasource.js +0 -16
  624. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +0 -2
  625. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +0 -9
  626. package/esm2015/lib/datasource/shared/index.js +0 -5
  627. package/esm2015/lib/datasource/shared/options/index.js +0 -5
  628. package/esm2015/lib/datasource/shared/options/options-api.interface.js +0 -2
  629. package/esm2015/lib/datasource/shared/options/options-api.providers.js +0 -15
  630. package/esm2015/lib/datasource/shared/options/options-api.service.js +0 -81
  631. package/esm2015/lib/datasource/shared/options/options.service.js +0 -3
  632. package/esm2015/lib/datasource/utils/esri-style-generator.js +0 -357
  633. package/esm2015/lib/datasource/utils/index.js +0 -3
  634. package/esm2015/lib/datasource/utils/tilegrid.js +0 -20
  635. package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +0 -229
  636. package/esm2015/lib/directions/directions-buttons/index.js +0 -2
  637. package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +0 -300
  638. package/esm2015/lib/directions/directions-inputs/index.js +0 -2
  639. package/esm2015/lib/directions/directions-results/directions-results.component.js +0 -204
  640. package/esm2015/lib/directions/directions-results/index.js +0 -2
  641. package/esm2015/lib/directions/directions-sources/directions-source.interface.js +0 -2
  642. package/esm2015/lib/directions/directions-sources/directions-source.js +0 -3
  643. package/esm2015/lib/directions/directions-sources/directions-source.provider.js +0 -16
  644. package/esm2015/lib/directions/directions-sources/index.js +0 -5
  645. package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +0 -99
  646. package/esm2015/lib/directions/directions.component.js +0 -316
  647. package/esm2015/lib/directions/directions.module.js +0 -104
  648. package/esm2015/lib/directions/index.js +0 -7
  649. package/esm2015/lib/directions/shared/directions-source.service.js +0 -17
  650. package/esm2015/lib/directions/shared/directions.enum.js +0 -28
  651. package/esm2015/lib/directions/shared/directions.interface.js +0 -2
  652. package/esm2015/lib/directions/shared/directions.service.js +0 -29
  653. package/esm2015/lib/directions/shared/directions.utils.js +0 -510
  654. package/esm2015/lib/directions/shared/index.js +0 -6
  655. package/esm2015/lib/directions/shared/store.js +0 -24
  656. package/esm2015/lib/download/download-button/download-button.component.js +0 -66
  657. package/esm2015/lib/download/download-button/index.js +0 -2
  658. package/esm2015/lib/download/download.module.js +0 -44
  659. package/esm2015/lib/download/index.js +0 -3
  660. package/esm2015/lib/download/shared/download.interface.js +0 -2
  661. package/esm2015/lib/download/shared/download.service.js +0 -65
  662. package/esm2015/lib/download/shared/index.js +0 -3
  663. package/esm2015/lib/draw/draw/draw-popup.component.js +0 -63
  664. package/esm2015/lib/draw/draw/draw-shorcuts.component.js +0 -64
  665. package/esm2015/lib/draw/draw/draw.component.js +0 -637
  666. package/esm2015/lib/draw/draw/draw.module.js +0 -102
  667. package/esm2015/lib/draw/drawingTool.module.js +0 -20
  668. package/esm2015/lib/draw/index.js +0 -3
  669. package/esm2015/lib/draw/shared/draw-icon.service.js +0 -27
  670. package/esm2015/lib/draw/shared/draw-style.service.js +0 -154
  671. package/esm2015/lib/draw/shared/draw.enum.js +0 -8
  672. package/esm2015/lib/draw/shared/draw.interface.js +0 -2
  673. package/esm2015/lib/draw/shared/draw.utils.js +0 -104
  674. package/esm2015/lib/draw/shared/index.js +0 -6
  675. package/esm2015/lib/feature/feature-details/feature-details.component.js +0 -317
  676. package/esm2015/lib/feature/feature-details/feature-details.directive.js +0 -109
  677. package/esm2015/lib/feature/feature-details/feature-details.module.js +0 -50
  678. package/esm2015/lib/feature/feature-form/feature-form.component.js +0 -117
  679. package/esm2015/lib/feature/feature-form/feature-form.module.js +0 -36
  680. package/esm2015/lib/feature/feature.module.js +0 -30
  681. package/esm2015/lib/feature/index.js +0 -4
  682. package/esm2015/lib/feature/shared/feature.enums.js +0 -9
  683. package/esm2015/lib/feature/shared/feature.interfaces.js +0 -2
  684. package/esm2015/lib/feature/shared/feature.utils.js +0 -348
  685. package/esm2015/lib/feature/shared/index.js +0 -7
  686. package/esm2015/lib/feature/shared/store.js +0 -112
  687. package/esm2015/lib/feature/shared/strategies/in-map-extent.js +0 -114
  688. package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +0 -94
  689. package/esm2015/lib/feature/shared/strategies/index.js +0 -6
  690. package/esm2015/lib/feature/shared/strategies/loading-layer.js +0 -104
  691. package/esm2015/lib/feature/shared/strategies/loading.js +0 -133
  692. package/esm2015/lib/feature/shared/strategies/selection.js +0 -370
  693. package/esm2015/lib/feature/shared/strategies.utils.js +0 -37
  694. package/esm2015/lib/filter/filter.module.js +0 -287
  695. package/esm2015/lib/filter/index.js +0 -16
  696. package/esm2015/lib/filter/ogc-filter-button/index.js +0 -2
  697. package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +0 -136
  698. package/esm2015/lib/filter/ogc-filter-form/index.js +0 -2
  699. package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +0 -657
  700. package/esm2015/lib/filter/ogc-filter-selection/index.js +0 -2
  701. package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +0 -993
  702. package/esm2015/lib/filter/ogc-filter-time/index.js +0 -3
  703. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +0 -185
  704. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +0 -898
  705. package/esm2015/lib/filter/ogc-filterable-form/index.js +0 -2
  706. package/esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js +0 -62
  707. package/esm2015/lib/filter/ogc-filterable-item/index.js +0 -2
  708. package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +0 -306
  709. package/esm2015/lib/filter/ogc-filterable-list/index.js +0 -3
  710. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +0 -31
  711. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +0 -35
  712. package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +0 -54
  713. package/esm2015/lib/filter/shared/index.js +0 -12
  714. package/esm2015/lib/filter/shared/ogc-filter-time.service.js +0 -73
  715. package/esm2015/lib/filter/shared/ogc-filter.enum.js +0 -30
  716. package/esm2015/lib/filter/shared/ogc-filter.interface.js +0 -2
  717. package/esm2015/lib/filter/shared/ogc-filter.js +0 -682
  718. package/esm2015/lib/filter/shared/ogc-filter.service.js +0 -46
  719. package/esm2015/lib/filter/shared/spatial-filter.enum.js +0 -23
  720. package/esm2015/lib/filter/shared/spatial-filter.interface.js +0 -2
  721. package/esm2015/lib/filter/shared/spatial-filter.service.js +0 -269
  722. package/esm2015/lib/filter/shared/time-filter.enum.js +0 -13
  723. package/esm2015/lib/filter/shared/time-filter.interface.js +0 -2
  724. package/esm2015/lib/filter/shared/time-filter.service.js +0 -107
  725. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +0 -2
  726. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +0 -1108
  727. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +0 -2
  728. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +0 -224
  729. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +0 -2
  730. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +0 -157
  731. package/esm2015/lib/filter/time-filter-button/index.js +0 -2
  732. package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +0 -83
  733. package/esm2015/lib/filter/time-filter-form/index.js +0 -2
  734. package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +0 -772
  735. package/esm2015/lib/filter/time-filter-item/index.js +0 -2
  736. package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +0 -126
  737. package/esm2015/lib/filter/time-filter-list/index.js +0 -3
  738. package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +0 -31
  739. package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +0 -43
  740. package/esm2015/lib/geo.module.js +0 -102
  741. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +0 -515
  742. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +0 -199
  743. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +0 -66
  744. package/esm2015/lib/geometry/geometry.module.js +0 -29
  745. package/esm2015/lib/geometry/index.js +0 -4
  746. package/esm2015/lib/geometry/shared/controls/draw.js +0 -271
  747. package/esm2015/lib/geometry/shared/controls/index.js +0 -4
  748. package/esm2015/lib/geometry/shared/controls/modify.js +0 -521
  749. package/esm2015/lib/geometry/shared/controls/slice.js +0 -177
  750. package/esm2015/lib/geometry/shared/geometry.errors.js +0 -26
  751. package/esm2015/lib/geometry/shared/geometry.interfaces.js +0 -2
  752. package/esm2015/lib/geometry/shared/geometry.utils.js +0 -122
  753. package/esm2015/lib/geometry/shared/index.js +0 -5
  754. package/esm2015/lib/import-export/export-button/export-button.component.js +0 -70
  755. package/esm2015/lib/import-export/export-button/index.js +0 -2
  756. package/esm2015/lib/import-export/import-export/import-export.component.js +0 -1238
  757. package/esm2015/lib/import-export/import-export/index.js +0 -2
  758. package/esm2015/lib/import-export/import-export.module.js +0 -95
  759. package/esm2015/lib/import-export/index.js +0 -5
  760. package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +0 -136
  761. package/esm2015/lib/import-export/shared/export.errors.js +0 -15
  762. package/esm2015/lib/import-export/shared/export.interface.js +0 -2
  763. package/esm2015/lib/import-export/shared/export.service.js +0 -187
  764. package/esm2015/lib/import-export/shared/export.type.js +0 -4
  765. package/esm2015/lib/import-export/shared/export.utils.js +0 -55
  766. package/esm2015/lib/import-export/shared/import.errors.js +0 -39
  767. package/esm2015/lib/import-export/shared/import.interface.js +0 -2
  768. package/esm2015/lib/import-export/shared/import.service.js +0 -195
  769. package/esm2015/lib/import-export/shared/import.utils.js +0 -207
  770. package/esm2015/lib/import-export/shared/index.js +0 -11
  771. package/esm2015/lib/import-export/style-list/index.js +0 -5
  772. package/esm2015/lib/import-export/style-list/style-list.interface.js +0 -2
  773. package/esm2015/lib/import-export/style-list/style-list.module.js +0 -23
  774. package/esm2015/lib/import-export/style-list/style-list.provider.js +0 -21
  775. package/esm2015/lib/import-export/style-list/style-list.service.js +0 -51
  776. package/esm2015/lib/layer/index.js +0 -10
  777. package/esm2015/lib/layer/layer-item/index.js +0 -2
  778. package/esm2015/lib/layer/layer-item/layer-item.component.js +0 -298
  779. package/esm2015/lib/layer/layer-legend/index.js +0 -2
  780. package/esm2015/lib/layer/layer-legend/layer-legend.component.js +0 -394
  781. package/esm2015/lib/layer/layer-legend-item/index.js +0 -2
  782. package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +0 -91
  783. package/esm2015/lib/layer/layer-legend-list/index.js +0 -3
  784. package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +0 -48
  785. package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +0 -200
  786. package/esm2015/lib/layer/layer-list/index.js +0 -4
  787. package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +0 -59
  788. package/esm2015/lib/layer/layer-list/layer-list.component.js +0 -1043
  789. package/esm2015/lib/layer/layer-list/layer-list.enum.js +0 -19
  790. package/esm2015/lib/layer/layer-list-tool/index.js +0 -5
  791. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +0 -176
  792. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +0 -7
  793. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +0 -2
  794. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +0 -22
  795. package/esm2015/lib/layer/layer.module.js +0 -174
  796. package/esm2015/lib/layer/shared/clusterParam.js +0 -2
  797. package/esm2015/lib/layer/shared/index.js +0 -7
  798. package/esm2015/lib/layer/shared/layer.enums.js +0 -2
  799. package/esm2015/lib/layer/shared/layer.service.js +0 -162
  800. package/esm2015/lib/layer/shared/layers/any-layer.interface.js +0 -2
  801. package/esm2015/lib/layer/shared/layers/any-layer.js +0 -2
  802. package/esm2015/lib/layer/shared/layers/image-layer.interface.js +0 -2
  803. package/esm2015/lib/layer/shared/layers/image-layer.js +0 -68
  804. package/esm2015/lib/layer/shared/layers/index.js +0 -13
  805. package/esm2015/lib/layer/shared/layers/layer.interface.js +0 -17
  806. package/esm2015/lib/layer/shared/layers/layer.js +0 -169
  807. package/esm2015/lib/layer/shared/layers/tile-layer.interface.js +0 -2
  808. package/esm2015/lib/layer/shared/layers/tile-layer.js +0 -47
  809. package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +0 -2
  810. package/esm2015/lib/layer/shared/layers/vector-layer.js +0 -325
  811. package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +0 -2
  812. package/esm2015/lib/layer/shared/layers/vectortile-layer.js +0 -104
  813. package/esm2015/lib/layer/shared/style.service.js +0 -289
  814. package/esm2015/lib/layer/shared/vector-style.interface.js +0 -2
  815. package/esm2015/lib/layer/track-feature-button/index.js +0 -2
  816. package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +0 -64
  817. package/esm2015/lib/layer/utils/image-watcher.js +0 -62
  818. package/esm2015/lib/layer/utils/index.js +0 -7
  819. package/esm2015/lib/layer/utils/layer.utils.js +0 -11
  820. package/esm2015/lib/layer/utils/layerSync-watcher.js +0 -249
  821. package/esm2015/lib/layer/utils/outputLegend.js +0 -25
  822. package/esm2015/lib/layer/utils/tile-watcher.js +0 -50
  823. package/esm2015/lib/layer/utils/vector-watcher.js +0 -48
  824. package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +0 -20
  825. package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +0 -105
  826. package/esm2015/lib/map/baselayers-switcher/index.js +0 -3
  827. package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +0 -137
  828. package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +0 -47
  829. package/esm2015/lib/map/geolocate-button/index.js +0 -2
  830. package/esm2015/lib/map/home-extent-button/home-extent-button.component.js +0 -69
  831. package/esm2015/lib/map/index.js +0 -13
  832. package/esm2015/lib/map/info-section/index.js +0 -2
  833. package/esm2015/lib/map/info-section/info-section.component.js +0 -36
  834. package/esm2015/lib/map/map-browser/index.js +0 -2
  835. package/esm2015/lib/map/map-browser/map-browser.component.js +0 -70
  836. package/esm2015/lib/map/map-center/index.js +0 -2
  837. package/esm2015/lib/map/map-center/map-center.component.js +0 -55
  838. package/esm2015/lib/map/map.module.js +0 -124
  839. package/esm2015/lib/map/menu-button/index.js +0 -2
  840. package/esm2015/lib/map/menu-button/menu-button.component.js +0 -66
  841. package/esm2015/lib/map/offline-button/index.js +0 -2
  842. package/esm2015/lib/map/offline-button/offline-button.component.js +0 -84
  843. package/esm2015/lib/map/rotation-button/index.js +0 -2
  844. package/esm2015/lib/map/rotation-button/rotation-button.component.js +0 -97
  845. package/esm2015/lib/map/shared/controllers/controller.js +0 -42
  846. package/esm2015/lib/map/shared/controllers/index.js +0 -3
  847. package/esm2015/lib/map/shared/controllers/view.js +0 -326
  848. package/esm2015/lib/map/shared/hover-feature.directive.js +0 -508
  849. package/esm2015/lib/map/shared/index.js +0 -13
  850. package/esm2015/lib/map/shared/map-pointer-position.directive.js +0 -107
  851. package/esm2015/lib/map/shared/map.enums.js +0 -6
  852. package/esm2015/lib/map/shared/map.interface.js +0 -2
  853. package/esm2015/lib/map/shared/map.js +0 -538
  854. package/esm2015/lib/map/shared/map.service.js +0 -29
  855. package/esm2015/lib/map/shared/map.utils.js +0 -459
  856. package/esm2015/lib/map/shared/mapOffline.directive.js +0 -163
  857. package/esm2015/lib/map/shared/projection.interfaces.js +0 -2
  858. package/esm2015/lib/map/shared/projection.service.js +0 -65
  859. package/esm2015/lib/map/shared/projection.utils.js +0 -64
  860. package/esm2015/lib/map/swipe-control/index.js +0 -2
  861. package/esm2015/lib/map/swipe-control/swipe-control.component.js +0 -199
  862. package/esm2015/lib/map/utils/layer-watcher.js +0 -58
  863. package/esm2015/lib/map/zoom-button/index.js +0 -2
  864. package/esm2015/lib/map/zoom-button/zoom-button.component.js +0 -46
  865. package/esm2015/lib/measure/index.js +0 -4
  866. package/esm2015/lib/measure/measure.module.js +0 -20
  867. package/esm2015/lib/measure/measurer/measure-format.pipe.js +0 -37
  868. package/esm2015/lib/measure/measurer/measurer-dialog.component.js +0 -220
  869. package/esm2015/lib/measure/measurer/measurer-item.component.js +0 -148
  870. package/esm2015/lib/measure/measurer/measurer.component.js +0 -1053
  871. package/esm2015/lib/measure/measurer/measurer.module.js +0 -96
  872. package/esm2015/lib/measure/shared/index.js +0 -4
  873. package/esm2015/lib/measure/shared/measure.enum.js +0 -37
  874. package/esm2015/lib/measure/shared/measure.interfaces.js +0 -2
  875. package/esm2015/lib/measure/shared/measure.utils.js +0 -489
  876. package/esm2015/lib/metadata/index.js +0 -3
  877. package/esm2015/lib/metadata/metadata-button/index.js +0 -2
  878. package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +0 -135
  879. package/esm2015/lib/metadata/metadata.module.js +0 -57
  880. package/esm2015/lib/metadata/shared/index.js +0 -3
  881. package/esm2015/lib/metadata/shared/metadata.interface.js +0 -2
  882. package/esm2015/lib/metadata/shared/metadata.service.js +0 -19
  883. package/esm2015/lib/overlay/index.js +0 -2
  884. package/esm2015/lib/overlay/overlay.module.js +0 -23
  885. package/esm2015/lib/overlay/shared/index.js +0 -7
  886. package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +0 -69
  887. package/esm2015/lib/overlay/shared/overlay.directive.js +0 -33
  888. package/esm2015/lib/overlay/shared/overlay.enum.js +0 -8
  889. package/esm2015/lib/overlay/shared/overlay.js +0 -130
  890. package/esm2015/lib/overlay/shared/overlay.service.js +0 -27
  891. package/esm2015/lib/overlay/shared/overlay.utils.js +0 -103
  892. package/esm2015/lib/print/index.js +0 -4
  893. package/esm2015/lib/print/print/print.component.js +0 -126
  894. package/esm2015/lib/print/print-form/index.js +0 -2
  895. package/esm2015/lib/print/print-form/print-form.component.js +0 -447
  896. package/esm2015/lib/print/print.module.js +0 -67
  897. package/esm2015/lib/print/shared/index.js +0 -4
  898. package/esm2015/lib/print/shared/print.interface.js +0 -2
  899. package/esm2015/lib/print/shared/print.service.js +0 -814
  900. package/esm2015/lib/print/shared/print.type.js +0 -30
  901. package/esm2015/lib/query/index.js +0 -2
  902. package/esm2015/lib/query/query.module.js +0 -28
  903. package/esm2015/lib/query/shared/index.js +0 -7
  904. package/esm2015/lib/query/shared/query-search-source.js +0 -35
  905. package/esm2015/lib/query/shared/query-search-source.providers.js +0 -22
  906. package/esm2015/lib/query/shared/query.directive.js +0 -261
  907. package/esm2015/lib/query/shared/query.enums.js +0 -30
  908. package/esm2015/lib/query/shared/query.interfaces.js +0 -2
  909. package/esm2015/lib/query/shared/query.service.js +0 -592
  910. package/esm2015/lib/query/shared/query.utils.js +0 -37
  911. package/esm2015/lib/search/index.js +0 -12
  912. package/esm2015/lib/search/search-bar/search-bar.component.js +0 -496
  913. package/esm2015/lib/search/search-bar/search-bar.module.js +0 -77
  914. package/esm2015/lib/search/search-bar/search-url-param.directive.js +0 -35
  915. package/esm2015/lib/search/search-results/search-results-add-button.component.js +0 -198
  916. package/esm2015/lib/search/search-results/search-results-item.component.js +0 -129
  917. package/esm2015/lib/search/search-results/search-results.component.js +0 -337
  918. package/esm2015/lib/search/search-results/search-results.module.js +0 -79
  919. package/esm2015/lib/search/search-selector/search-selector.component.js +0 -132
  920. package/esm2015/lib/search/search-selector/search-selector.module.js +0 -58
  921. package/esm2015/lib/search/search-settings/search-settings.component.js +0 -435
  922. package/esm2015/lib/search/search-settings/search-settings.module.js +0 -62
  923. package/esm2015/lib/search/search.module.js +0 -69
  924. package/esm2015/lib/search/shared/index.js +0 -9
  925. package/esm2015/lib/search/shared/search-pointer-summary.directive.js +0 -322
  926. package/esm2015/lib/search/shared/search-source-service.providers.js +0 -20
  927. package/esm2015/lib/search/shared/search-source.service.js +0 -47
  928. package/esm2015/lib/search/shared/search.enums.js +0 -4
  929. package/esm2015/lib/search/shared/search.interfaces.js +0 -2
  930. package/esm2015/lib/search/shared/search.service.js +0 -118
  931. package/esm2015/lib/search/shared/search.utils.js +0 -78
  932. package/esm2015/lib/search/shared/sources/cadastre.js +0 -126
  933. package/esm2015/lib/search/shared/sources/cadastre.providers.js +0 -23
  934. package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +0 -2
  935. package/esm2015/lib/search/shared/sources/coordinates.js +0 -147
  936. package/esm2015/lib/search/shared/sources/coordinates.providers.js +0 -40
  937. package/esm2015/lib/search/shared/sources/icherche.interfaces.js +0 -2
  938. package/esm2015/lib/search/shared/sources/icherche.js +0 -756
  939. package/esm2015/lib/search/shared/sources/icherche.providers.js +0 -66
  940. package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +0 -2
  941. package/esm2015/lib/search/shared/sources/ilayer.js +0 -320
  942. package/esm2015/lib/search/shared/sources/ilayer.providers.js +0 -40
  943. package/esm2015/lib/search/shared/sources/index.js +0 -20
  944. package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +0 -2
  945. package/esm2015/lib/search/shared/sources/nominatim.js +0 -253
  946. package/esm2015/lib/search/shared/sources/nominatim.providers.js +0 -23
  947. package/esm2015/lib/search/shared/sources/source.interfaces.js +0 -2
  948. package/esm2015/lib/search/shared/sources/source.js +0 -179
  949. package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +0 -2
  950. package/esm2015/lib/search/shared/sources/storedqueries.js +0 -425
  951. package/esm2015/lib/search/shared/sources/storedqueries.providers.js +0 -41
  952. package/esm2015/lib/toast/index.js +0 -2
  953. package/esm2015/lib/toast/toast.component.js +0 -119
  954. package/esm2015/lib/toast/toast.module.js +0 -47
  955. package/esm2015/lib/utils/commonVectorStyle.interface.js +0 -2
  956. package/esm2015/lib/utils/commonVectorStyle.js +0 -75
  957. package/esm2015/lib/utils/googleLinks.js +0 -13
  958. package/esm2015/lib/utils/id-generator.js +0 -110
  959. package/esm2015/lib/utils/index.js +0 -6
  960. package/esm2015/lib/utils/osmLinks.js +0 -10
  961. package/esm2015/lib/wkt/index.js +0 -2
  962. package/esm2015/lib/wkt/shared/index.js +0 -2
  963. package/esm2015/lib/wkt/shared/wkt.service.js +0 -239
  964. package/esm2015/lib/wkt/wkt.module.js +0 -22
  965. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +0 -56
  966. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +0 -38
  967. package/esm2015/lib/workspace/confirmation-popup/index.js +0 -3
  968. package/esm2015/lib/workspace/index.js +0 -8
  969. package/esm2015/lib/workspace/shared/edition-workspace.js +0 -271
  970. package/esm2015/lib/workspace/shared/edition-workspace.service.js +0 -619
  971. package/esm2015/lib/workspace/shared/feature-workspace.js +0 -37
  972. package/esm2015/lib/workspace/shared/feature-workspace.service.js +0 -146
  973. package/esm2015/lib/workspace/shared/index.js +0 -8
  974. package/esm2015/lib/workspace/shared/wfs-workspace.js +0 -37
  975. package/esm2015/lib/workspace/shared/wfs-workspace.service.js +0 -146
  976. package/esm2015/lib/workspace/shared/wms-workspace.service.js +0 -239
  977. package/esm2015/lib/workspace/shared/workspace.utils.js +0 -24
  978. package/esm2015/lib/workspace/widgets/index.js +0 -4
  979. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +0 -52
  980. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +0 -38
  981. package/esm2015/lib/workspace/widgets/widgets.js +0 -15
  982. package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +0 -135
  983. package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +0 -30
  984. package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +0 -116
  985. package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +0 -30
  986. package/esm2015/lib/workspace/workspace.module.js +0 -64
  987. package/esm2015/public_api.js +0 -54
  988. package/fesm2015/igo2-geo.js +0 -40591
  989. package/fesm2015/igo2-geo.js.map +0 -1
@@ -0,0 +1,871 @@
1
+ import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
2
+ import { UntypedFormControl } from '@angular/forms';
3
+ import { OgcFilterOperator } from '../../filter/shared/ogc-filter.enum';
4
+ import { default as moment } from 'moment';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../shared/ogc-filter-time.service";
7
+ const _c0 = ["endDatepickerTime"];
8
+ const _c1 = ["beginDatepickerTime"];
9
+ const _c2 = ["beginTime"];
10
+ const _c3 = ["endTime"];
11
+ function OgcFilterTimeComponent_mat_slide_toggle_1_Template(rf, ctx) { if (rf & 1) {
12
+ const _r4 = i0.ɵɵgetCurrentView();
13
+ i0.ɵɵelementStart(0, "mat-slide-toggle", 4);
14
+ i0.ɵɵlistener("ngModelChange", function OgcFilterTimeComponent_mat_slide_toggle_1_Template_mat_slide_toggle_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.sliderMode = $event); })("change", function OgcFilterTimeComponent_mat_slide_toggle_1_Template_mat_slide_toggle_change_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.modeChange($event)); });
15
+ i0.ɵɵtext(1);
16
+ i0.ɵɵpipe(2, "translate");
17
+ i0.ɵɵelementEnd();
18
+ } if (rf & 2) {
19
+ const ctx_r0 = i0.ɵɵnextContext();
20
+ i0.ɵɵproperty("ngModel", ctx_r0.sliderMode);
21
+ i0.ɵɵadvance(1);
22
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.filter.sliderModeTitle"), " ");
23
+ } }
24
+ function OgcFilterTimeComponent_div_2_Template(rf, ctx) { if (rf & 1) {
25
+ const _r7 = i0.ɵɵgetCurrentView();
26
+ i0.ɵɵelementStart(0, "div", 5)(1, "igo-ogc-filter-time-slider", 6);
27
+ i0.ɵɵlistener("changeProperty", function OgcFilterTimeComponent_div_2_Template_igo_ogc_filter_time_slider_changeProperty_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.changePropertyByPass($event)); });
28
+ i0.ɵɵelementEnd()();
29
+ } if (rf & 2) {
30
+ const ctx_r1 = i0.ɵɵnextContext();
31
+ i0.ɵɵadvance(1);
32
+ i0.ɵɵproperty("begin", ctx_r1.beginValue)("max", ctx_r1.restrictedToStep() ? ctx_r1.maxDate : ctx_r1.endValue)("currentFilter", ctx_r1.currentFilter)("datasource", ctx_r1.datasource);
33
+ } }
34
+ function OgcFilterTimeComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
35
+ const _r15 = i0.ɵɵgetCurrentView();
36
+ i0.ɵɵelementStart(0, "div", 9)(1, "mat-form-field", 10)(2, "mat-label");
37
+ i0.ɵɵtext(3);
38
+ i0.ɵɵpipe(4, "translate");
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(5, "input", 11);
41
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.yearOnlyInputChange($event, _r10, "begin")); });
42
+ i0.ɵɵelementEnd();
43
+ i0.ɵɵelement(6, "mat-datepicker-toggle", 12);
44
+ i0.ɵɵelementStart(7, "mat-datepicker", 13, 14);
45
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.yearSelected($event, _r10, "begin")); });
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelement(9, "input", 15, 16);
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementStart(11, "mat-form-field", 10)(12, "mat-label");
50
+ i0.ɵɵtext(13);
51
+ i0.ɵɵpipe(14, "translate");
52
+ i0.ɵɵelementEnd();
53
+ i0.ɵɵelementStart(15, "input", 11);
54
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_15_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.yearOnlyInputChange($event, _r12, "end")); });
55
+ i0.ɵɵelementEnd();
56
+ i0.ɵɵelement(16, "mat-datepicker-toggle", 12);
57
+ i0.ɵɵelementStart(17, "mat-datepicker", 13, 17);
58
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_17_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.yearSelected($event, _r12, "end")); });
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelement(19, "input", 15, 18);
61
+ i0.ɵɵelementEnd();
62
+ i0.ɵɵelementStart(21, "button", 19);
63
+ i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_1_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r15); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.resetFilter()); });
64
+ i0.ɵɵpipe(22, "translate");
65
+ i0.ɵɵelement(23, "mat-icon", 20);
66
+ i0.ɵɵelementEnd();
67
+ i0.ɵɵelementStart(24, "mat-slide-toggle", 21);
68
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_mat_slide_toggle_change_24_listener() { i0.ɵɵrestoreView(_r15); const ctx_r20 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r20.toggleFilterState()); });
69
+ i0.ɵɵpipe(25, "translate");
70
+ i0.ɵɵelementEnd()();
71
+ } if (rf & 2) {
72
+ const _r10 = i0.ɵɵreference(8);
73
+ const _r12 = i0.ɵɵreference(18);
74
+ const ctx_r8 = i0.ɵɵnextContext(2);
75
+ i0.ɵɵadvance(3);
76
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 27, "igo.geo.timeFilter.startYear"));
77
+ i0.ɵɵadvance(2);
78
+ i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearBegin);
79
+ i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
80
+ i0.ɵɵadvance(1);
81
+ i0.ɵɵproperty("for", _r10)("disabled", ctx_r8.filterStateDisable);
82
+ i0.ɵɵadvance(1);
83
+ i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.beginValue);
84
+ i0.ɵɵadvance(2);
85
+ i0.ɵɵproperty("matDatepicker", _r10)("value", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("min", ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.endValue && !ctx_r8.restrictedToStep() ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
86
+ i0.ɵɵadvance(4);
87
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 29, "igo.geo.timeFilter.endYear"));
88
+ i0.ɵɵadvance(2);
89
+ i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearEnd);
90
+ i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
91
+ i0.ɵɵadvance(1);
92
+ i0.ɵɵproperty("for", _r12)("disabled", ctx_r8.filterStateDisable);
93
+ i0.ɵɵadvance(1);
94
+ i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.endValue);
95
+ i0.ɵɵadvance(2);
96
+ i0.ɵɵproperty("matDatepicker", _r12)("value", ctx_r8.endValue ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate))("min", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
97
+ i0.ɵɵadvance(2);
98
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(22, 31, "igo.geo.filter.resetFilters"))("disabled", ctx_r8.filterStateDisable);
99
+ i0.ɵɵadvance(2);
100
+ i0.ɵɵpropertyInterpolate("svgIcon", ctx_r8.resetIcon);
101
+ i0.ɵɵadvance(1);
102
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(25, 33, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r8.filterStateDisable);
103
+ } }
104
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "mat-option", 36);
106
+ i0.ɵɵtext(1);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const hour_r27 = ctx.$implicit;
110
+ i0.ɵɵproperty("value", hour_r27);
111
+ i0.ɵɵadvance(1);
112
+ i0.ɵɵtextInterpolate(hour_r27);
113
+ } }
114
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
115
+ const _r29 = i0.ɵɵgetCurrentView();
116
+ i0.ɵɵelementStart(0, "mat-form-field", 33)(1, "mat-label");
117
+ i0.ɵɵtext(2);
118
+ i0.ɵɵpipe(3, "translate");
119
+ i0.ɵɵelementEnd();
120
+ i0.ɵɵelementStart(4, "mat-select", 34);
121
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r29); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.changeTemporalProperty(_r21.value, 1)); });
122
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
123
+ i0.ɵɵelementEnd()();
124
+ } if (rf & 2) {
125
+ const ctx_r23 = i0.ɵɵnextContext(3);
126
+ i0.ɵɵadvance(2);
127
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
128
+ i0.ɵɵadvance(2);
129
+ i0.ɵɵproperty("formControl", ctx_r23.beginHourFormControl);
130
+ i0.ɵɵattribute("disabled", !ctx_r23.currentFilter.active);
131
+ i0.ɵɵadvance(1);
132
+ i0.ɵɵproperty("ngForOf", ctx_r23.beginHours);
133
+ } }
134
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template(rf, ctx) { if (rf & 1) {
135
+ i0.ɵɵelementStart(0, "mat-option", 36);
136
+ i0.ɵɵtext(1);
137
+ i0.ɵɵelementEnd();
138
+ } if (rf & 2) {
139
+ const minute_r31 = ctx.$implicit;
140
+ i0.ɵɵproperty("value", minute_r31);
141
+ i0.ɵɵadvance(1);
142
+ i0.ɵɵtextInterpolate(minute_r31);
143
+ } }
144
+ function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template(rf, ctx) { if (rf & 1) {
145
+ const _r33 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "mat-form-field", 37)(1, "mat-label");
147
+ i0.ɵɵtext(2);
148
+ i0.ɵɵpipe(3, "translate");
149
+ i0.ɵɵelementEnd();
150
+ i0.ɵɵelementStart(4, "mat-select", 34);
151
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r33); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.changeTemporalProperty(_r21.value, 1)); });
152
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template, 2, 2, "mat-option", 35);
153
+ i0.ɵɵelementEnd()();
154
+ } if (rf & 2) {
155
+ const ctx_r24 = i0.ɵɵnextContext(3);
156
+ i0.ɵɵadvance(2);
157
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
158
+ i0.ɵɵadvance(2);
159
+ i0.ɵɵproperty("formControl", ctx_r24.beginMinuteFormControl);
160
+ i0.ɵɵattribute("disabled", !ctx_r24.currentFilter.active);
161
+ i0.ɵɵadvance(1);
162
+ i0.ɵɵproperty("ngForOf", ctx_r24.beginMinutes);
163
+ } }
164
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵelementStart(0, "mat-option", 36);
166
+ i0.ɵɵtext(1);
167
+ i0.ɵɵelementEnd();
168
+ } if (rf & 2) {
169
+ const hour_r39 = ctx.$implicit;
170
+ i0.ɵɵproperty("value", hour_r39);
171
+ i0.ɵɵadvance(1);
172
+ i0.ɵɵtextInterpolate(hour_r39);
173
+ } }
174
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template(rf, ctx) { if (rf & 1) {
175
+ const _r41 = i0.ɵɵgetCurrentView();
176
+ i0.ɵɵelementStart(0, "mat-form-field", 33)(1, "mat-label");
177
+ i0.ɵɵtext(2);
178
+ i0.ɵɵpipe(3, "translate");
179
+ i0.ɵɵelementEnd();
180
+ i0.ɵɵelementStart(4, "mat-select", 34);
181
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r41); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r40 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r40.changeTemporalProperty(_r34.value, 2)); });
182
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template, 2, 2, "mat-option", 35);
183
+ i0.ɵɵelementEnd()();
184
+ } if (rf & 2) {
185
+ const ctx_r36 = i0.ɵɵnextContext(4);
186
+ i0.ɵɵadvance(2);
187
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
188
+ i0.ɵɵadvance(2);
189
+ i0.ɵɵproperty("formControl", ctx_r36.endHourFormControl);
190
+ i0.ɵɵattribute("disabled", !ctx_r36.currentFilter.active);
191
+ i0.ɵɵadvance(1);
192
+ i0.ɵɵproperty("ngForOf", ctx_r36.endHours);
193
+ } }
194
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "mat-option", 36);
196
+ i0.ɵɵtext(1);
197
+ i0.ɵɵelementEnd();
198
+ } if (rf & 2) {
199
+ const minute_r43 = ctx.$implicit;
200
+ i0.ɵɵproperty("value", minute_r43);
201
+ i0.ɵɵadvance(1);
202
+ i0.ɵɵtextInterpolate(minute_r43);
203
+ } }
204
+ function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
205
+ const _r45 = i0.ɵɵgetCurrentView();
206
+ i0.ɵɵelementStart(0, "mat-form-field", 37)(1, "mat-label");
207
+ i0.ɵɵtext(2);
208
+ i0.ɵɵpipe(3, "translate");
209
+ i0.ɵɵelementEnd();
210
+ i0.ɵɵelementStart(4, "mat-select", 34);
211
+ i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r45); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.changeTemporalProperty(_r34.value, 2)); });
212
+ i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
213
+ i0.ɵɵelementEnd()();
214
+ } if (rf & 2) {
215
+ const ctx_r37 = i0.ɵɵnextContext(4);
216
+ i0.ɵɵadvance(2);
217
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
218
+ i0.ɵɵadvance(2);
219
+ i0.ɵɵproperty("formControl", ctx_r37.endMinuteFormControl);
220
+ i0.ɵɵattribute("disabled", !ctx_r37.currentFilter.active);
221
+ i0.ɵɵadvance(1);
222
+ i0.ɵɵproperty("ngForOf", ctx_r37.endMinutes);
223
+ } }
224
+ function OgcFilterTimeComponent_div_3_div_2_div_13_Template(rf, ctx) { if (rf & 1) {
225
+ const _r47 = i0.ɵɵgetCurrentView();
226
+ i0.ɵɵelementStart(0, "div", 23)(1, "mat-form-field", 24);
227
+ i0.ɵɵelement(2, "mat-datepicker-toggle", 12);
228
+ i0.ɵɵelementStart(3, "input", 25, 38);
229
+ i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_input_dateChange_3_listener() { i0.ɵɵrestoreView(_r47); const _r34 = i0.ɵɵreference(4); const ctx_r46 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r46.changeTemporalProperty(_r34.value, 2)); });
230
+ i0.ɵɵpipe(5, "translate");
231
+ i0.ɵɵelementEnd();
232
+ i0.ɵɵelement(6, "span", 27);
233
+ i0.ɵɵelementStart(7, "mat-datepicker", 28, 17);
234
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r48 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r48.yearSelected($event, _r35, "end")); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_monthSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r49 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r49.monthSelected($event, _r35, "end")); });
235
+ i0.ɵɵelementEnd()();
236
+ i0.ɵɵelementStart(9, "div", 29);
237
+ i0.ɵɵtemplate(10, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template, 6, 6, "mat-form-field", 30);
238
+ i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template, 6, 6, "mat-form-field", 31);
239
+ i0.ɵɵelementEnd()();
240
+ } if (rf & 2) {
241
+ const _r35 = i0.ɵɵreference(8);
242
+ const ctx_r25 = i0.ɵɵnextContext(3);
243
+ i0.ɵɵadvance(2);
244
+ i0.ɵɵproperty("for", _r35)("disabled", ctx_r25.filterStateDisable);
245
+ i0.ɵɵadvance(1);
246
+ i0.ɵɵproperty("matDatepicker", _r35)("placeholder", i0.ɵɵpipeBind1(5, 14, "igo.geo.timeFilter.endDate"))("matDatepickerFilter", ctx_r25.dateFilter.bind(ctx_r25, "end"))("value", ctx_r25.endValue ? ctx_r25.endValue : ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("min", ctx_r25.beginValue ? ctx_r25.beginValue : ctx_r25.handleDate(ctx_r25.datasource.options.minDate))("max", ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("disabled", ctx_r25.filterStateDisable);
247
+ i0.ɵɵattribute("disabled", !ctx_r25.currentFilter.active);
248
+ i0.ɵɵadvance(4);
249
+ i0.ɵɵproperty("startView", ctx_r25.calendarView())("startAt", ctx_r25.endValue);
250
+ i0.ɵɵadvance(3);
251
+ i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
252
+ i0.ɵɵadvance(1);
253
+ i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
254
+ } }
255
+ function OgcFilterTimeComponent_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
256
+ const _r51 = i0.ɵɵgetCurrentView();
257
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 23)(2, "mat-form-field", 24);
258
+ i0.ɵɵelement(3, "mat-datepicker-toggle", 12);
259
+ i0.ɵɵelementStart(4, "input", 25, 26);
260
+ i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_Template_input_dateChange_4_listener() { i0.ɵɵrestoreView(_r51); const _r21 = i0.ɵɵreference(5); const ctx_r50 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r50.changeTemporalProperty(_r21.value, 1)); });
261
+ i0.ɵɵpipe(6, "translate");
262
+ i0.ɵɵelementEnd();
263
+ i0.ɵɵelement(7, "span", 27);
264
+ i0.ɵɵelementStart(8, "mat-datepicker", 28, 14);
265
+ i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_yearSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r52 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r52.yearSelected($event, _r22, "begin")); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_monthSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r53 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r53.monthSelected($event, _r22, "begin")); });
266
+ i0.ɵɵelementEnd()();
267
+ i0.ɵɵelementStart(10, "div", 29);
268
+ i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template, 6, 6, "mat-form-field", 30);
269
+ i0.ɵɵtemplate(12, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template, 6, 6, "mat-form-field", 31);
270
+ i0.ɵɵelementEnd()();
271
+ i0.ɵɵtemplate(13, OgcFilterTimeComponent_div_3_div_2_div_13_Template, 12, 16, "div", 32);
272
+ i0.ɵɵelementStart(14, "button", 19);
273
+ i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r51); const ctx_r54 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r54.resetFilter()); });
274
+ i0.ɵɵpipe(15, "translate");
275
+ i0.ɵɵelement(16, "mat-icon", 20);
276
+ i0.ɵɵelementEnd();
277
+ i0.ɵɵelementStart(17, "mat-slide-toggle", 21);
278
+ i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_2_Template_mat_slide_toggle_change_17_listener() { i0.ɵɵrestoreView(_r51); const ctx_r55 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r55.toggleFilterState()); });
279
+ i0.ɵɵpipe(18, "translate");
280
+ i0.ɵɵelementEnd()();
281
+ } if (rf & 2) {
282
+ const _r22 = i0.ɵɵreference(9);
283
+ const ctx_r9 = i0.ɵɵnextContext(2);
284
+ i0.ɵɵadvance(3);
285
+ i0.ɵɵproperty("for", _r22)("disabled", ctx_r9.filterStateDisable);
286
+ i0.ɵɵadvance(1);
287
+ i0.ɵɵproperty("matDatepicker", _r22)("placeholder", i0.ɵɵpipeBind1(6, 20, "igo.geo.timeFilter.startDate"))("matDatepickerFilter", ctx_r9.dateFilter.bind(ctx_r9, "begin"))("value", ctx_r9.beginValue ? ctx_r9.beginValue : ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("min", ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("max", ctx_r9.endValue && !ctx_r9.restrictedToStep() ? ctx_r9.endValue : ctx_r9.handleDate(ctx_r9.datasource.options.maxDate))("disabled", ctx_r9.filterStateDisable);
288
+ i0.ɵɵattribute("disabled", !ctx_r9.currentFilter.active);
289
+ i0.ɵɵadvance(4);
290
+ i0.ɵɵproperty("startView", ctx_r9.calendarView())("startAt", ctx_r9.beginValue);
291
+ i0.ɵɵadvance(3);
292
+ i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
293
+ i0.ɵɵadvance(1);
294
+ i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
295
+ i0.ɵɵadvance(1);
296
+ i0.ɵɵproperty("ngIf", !ctx_r9.restrictedToStep());
297
+ i0.ɵɵadvance(1);
298
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(15, 22, "igo.geo.filter.resetFilters"))("disabled", ctx_r9.filterStateDisable);
299
+ i0.ɵɵadvance(2);
300
+ i0.ɵɵpropertyInterpolate("svgIcon", ctx_r9.resetIcon);
301
+ i0.ɵɵadvance(1);
302
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(18, 24, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r9.filterStateDisable);
303
+ } }
304
+ function OgcFilterTimeComponent_div_3_Template(rf, ctx) { if (rf & 1) {
305
+ i0.ɵɵelementStart(0, "div");
306
+ i0.ɵɵtemplate(1, OgcFilterTimeComponent_div_3_div_1_Template, 26, 35, "div", 7);
307
+ i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_3_div_2_Template, 19, 26, "div", 8);
308
+ i0.ɵɵelementEnd();
309
+ } if (rf & 2) {
310
+ const ctx_r2 = i0.ɵɵnextContext();
311
+ i0.ɵɵadvance(1);
312
+ i0.ɵɵproperty("ngIf", ctx_r2.calendarTypeYear);
313
+ i0.ɵɵadvance(1);
314
+ i0.ɵɵproperty("ngIf", ctx_r2.calendarType() !== "year");
315
+ } }
316
+ export class OgcFilterTimeComponent {
317
+ constructor(ogcFilterTimeService) {
318
+ this.ogcFilterTimeService = ogcFilterTimeService;
319
+ this.changeProperty = new EventEmitter();
320
+ this.beginHourFormControl = new UntypedFormControl();
321
+ this.beginMinuteFormControl = new UntypedFormControl();
322
+ this.endHourFormControl = new UntypedFormControl();
323
+ this.endMinuteFormControl = new UntypedFormControl();
324
+ this._defaultMin = '1900-01-01';
325
+ this._defaultMax = '2052-01-06';
326
+ this._defaultDisplayFormat = 'DD/MM/YYYY HH:mm A';
327
+ this._defaultSliderModeEnabled = true;
328
+ this.ogcFilterOperator = OgcFilterOperator;
329
+ this.sliderMode = false;
330
+ this.defaultStepMillisecond = 60000;
331
+ this.calendarTypeYear = false;
332
+ this.resetIcon = 'replay';
333
+ }
334
+ get step() {
335
+ return this.datasource.options.stepDate
336
+ ? this.datasource.options.stepDate
337
+ : this.currentFilter.step;
338
+ }
339
+ get stepMilliseconds() {
340
+ const step = moment.duration(this.step).asMilliseconds();
341
+ return step === 0 ? this.defaultStepMillisecond : step;
342
+ }
343
+ set beginValue(begin) {
344
+ this._beginValue = begin;
345
+ }
346
+ get beginValue() {
347
+ return this._beginValue;
348
+ }
349
+ set endValue(end) {
350
+ this._endValue = end;
351
+ }
352
+ get endValue() {
353
+ return this._endValue;
354
+ }
355
+ get sliderInterval() {
356
+ return this.currentFilter.sliderInterval === undefined
357
+ ? 2000
358
+ : this.currentFilter.sliderInterval;
359
+ }
360
+ get maxDate() {
361
+ return this.datasource.options.maxDate ? this.datasource.options.maxDate : this._defaultMax;
362
+ }
363
+ get displayFormat() {
364
+ return this.currentFilter.displayFormat ? this.currentFilter.displayFormat : this._defaultDisplayFormat;
365
+ }
366
+ ngOnInit() {
367
+ if (this.currentFilter.sliderOptions) {
368
+ this.currentFilter.sliderOptions.enabled = this.currentFilter.sliderOptions.enabled !== undefined ?
369
+ this.currentFilter.sliderOptions.enabled : this._defaultSliderModeEnabled;
370
+ }
371
+ this.beginValue = this.parseFilter(this.handleMin());
372
+ this.endValue = this.parseFilter(this.handleMax());
373
+ this.onlyYearBegin = this.beginValue.getUTCFullYear();
374
+ this.onlyYearEnd = this.endValue.getUTCFullYear();
375
+ this.calendarTypeYear = this.isCalendarYearMode();
376
+ this.setFilterStateDisable();
377
+ this.updateHoursMinutesArray();
378
+ // update value for now value
379
+ this.updateValues();
380
+ }
381
+ parseFilter(filter) {
382
+ if (!filter) {
383
+ return new Date();
384
+ }
385
+ else if (isNaN(new Date(filter).getTime())) {
386
+ if (filter.search('now') >= 0) {
387
+ const interval = filter.match(/years|months|weeks|days|hours|seconds/);
388
+ if (filter.match(/\+/)) {
389
+ const intervalInt = parseInt(filter.substring(filter.search('+') + 1, interval.index), 10);
390
+ return moment().add(intervalInt, interval[0]).toDate();
391
+ }
392
+ if (filter.match(/\-/)) {
393
+ const intervalInt = parseInt(filter.substring(filter.search('-') + 1, interval.index), 10);
394
+ return moment().subtract(intervalInt, interval[0]).toDate();
395
+ }
396
+ return new Date();
397
+ }
398
+ if (filter.search('today') >= 0) {
399
+ const _now = moment().endOf('day').toDate();
400
+ const interval = filter.match(/years|months|weeks|days|hours|seconds/);
401
+ if (filter.match(/\+/)) {
402
+ const intervalInt = parseInt(filter.substring(filter.search('+') + 1, interval.index), 10);
403
+ return moment(_now).add(intervalInt, interval[0]).toDate();
404
+ }
405
+ if (filter.match(/\-/)) {
406
+ const intervalInt = parseInt(filter.substring(filter.search('-') + 1, interval.index), 10);
407
+ return moment(_now).subtract(intervalInt, interval[0]).toDate();
408
+ }
409
+ return _now;
410
+ }
411
+ return new Date();
412
+ }
413
+ if (this.currentFilter.calendarModeYear) {
414
+ const date = this.getDateFromStringWithoutTime(filter);
415
+ return date;
416
+ }
417
+ else {
418
+ return filter ? new Date(filter) : new Date();
419
+ }
420
+ }
421
+ changeTemporalProperty(value, position, refreshFilter = true) {
422
+ let valueTmp = this.getDateTime(value, position);
423
+ if (this.isCalendarYearMode()) {
424
+ let dateStringFromYearNotime;
425
+ if (position === 1) {
426
+ this.beginValue = value;
427
+ this.onlyYearBegin = this.beginValue.getFullYear();
428
+ dateStringFromYearNotime = `${this.onlyYearBegin}-01-01`;
429
+ }
430
+ else {
431
+ this.endValue = value;
432
+ this.onlyYearEnd = this.endValue.getFullYear();
433
+ dateStringFromYearNotime = `${this.onlyYearEnd}-01-01`;
434
+ }
435
+ // call service with string date without time
436
+ this.changeProperty.next({ value: dateStringFromYearNotime, pos: position, refreshFilter });
437
+ return;
438
+ }
439
+ if (position === 2 && this.calendarType() === 'date' && !this.sliderMode) {
440
+ /* Above month: see yearSelected or monthSelected */
441
+ valueTmp = moment(valueTmp).endOf('day').toDate();
442
+ }
443
+ if (position === 1) {
444
+ this.beginValue = valueTmp;
445
+ if (this.restrictedToStep()) {
446
+ this.changeTemporalProperty(this.ogcFilterTimeService.addStep(valueTmp, this.stepMilliseconds), 2, refreshFilter);
447
+ }
448
+ }
449
+ else {
450
+ this.endValue = valueTmp;
451
+ }
452
+ this.updateHoursMinutesArray();
453
+ this.changeProperty.next({ value: valueTmp.toISOString(), pos: position, refreshFilter });
454
+ }
455
+ handleDate(value) {
456
+ if (!value || value === '') {
457
+ return undefined;
458
+ }
459
+ if (typeof (value) === 'string' && this.currentFilter.calendarModeYear) {
460
+ return this.getDateFromStringWithoutTime(value);
461
+ }
462
+ return new Date(value);
463
+ }
464
+ calendarType() {
465
+ if (this.currentFilter.calendarModeYear) {
466
+ return 'year';
467
+ }
468
+ if (this.stepMilliseconds < 86400000) {
469
+ return 'datetime';
470
+ }
471
+ return 'date';
472
+ }
473
+ isCalendarYearMode() {
474
+ if (this.calendarType() === 'year') {
475
+ return true;
476
+ }
477
+ else {
478
+ return false;
479
+ }
480
+ }
481
+ yearOnlyInputChange(changeEvent, datePicker, property) {
482
+ const year = changeEvent.target.value;
483
+ const date = this.getDateFromStringWithoutTime(year);
484
+ this.yearSelected(date, datePicker, property);
485
+ }
486
+ yearSelected(year, datePicker, property, refreshFilter = true) {
487
+ if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
488
+ if (datePicker) {
489
+ datePicker.close();
490
+ }
491
+ if (property === 'end') {
492
+ // change value 01 jan to 31 dec same year
493
+ year = moment(year).endOf('year').toDate();
494
+ }
495
+ else if (property === 'begin' && this.restrictedToStep() && !this.calendarTypeYear) {
496
+ this.yearSelected(year, undefined, 'end');
497
+ }
498
+ this.changeTemporalProperty(year, property === 'begin' ? 1 : 2, refreshFilter);
499
+ }
500
+ }
501
+ monthSelected(month, datePicker, property, refreshFilter = true) {
502
+ if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
503
+ if (datePicker) {
504
+ datePicker.close();
505
+ }
506
+ if (property === 'end') {
507
+ month = moment(month).endOf('month').toDate();
508
+ }
509
+ else if (property === 'begin' && this.restrictedToStep()) {
510
+ this.monthSelected(month, undefined, 'end');
511
+ }
512
+ this.changeTemporalProperty(month, property === 'begin' ? 1 : 2, refreshFilter);
513
+ }
514
+ }
515
+ calendarView() {
516
+ const test = this.stepMilliseconds;
517
+ const diff = Math.abs(this.parseFilter(this.currentFilter.end).getTime() -
518
+ this.parseFilter(this.currentFilter.begin).getTime());
519
+ if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
520
+ return 'multi-year';
521
+ }
522
+ else if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
523
+ return 'year';
524
+ }
525
+ else if (test < 86400000 && diff < 86400000) {
526
+ return 'clock';
527
+ }
528
+ else {
529
+ return 'month';
530
+ }
531
+ }
532
+ dateFilter(type, date) {
533
+ const dateValue = new Date(date);
534
+ const diff = dateValue.getTime() - new Date(this.handleMin()).getTime();
535
+ if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
536
+ const monthDiff = moment(dateValue).diff(moment(this.handleMin()), 'years', true);
537
+ if (type === 'end') {
538
+ const dateValuePlus1 = moment(dateValue).add(1, 'd');
539
+ const monthDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'years', true);
540
+ return (monthDiffPlus1 % moment.duration(this.step).asYears()) === 0;
541
+ }
542
+ else if (type === 'begin') {
543
+ return (monthDiff % moment.duration(this.step).asYears()) === 0;
544
+ }
545
+ }
546
+ else if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
547
+ const monthDiff = moment(dateValue).diff(moment(this.handleMin()), 'months', true);
548
+ if (type === 'end') {
549
+ const dateValuePlus1 = moment(dateValue).add(1, 'd');
550
+ const monthDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'months', true);
551
+ return (monthDiffPlus1 % moment.duration(this.step).asMonths()) === 0;
552
+ }
553
+ else if (type === 'begin') {
554
+ return (monthDiff % moment.duration(this.step).asMonths()) === 0;
555
+ }
556
+ }
557
+ else if (this.ogcFilterTimeService.stepIsWeekDuration(this.step)) {
558
+ const weekDiff = moment(dateValue).diff(moment(this.handleMin()), 'weeks', true);
559
+ if (type === 'end') {
560
+ const dateValuePlus1 = moment(dateValue).add(1, 'd');
561
+ const weekDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'weeks', true);
562
+ return (weekDiffPlus1 % moment.duration(this.step).asWeeks()) === 0;
563
+ }
564
+ else if (type === 'begin') {
565
+ return (weekDiff % moment.duration(this.step).asWeeks()) === 0;
566
+ }
567
+ }
568
+ else if (this.ogcFilterTimeService.stepIsDayDuration(this.step)) {
569
+ const dayDiff = moment(dateValue).diff(moment(this.handleMin()), 'days', true);
570
+ if (type === 'end') {
571
+ const dateValuePlus1 = moment(dateValue).add(1, 'd');
572
+ const dayDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'days', true);
573
+ const _mod = (dayDiffPlus1 % moment.duration(this.step).asDays());
574
+ return (_mod < 0.0000001 && _mod > -0.0000001) || _mod === 0; // 1 millisecond = 1.1574074074074076e-8
575
+ }
576
+ else if (type === 'begin') {
577
+ const _mod = ((dayDiff % moment.duration(this.step).asDays()) + 1);
578
+ return (_mod < 0.0000001 && _mod > -0.0000001 && _mod !== 0) || _mod === 1; // 1 millisecond = 1.1574074074074076e-8
579
+ }
580
+ }
581
+ else if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
582
+ const hourDiff = moment(dateValue).diff(moment(this.handleMin()), 'hours', true);
583
+ return (hourDiff % moment.duration(this.step).asHours()) === 0;
584
+ }
585
+ else if (this.ogcFilterTimeService.stepIsMinuteDuration(this.step)) {
586
+ return true;
587
+ }
588
+ return diff % this.stepMilliseconds === 0;
589
+ }
590
+ getDateTime(date, pos) {
591
+ const valuetmp = new Date(date);
592
+ let valuetmp2;
593
+ if (!this.sliderMode) {
594
+ switch (pos) {
595
+ case 1: {
596
+ if (this.currentFilter.calendarModeYear) {
597
+ valuetmp2 = valuetmp.setHours(0, 0);
598
+ break;
599
+ }
600
+ else {
601
+ valuetmp2 = valuetmp.setHours(this.beginHourFormControl.value, this.beginMinuteFormControl.value);
602
+ break;
603
+ }
604
+ }
605
+ case 2: {
606
+ if (this.currentFilter.calendarModeYear) {
607
+ valuetmp2 = valuetmp.setHours(0, 0);
608
+ break;
609
+ }
610
+ else {
611
+ valuetmp2 = valuetmp.setHours(this.endHourFormControl.value, this.endMinuteFormControl.value);
612
+ break;
613
+ }
614
+ }
615
+ }
616
+ }
617
+ return new Date(valuetmp2 ? valuetmp2 : valuetmp);
618
+ }
619
+ handleMinuteIncrement() {
620
+ if (this.ogcFilterTimeService.stepIsMinuteDuration(this.step)) {
621
+ if (this.stepMilliseconds < 3600000) {
622
+ return this.stepMilliseconds / 1000 === 60 ? 1 : this.stepMilliseconds / 1000;
623
+ }
624
+ else {
625
+ return (this.stepMilliseconds % 3600000) / 60;
626
+ }
627
+ }
628
+ else if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
629
+ return 60;
630
+ }
631
+ return 1;
632
+ }
633
+ handleHourIncrement() {
634
+ if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
635
+ return this.stepMilliseconds / 1000 / 60 / 60;
636
+ }
637
+ return 1;
638
+ }
639
+ fullBeginHoursArray(checkEndValue) {
640
+ if (checkEndValue) {
641
+ this.beginHours = Array.from({
642
+ length: (this.endHourFormControl.value - 0) / this.handleHourIncrement() + 1
643
+ }, (_, i) => 0 + i * this.handleHourIncrement());
644
+ }
645
+ else {
646
+ this.beginHours = Array.from({ length: (23 - 0) / this.handleHourIncrement() + 1 }, (_, i) => 0 + i * this.handleHourIncrement());
647
+ }
648
+ this.beginHourFormControl.setValue(this.beginValue.getHours());
649
+ }
650
+ fullEndHoursArray(checkEndValue) {
651
+ if (checkEndValue) {
652
+ this.endHours = Array.from({
653
+ length: (23 - this.beginHourFormControl.value) /
654
+ this.handleHourIncrement() +
655
+ 1
656
+ }, (_, i) => this.beginHourFormControl.value + i * this.handleHourIncrement());
657
+ }
658
+ else {
659
+ this.endHours = Array.from({ length: (23 - 0) / this.handleHourIncrement() + 1 }, (_, i) => 0 + i * this.handleHourIncrement());
660
+ }
661
+ this.endHourFormControl.setValue(this.endValue.getHours());
662
+ }
663
+ fullBeginMinutesArray(checkEndValue) {
664
+ if (checkEndValue) {
665
+ this.beginMinutes = Array.from({
666
+ length: (this.endMinuteFormControl.value - 0) /
667
+ this.handleMinuteIncrement() +
668
+ 1
669
+ }, (_, i) => 0 + i * this.handleMinuteIncrement());
670
+ }
671
+ else {
672
+ this.beginMinutes = Array.from({ length: (59 - 0) / this.handleMinuteIncrement() + 1 }, (_, i) => 0 + i * this.handleMinuteIncrement());
673
+ }
674
+ this.beginMinuteFormControl.setValue(this.beginValue.getMinutes());
675
+ }
676
+ fullEndMinutesArray(checkEndValue) {
677
+ if (checkEndValue) {
678
+ this.endMinutes = Array.from({
679
+ length: (59 - this.beginMinuteFormControl.value) /
680
+ this.handleMinuteIncrement() +
681
+ 1
682
+ }, (_, i) => this.beginMinuteFormControl.value + i * this.handleMinuteIncrement());
683
+ }
684
+ else {
685
+ this.endMinutes = Array.from({ length: (59 - 0) / this.handleMinuteIncrement() + 1 }, (_, i) => 0 + i * this.handleMinuteIncrement());
686
+ }
687
+ this.endMinuteFormControl.setValue(this.endValue.getMinutes());
688
+ }
689
+ updateHoursMinutesArray() {
690
+ const beginTmp = new Date(this.beginValue);
691
+ const endTmp = new Date(this.endValue);
692
+ if (beginTmp.setHours(0, 0) === endTmp.setHours(0, 0)) {
693
+ this.fullBeginHoursArray(true);
694
+ this.fullEndHoursArray(true);
695
+ if (this.beginValue.getHours() === this.endValue.getHours()) {
696
+ this.fullBeginMinutesArray(true);
697
+ this.fullEndMinutesArray(true);
698
+ }
699
+ }
700
+ else {
701
+ this.fullBeginHoursArray();
702
+ this.fullEndHoursArray();
703
+ this.fullBeginMinutesArray();
704
+ this.fullEndMinutesArray();
705
+ }
706
+ }
707
+ updateValues() {
708
+ this.changeTemporalProperty(this.beginValue, 1, false);
709
+ this.changeTemporalProperty(this.endValue, 2, true);
710
+ }
711
+ restrictedToStep() {
712
+ return this.currentFilter.restrictToStep
713
+ ? this.currentFilter.restrictToStep : false;
714
+ }
715
+ handleMin() {
716
+ return this.currentFilter.begin ? this.currentFilter.begin :
717
+ (this.datasource.options.minDate ? this.datasource.options.minDate : this._defaultMin);
718
+ }
719
+ handleMax() {
720
+ return this.currentFilter.end ? this.currentFilter.end :
721
+ (this.datasource.options.maxDate ? this.datasource.options.maxDate : this._defaultMax);
722
+ }
723
+ changePropertyByPass(event) {
724
+ this.changeProperty.next(event);
725
+ }
726
+ modeChange(event) {
727
+ if (!event.checked) {
728
+ this.updateValues();
729
+ }
730
+ }
731
+ setFilterStateDisable() {
732
+ if (this.currentFilter) {
733
+ this.filterStateDisable = !this.currentFilter.active;
734
+ }
735
+ else {
736
+ this.filterStateDisable = false;
737
+ }
738
+ if (this.calendarType() === 'datetime') {
739
+ if (this.filterStateDisable === true) {
740
+ this.beginHourFormControl.disable();
741
+ this.beginMinuteFormControl.disable();
742
+ this.endHourFormControl.disable();
743
+ this.endMinuteFormControl.disable();
744
+ }
745
+ else {
746
+ this.beginHourFormControl.enable();
747
+ this.beginMinuteFormControl.enable();
748
+ this.endHourFormControl.enable();
749
+ this.endMinuteFormControl.enable();
750
+ }
751
+ }
752
+ }
753
+ getDateFromStringWithoutTime(stringDate) {
754
+ // warning create date with no time make a date UTC with TZ and the date create maybe not the same year, month and day
755
+ // exemple:
756
+ // new Date('2022-01-01') -> Fri Dec 31 2021 19:00:00 GMT-0500 (heure normale de l’Est nord-américain)
757
+ // to create same date as string, add time 00 in the creation
758
+ // new Date('2022-01-01 00:00:00') -> Sat Jan 01 2022 00:00:00 GMT-0500 (heure normale de l’Est nord-américain)
759
+ let year;
760
+ let month = '01';
761
+ let day = '01';
762
+ if (stringDate.length === 10) {
763
+ const dateItems = stringDate.split('-');
764
+ if (dateItems.length !== 3) {
765
+ throw new Error('Error in config date begin-end for ogcFilter: Date without time format need to be YYYY-MM-DD or YYYY');
766
+ }
767
+ else {
768
+ year = dateItems[0];
769
+ month = dateItems[1];
770
+ day = dateItems[2];
771
+ }
772
+ }
773
+ else if (stringDate.length === 4) {
774
+ year = stringDate;
775
+ }
776
+ else {
777
+ return new Date(stringDate);
778
+ }
779
+ return new Date(`${year}-${month}-${day} 00:00:00`);
780
+ }
781
+ resetFilter() {
782
+ let filterOriginConfig = this.datasource.options.ogcFilters.filters;
783
+ let minDefaultDate;
784
+ let maxDefaultDate;
785
+ let minDefaultISOString;
786
+ let maxDefaultISOString;
787
+ if (this.calendarTypeYear) {
788
+ if (filterOriginConfig.end === 'today') {
789
+ let todayDateStringNoTime = new Date().toLocaleDateString('en-CA'); // '2022-02-13'
790
+ maxDefaultISOString = `${todayDateStringNoTime.substring(0, 4)}-01-01`;
791
+ }
792
+ else {
793
+ maxDefaultISOString = `${filterOriginConfig.end.substring(0, 4)}-01-01`;
794
+ }
795
+ minDefaultISOString = `${filterOriginConfig.begin.substring(0, 4)}-01-01`;
796
+ minDefaultDate = this.getDateFromStringWithoutTime(minDefaultISOString);
797
+ maxDefaultDate = this.getDateFromStringWithoutTime(maxDefaultISOString);
798
+ }
799
+ else {
800
+ minDefaultDate = this.parseFilter(filterOriginConfig.begin);
801
+ maxDefaultDate = this.parseFilter(filterOriginConfig.end);
802
+ minDefaultISOString = minDefaultDate.toISOString();
803
+ maxDefaultISOString = maxDefaultDate.toISOString();
804
+ }
805
+ if ((this.currentFilter.begin !== minDefaultISOString) ||
806
+ (this.currentFilter.end !== maxDefaultISOString)) {
807
+ this.beginValue = minDefaultDate;
808
+ this.endValue = maxDefaultDate;
809
+ this.updateValues();
810
+ }
811
+ }
812
+ toggleFilterState() {
813
+ if (this.currentFilter.active === true) {
814
+ this.currentFilter.active = false;
815
+ }
816
+ else {
817
+ this.currentFilter.active = true;
818
+ }
819
+ this.setFilterStateDisable();
820
+ this.updateValues();
821
+ }
822
+ }
823
+ OgcFilterTimeComponent.ɵfac = function OgcFilterTimeComponent_Factory(t) { return new (t || OgcFilterTimeComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterTimeService)); };
824
+ OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterTimeComponent, selectors: [["igo-ogc-filter-time"]], viewQuery: function OgcFilterTimeComponent_Query(rf, ctx) { if (rf & 1) {
825
+ i0.ɵɵviewQuery(_c0, 5);
826
+ i0.ɵɵviewQuery(_c1, 5);
827
+ i0.ɵɵviewQuery(_c2, 5);
828
+ i0.ɵɵviewQuery(_c3, 5);
829
+ } if (rf & 2) {
830
+ let _t;
831
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endDatepickerTime = _t.first);
832
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginDatepickerTime = _t.first);
833
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginTime = _t.first);
834
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTime = _t.first);
835
+ } }, inputs: { datasource: "datasource", currentFilter: "currentFilter" }, outputs: { changeProperty: "changeProperty" }, decls: 4, vars: 3, consts: [[1, "datetime-container"], [3, "ngModel", "ngModelChange", "change", 4, "ngIf"], ["class", "slider-container", 4, "ngIf"], [4, "ngIf"], [3, "ngModel", "ngModelChange", "change"], [1, "slider-container"], [3, "begin", "max", "currentFilter", "datasource", "changeProperty"], ["class", "year-input-container", 4, "ngIf"], ["class", "datetime-input-container", 4, "ngIf"], [1, "year-input-container"], [1, "year-input"], ["matInput", "", 1, "year-input-only-year", 3, "value", "disabled", "change"], ["matSuffix", "", 3, "for", "disabled"], ["panelClass", "datepicker-year", 3, "startView", "startAt", "yearSelected"], ["beginDatepicker", ""], ["matInput", "", "enabled", "false", "readonly", "true", 1, "year-input-hide", 3, "matDatepicker", "value", "min", "max"], ["beginYear", ""], ["endDatepicker", ""], ["endYear", ""], ["mat-icon-button", "", "color", "primary", 1, "reset-button", 3, "matTooltip", "disabled", "click"], [3, "svgIcon"], ["tooltip-position", "below", "matTooltipShowDelay", "500", 1, "toggle-filter-state", 3, "matTooltip", "checked", "change"], [1, "datetime-input-container"], [1, "datetime-input"], [1, "date-input"], ["matInput", "", 3, "matDatepicker", "placeholder", "matDatepickerFilter", "value", "min", "max", "disabled", "dateChange"], ["begin", ""], [1, "filler"], [3, "startView", "startAt", "yearSelected", "monthSelected"], [1, "time-input"], ["class", "hour-input", 4, "ngIf"], ["class", "minute-input", 4, "ngIf"], ["class", "datetime-input", 4, "ngIf"], [1, "hour-input"], [3, "formControl", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "minute-input"], ["end", ""]], template: function OgcFilterTimeComponent_Template(rf, ctx) { if (rf & 1) {
836
+ i0.ɵɵelementStart(0, "div", 0);
837
+ i0.ɵɵtemplate(1, OgcFilterTimeComponent_mat_slide_toggle_1_Template, 3, 4, "mat-slide-toggle", 1);
838
+ i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_2_Template, 2, 4, "div", 2);
839
+ i0.ɵɵtemplate(3, OgcFilterTimeComponent_div_3_Template, 3, 2, "div", 3);
840
+ i0.ɵɵelementEnd();
841
+ } if (rf & 2) {
842
+ i0.ɵɵadvance(1);
843
+ i0.ɵɵproperty("ngIf", ctx.currentFilter.sliderOptions == null ? null : ctx.currentFilter.sliderOptions.enabled);
844
+ i0.ɵɵadvance(1);
845
+ i0.ɵɵproperty("ngIf", ctx.sliderMode);
846
+ i0.ɵɵadvance(1);
847
+ i0.ɵɵproperty("ngIf", !ctx.sliderMode);
848
+ } }, styles: ["input{text-align:center!important;margin:auto 5px!important}.slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;width:117px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input[_ngcontent-%COMP%]{width:36%;margin:0}}.date-input[_ngcontent-%COMP%]{width:100px;margin-right:25px}.time-input[_ngcontent-%COMP%]{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input[_ngcontent-%COMP%]{margin-right:5px}}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:35px;margin-left:7px}.year-input[_ngcontent-%COMP%]{width:98px;margin:10px 18px 5px 12px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input[_ngcontent-%COMP%]{width:33%;margin:0 0 0 10px}}.year-input-hide[_ngcontent-%COMP%]{width:120px;margin-right:25px;display:none}.year-input-only-year[_ngcontent-%COMP%]{width:120px;margin-right:25px}.reset-button[_ngcontent-%COMP%]{width:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button[_ngcontent-%COMP%]{padding-left:6px}}.toggle-filter-state[_ngcontent-%COMP%]{padding-left:15px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state[_ngcontent-%COMP%]{padding-left:7px}} .datepicker-year .mat-calendar-arrow{display:none} .datepicker-year .mat-calendar-period-button{pointer-events:none} .datepicker-year .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}"] });
849
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeComponent, [{
850
+ type: Component,
851
+ args: [{ selector: 'igo-ogc-filter-time', template: "<div class=\"datetime-container\">\r\n <mat-slide-toggle \r\n *ngIf=\"this.currentFilter.sliderOptions?.enabled\"\r\n [(ngModel)]=\"sliderMode\"\r\n (change)=\"modeChange($event)\">\r\n {{'igo.geo.filter.sliderModeTitle' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <div class=\"slider-container\" *ngIf=\"sliderMode\">\r\n <igo-ogc-filter-time-slider\r\n [begin]=\"beginValue\"\r\n [max]=\"this.restrictedToStep() ? this.maxDate : this.endValue\"\r\n [currentFilter]=\"currentFilter\" \r\n [datasource]=\"datasource\"\r\n (changeProperty)=\"changePropertyByPass($event)\"\r\n >\r\n </igo-ogc-filter-time-slider>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"!sliderMode\">\r\n\r\n <div class=\"year-input-container\" *ngIf=\"calendarTypeYear\">\r\n <!-- to emulate a year-picker, 2 input: first input to show user just year and second input hiden and bind \r\n with the datepicker -->\r\n <mat-form-field class=\"year-input\">\r\n <mat-label>{{'igo.geo.timeFilter.startYear'| translate}}</mat-label>\r\n <input\r\n matInput\r\n class=\"year-input-only-year\"\r\n value=\"{{onlyYearBegin}}\"\r\n (change)= \"yearOnlyInputChange($event, beginDatepicker, 'begin')\"\r\n [disabled]= \"filterStateDisable\"\r\n >\r\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\r\n \r\n <mat-datepicker\r\n panelClass=\"datepicker-year\"\r\n #beginDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"beginValue\"\r\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\r\n >\r\n </mat-datepicker>\r\n\r\n <input #beginYear\r\n class= \"year-input-hide\"\r\n matInput\r\n [matDatepicker]=\"beginDatepicker\"\r\n enabled= false\r\n readonly= true\r\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [min]=\"handleDate(datasource.options.minDate)\"\r\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\"\r\n >\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"year-input\">\r\n <mat-label>{{'igo.geo.timeFilter.endYear'| translate}}</mat-label>\r\n <input\r\n matInput\r\n class=\"year-input-only-year\"\r\n value=\"{{onlyYearEnd}}\"\r\n (change)= \"yearOnlyInputChange($event, endDatepicker, 'end')\"\r\n [disabled] = \"filterStateDisable\">\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n panelClass=\"datepicker-year\"\r\n #endDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"endValue\"\r\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\r\n >\r\n </mat-datepicker>\r\n\r\n <input #endYear\r\n class= \"year-input-hide\"\r\n matInput\r\n [matDatepicker]=\"endDatepicker\"\r\n enabled= false\r\n readonly= true\r\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\r\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [max]=\"handleDate(datasource.options.maxDate)\"\r\n >\r\n </mat-form-field>\r\n <button class=\"reset-button\" \r\n mat-icon-button\r\n color=\"primary\" \r\n (click)=\"resetFilter()\" \r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \r\n [disabled]= \"filterStateDisable\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n <mat-slide-toggle \r\n class='toggle-filter-state' \r\n (change)=\"toggleFilterState()\" \r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \r\n tooltip-position=\"below\" \r\n matTooltipShowDelay=\"500\"\r\n [checked]=\"!filterStateDisable\">\r\n </mat-slide-toggle>\r\n\r\n </div>\r\n\r\n <div class=\"datetime-input-container\" *ngIf=\"calendarType()!=='year'\">\r\n <div class=\"datetime-input\">\r\n <mat-form-field class=\"date-input\">\r\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\r\n <input #begin\r\n matInput\r\n [matDatepicker]=\"beginDatepicker\"\r\n [placeholder]=\"'igo.geo.timeFilter.startDate' | translate\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (dateChange)=\"changeTemporalProperty(begin.value, 1)\"\r\n [matDatepickerFilter]=\"dateFilter.bind(this, 'begin')\"\r\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [min]=\"handleDate(datasource.options.minDate)\"\r\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\" \r\n [disabled]= \"filterStateDisable\">\r\n <span class=\"filler\"></span>\r\n <mat-datepicker\r\n #beginDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"beginValue\"\r\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\r\n (monthSelected)=\"monthSelected($event, beginDatepicker, 'begin')\">\r\n </mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div class=\"time-input\">\r\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"beginHourFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\r\n <mat-option *ngFor=\"let hour of beginHours\" [value]=\"hour\">{{hour}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"beginMinuteFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\r\n <mat-option *ngFor=\"let minute of beginMinutes\" [value]=\"minute\">{{minute}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"datetime-input\" *ngIf=\"!restrictedToStep()\">\r\n <mat-form-field class=\"date-input\">\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\r\n <input #end\r\n matInput\r\n [matDatepicker]=\"endDatepicker\"\r\n [placeholder]=\"'igo.geo.timeFilter.endDate' | translate\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (dateChange)=\"changeTemporalProperty(end.value, 2)\"\r\n [matDatepickerFilter]=\"dateFilter.bind(this, 'end')\"\r\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\r\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [max]=\"handleDate(datasource.options.maxDate)\" \r\n [disabled]= \"filterStateDisable\">\r\n <span class=\"filler\"></span>\r\n <mat-datepicker #endDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"endValue\"\r\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\r\n (monthSelected)=\"monthSelected($event, endDatepicker, 'end')\">\r\n </mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div class=\"time-input\">\r\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\" >\r\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"endHourFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\r\n <mat-option *ngFor=\"let hour of endHours\" [value]=\"hour\">{{hour}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"endMinuteFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\r\n <mat-option *ngFor=\"let minute of endMinutes\" [value]=\"minute\">{{minute}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"reset-button\" \r\n mat-icon-button color=\"primary\"\r\n (click)=\"resetFilter()\" \r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \r\n [disabled]= \"filterStateDisable\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n <mat-slide-toggle \r\n class=\"toggle-filter-state\" \r\n (change)=\"toggleFilterState()\" \r\n tooltip-position=\"below\" \r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \r\n [checked]= \"!filterStateDisable\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}.slider-container{text-align:center}.datetime-input{display:inline-block;width:117px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input{width:36%;margin:0}}.date-input{width:100px;margin-right:25px}.time-input{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input{margin-right:5px}}.hour-input,.minute-input{width:35px;margin-left:7px}.year-input{width:98px;margin:10px 18px 5px 12px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input{width:33%;margin:0 0 0 10px}}.year-input-hide{width:120px;margin-right:25px;display:none}.year-input-only-year{width:120px;margin-right:25px}.reset-button{width:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button{padding-left:6px}}.toggle-filter-state{padding-left:15px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state{padding-left:7px}}::ng-deep .datepicker-year ::ng-deep .mat-calendar-arrow{display:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-period-button{pointer-events:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}\n"] }]
852
+ }], function () { return [{ type: i1.OGCFilterTimeService }]; }, { datasource: [{
853
+ type: Input
854
+ }], currentFilter: [{
855
+ type: Input
856
+ }], changeProperty: [{
857
+ type: Output
858
+ }], endDatepickerTime: [{
859
+ type: ViewChild,
860
+ args: ['endDatepickerTime']
861
+ }], beginDatepickerTime: [{
862
+ type: ViewChild,
863
+ args: ['beginDatepickerTime']
864
+ }], beginTime: [{
865
+ type: ViewChild,
866
+ args: ['beginTime']
867
+ }], endTime: [{
868
+ type: ViewChild,
869
+ args: ['endTime']
870
+ }] }); })();
871
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBUXhFLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7SUNqQnpDLDJDQUdnQztJQUQ5Qiw4UEFBd0IscUxBQ2QsZUFBQSx5QkFBa0IsQ0FBQSxJQURKO0lBRXhCLFlBQ0Y7O0lBQUEsaUJBQW1COzs7SUFIakIsMkNBQXdCO0lBRXhCLGVBQ0Y7SUFERSx1RkFDRjs7OztJQUVBLDhCQUFpRCxvQ0FBQTtJQU03QywrTUFBa0IsZUFBQSxtQ0FBNEIsQ0FBQSxJQUFDO0lBRWpELGlCQUE2QixFQUFBOzs7SUFOM0IsZUFBb0I7SUFBcEIseUNBQW9CLHFFQUFBLHVDQUFBLGlDQUFBOzs7O0lBWXRCLDhCQUEyRCx5QkFBQSxnQkFBQTtJQUk1QyxZQUE2Qzs7SUFBQSxpQkFBWTtJQUNwRSxpQ0FNRztJQUZELG1OQUFXLGVBQUEsMENBQTZDLE9BQU8sQ0FBQyxDQUFBLElBQUM7SUFKbkUsaUJBTUc7SUFDSCw0Q0FBaUg7SUFFakgsOENBTUc7SUFE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TkQsZUFBK0M7UUFBL0MsK0dBQStDO1FBTW5CLGVBQWdCO1FBQWhCLHFDQUFnQjtRQVl6QyxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGREtaLHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLHFCQUFxQjt1RUFLdEIsVUFBVTtrQkFBbEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDSSxjQUFjO2tCQUF2QixNQUFNO1lBZ0N5QixpQkFBaUI7a0JBQWhELFNBQVM7bUJBQUMsbUJBQW1CO1lBQ0ksbUJBQW1CO2tCQUFwRCxTQUFTO21CQUFDLHFCQUFxQjtZQUNSLFNBQVM7a0JBQWhDLFNBQVM7bUJBQUMsV0FBVztZQUNBLE9BQU87a0JBQTVCLFNBQVM7bUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2djRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuZW51bSc7XHJcbmltcG9ydCB7IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL29nYy1maWx0ZXItdGltZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXHJcbiAgT2djRmlsdGVyRHVyaW5nT3B0aW9uc1xyXG59IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XHJcblxyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1vZ2MtZmlsdGVyLXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vZ2MtZmlsdGVyLXRpbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29nYy1maWx0ZXItdGltZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhc291cmNlOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZTtcclxuICBASW5wdXQoKSBjdXJyZW50RmlsdGVyOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNoYW5nZVByb3BlcnR5OiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICAgIHBvczogbnVtYmVyO1xyXG4gICAgcmVmcmVzaEZpbHRlcjogYm9vbGVhbjtcclxuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBiZWdpbkhvdXJzOiBudW1iZXJbXTtcclxuICBlbmRIb3VyczogbnVtYmVyW107XHJcbiAgYmVnaW5NaW51dGVzOiBudW1iZXJbXTtcclxuICBlbmRNaW51dGVzOiBudW1iZXJbXTtcclxuICBiZWdpbkhvdXJGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBiZWdpbk1pbnV0ZUZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIGVuZEhvdXJGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBlbmRNaW51dGVGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBfYmVnaW5WYWx1ZTogRGF0ZTtcclxuICBfZW5kVmFsdWU6IERhdGU7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRNaW46IHN0cmluZyA9ICcxOTAwLTAxLTAxJztcclxuICByZWFkb25seSBfZGVmYXVsdE1heDogc3RyaW5nID0gJzIwNTItMDEtMDYnO1xyXG4gIHJlYWRvbmx5IF9kZWZhdWx0RGlzcGxheUZvcm1hdDogc3RyaW5nID0gJ0REL01NL1lZWVkgSEg6bW0gQSc7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb2djRmlsdGVyT3BlcmF0b3IgPSBPZ2NGaWx0ZXJPcGVyYXRvcjtcclxuICBwdWJsaWMgc2xpZGVyTW9kZSA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBkZWZhdWx0U3RlcE1pbGxpc2Vjb25kID0gNjAwMDA7XHJcbiAgcHVibGljIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcclxuXHJcbiAgcHVibGljIG9ubHlZZWFyQmVnaW46IG51bWJlcjtcclxuICBwdWJsaWMgb25seVllYXJFbmQ6IG51bWJlcjtcclxuICBwdWJsaWMgY2FsZW5kYXJUeXBlWWVhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcclxuICBwdWJsaWMgZmlsdGVyU3RhdGVEaXNhYmxlOiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbmREYXRlcGlja2VyVGltZScpIGVuZERhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luRGF0ZXBpY2tlclRpbWUnKSBiZWdpbkRhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luVGltZScpIGJlZ2luVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdlbmRUaW1lJykgZW5kVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgZ2V0IHN0ZXAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLnN0ZXBEYXRlXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnN0ZXA7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RlcE1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RlcCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTWlsbGlzZWNvbmRzKCk7XHJcbiAgICByZXR1cm4gc3RlcCA9PT0gMCA/IHRoaXMuZGVmYXVsdFN0ZXBNaWxsaXNlY29uZCA6IHN0ZXA7XHJcbiAgfVxyXG5cclxuICBzZXQgYmVnaW5WYWx1ZShiZWdpbjogRGF0ZSkge1xyXG4gICAgdGhpcy5fYmVnaW5WYWx1ZSA9IGJlZ2luO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJlZ2luVmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCBlbmRWYWx1ZShlbmQ6IERhdGUpIHtcclxuICAgIHRoaXMuX2VuZFZhbHVlID0gZW5kO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZFZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNsaWRlckludGVydmFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcclxuICAgICAgPyAyMDAwXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXg7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzcGxheUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0ID8gdGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQgOiB0aGlzLl9kZWZhdWx0RGlzcGxheUZvcm1hdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvZ2NGaWx0ZXJUaW1lU2VydmljZTogT0dDRmlsdGVyVGltZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA9IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA6IHRoaXMuX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5oYW5kbGVNaW4oKSk7XHJcbiAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1heCgpKTtcclxuXHJcbiAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyVHlwZVllYXIgPSB0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKTtcclxuICAgIC8vIHVwZGF0ZSB2YWx1ZSBmb3Igbm93IHZhbHVlXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VGaWx0ZXIoZmlsdGVyKTogRGF0ZSB7XHJcbiAgICBpZiAoIWZpbHRlcil7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgfSBlbHNlIGlmICggaXNOYU4oIG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpICkgKcKge1xyXG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgnbm93JykgPj0gMCApwqB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXCsvKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCcrJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmFkZChpbnRlcnZhbEludCwgaW50ZXJ2YWxbMF0pLnRvRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXC0vKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWx0ZXIuc2VhcmNoKCd0b2RheScpID49IDApe1xyXG4gICAgICAgIGNvbnN0IF9ub3cgPSBtb21lbnQoKS5lbmRPZignZGF5JykudG9EYXRlKCk7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoIGZpbHRlci5tYXRjaCgvXFwrLykgKSB7XHJcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KCBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5zZWFyY2goJysnKSArIDEsIGludGVydmFsLmluZGV4KSwgMTAgKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuYWRkKGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICggZmlsdGVyLm1hdGNoKC9cXC0vKSApIHtcclxuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksIDEwKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuc3VidHJhY3QoaW50ZXJ2YWxJbnQsIGludGVydmFsWzBdKS50b0RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIF9ub3c7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShmaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXIgPyBuZXcgRGF0ZShmaWx0ZXIpIDogbmV3IERhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkodmFsdWUsIHBvc2l0aW9uPywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGxldCB2YWx1ZVRtcCA9IHRoaXMuZ2V0RGF0ZVRpbWUodmFsdWUsIHBvc2l0aW9uKTtcclxuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpKSB7XHJcbiAgICAgIGxldCBkYXRlU3RyaW5nRnJvbVllYXJOb3RpbWU7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJCZWdpbn0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLm9ubHlZZWFyRW5kID0gdGhpcy5lbmRWYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJFbmR9LTAxLTAxYDtcclxuICAgICAgfVxyXG4gICAgICAvLyBjYWxsIHNlcnZpY2Ugd2l0aCBzdHJpbmcgZGF0ZSB3aXRob3V0IHRpbWVcclxuICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHsgdmFsdWU6IGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHBvc2l0aW9uID09PSAyICYmIHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRlJyAmJiAhdGhpcy5zbGlkZXJNb2RlKSB7XHJcbiAgICAgIC8qIEFib3ZlIG1vbnRoOiBzZWUgeWVhclNlbGVjdGVkIG9yIG1vbnRoU2VsZWN0ZWQgKi9cclxuICAgICAgdmFsdWVUbXAgPSBtb21lbnQodmFsdWVUbXApLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcclxuICAgICAgdGhpcy5iZWdpblZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLmFkZFN0ZXAodmFsdWVUbXAsIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyksIDIsIHJlZnJlc2hGaWx0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUhvdXJzTWludXRlc0FycmF5KCk7XHJcbiAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoeyB2YWx1ZTogdmFsdWVUbXAudG9JU09TdHJpbmcoKSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURhdGUodmFsdWUpOiBEYXRlIHtcclxuICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ3N0cmluZycgJiYgdGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGVwTWlsbGlzZWNvbmRzIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdkYXRldGltZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2RhdGUnO1xyXG4gIH1cclxuXHJcbiAgaXNDYWxlbmRhclllYXJNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJPbmx5SW5wdXRDaGFuZ2UoY2hhbmdlRXZlbnQsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB5ZWFyID0gY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh5ZWFyKTtcclxuICAgIHRoaXMueWVhclNlbGVjdGVkKGRhdGUsIGRhdGVQaWNrZXIsIHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIHllYXJTZWxlY3RlZCh5ZWFyLCBkYXRlUGlja2VyPzogYW55LCBwcm9wZXJ0eT86IHN0cmluZywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAvLyBjaGFuZ2UgdmFsdWUgMDEgamFuIHRvIDMxIGRlYyBzYW1lIHllYXJcclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkgJiYgIXRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICAgIHRoaXMueWVhclNlbGVjdGVkKHllYXIsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh5ZWFyLCBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyA/IDEgOiAyLCByZWZyZXNoRmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbnRoU2VsZWN0ZWQobW9udGgsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nLCByZWZyZXNoRmlsdGVyID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICBtb250aCA9IG1vbWVudChtb250aCkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkpIHtcclxuICAgICAgICB0aGlzLm1vbnRoU2VsZWN0ZWQobW9udGgsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShtb250aCwgcHJvcGVydHkgPT09ICdiZWdpbicgPyAxIDogMiwgcmVmcmVzaEZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhclZpZXcoKSB7XHJcbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5zdGVwTWlsbGlzZWNvbmRzO1xyXG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKFxyXG4gICAgICB0aGlzLnBhcnNlRmlsdGVyKHRoaXMuY3VycmVudEZpbHRlci5lbmQpLmdldFRpbWUoKSAtXHJcbiAgICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4pLmdldFRpbWUoKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRlc3QgPCA4NjQwMDAwMCAmJiBkaWZmIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdjbG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ21vbnRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRhdGVGaWx0ZXIodHlwZTogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgY29uc3QgZGlmZiA9IGRhdGVWYWx1ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSh0aGlzLmhhbmRsZU1pbigpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgY29uc3QgbW9udGhEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd5ZWFycycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGhEaWZmUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlUGx1czEpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAneWVhcnMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpKSA9PT0gMDtcclxuICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ2JlZ2luJyApIHtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzWWVhcnMoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAnbW9udGhzJywgdHJ1ZSk7XHJcbiAgICAgIGlmICggdHlwZSA9PT0gJ2VuZCcgKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcclxuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdtb250aHMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuIChtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc01vbnRocygpKSA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1dlZWtEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IHdlZWtEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiAod2Vla0RpZmZQbHVzMSAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuICh3ZWVrRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNEYXlEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2RheXMnLCB0cnVlKTtcclxuICAgICAgaWYgKCB0eXBlID09PSAnZW5kJyApIHtcclxuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xyXG4gICAgICAgIGNvbnN0IGRheURpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdkYXlzJywgdHJ1ZSk7XHJcbiAgICAgICAgY29uc3QgX21vZCA9IChkYXlEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSk7XHJcbiAgICAgICAgcmV0dXJuIChfbW9kIDwgMC4wMDAwMDAxICYmIF9tb2QgPiAtMC4wMDAwMDAxKSB8fCBfbW9kID09PSAwIDsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxyXG4gICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnYmVnaW4nICkge1xyXG4gICAgICAgIGNvbnN0IF9tb2QgPSAoKGRheURpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSkgKyAxKTtcclxuICAgICAgICByZXR1cm4gKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEgJiYgX21vZCAhPT0gMCkgfHwgX21vZCA9PT0gMSA7IC8vIDEgbWlsbGlzZWNvbmQgPSAxLjE1NzQwNzQwNzQwNzQwNzZlLThcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgY29uc3QgaG91ckRpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2hvdXJzJywgdHJ1ZSk7XHJcbiAgICAgIHJldHVybiAoaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkpID09PSAwO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRpZmYgJSB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlVGltZShkYXRlLCBwb3MpIHtcclxuICAgIGNvbnN0IHZhbHVldG1wID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBsZXQgdmFsdWV0bXAyO1xyXG4gICAgaWYgKCF0aGlzLnNsaWRlck1vZGUpIHtcclxuICAgICAgc3dpdGNoIChwb3MpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgICB0aGlzLmVuZEhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVldG1wMiA/IHZhbHVldG1wMiA6IHZhbHVldG1wKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1pbnV0ZUluY3JlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01pbnV0ZUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCA9PT0gNjAgPyAxIDogdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAlIDM2MDAwMDApIC8gNjA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUhvdXJJbmNyZW1lbnQoKSB7XHJcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCAvIDYwIC8gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbkhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAodGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgeyBsZW5ndGg6ICgyMyAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5iZWdpblZhbHVlLmdldEhvdXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgZnVsbEVuZEhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKDIzIC0gdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSkgL1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnZhbHVlICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZEhvdXJzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcclxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRIb3VycygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbk1pbnV0ZXNBcnJheShjaGVja0VuZFZhbHVlPykge1xyXG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcclxuICAgICAgdGhpcy5iZWdpbk1pbnV0ZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvXHJcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArXHJcbiAgICAgICAgICAgIDFcclxuICAgICAgICB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5NaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJlZ2luVmFsdWUuZ2V0TWludXRlcygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxFbmRNaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kTWludXRlcyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAoNTkgLSB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUpIC9cclxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRNaW51dGVzKCkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKSB7XHJcbiAgICBjb25zdCBiZWdpblRtcCA9IG5ldyBEYXRlKHRoaXMuYmVnaW5WYWx1ZSk7XHJcbiAgICBjb25zdCBlbmRUbXAgPSBuZXcgRGF0ZSh0aGlzLmVuZFZhbHVlKTtcclxuICAgIGlmIChiZWdpblRtcC5zZXRIb3VycygwLCAwKSA9PT0gZW5kVG1wLnNldEhvdXJzKDAsIDApKSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgdGhpcy5mdWxsRW5kSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgaWYgKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpID09PSB0aGlzLmVuZFZhbHVlLmdldEhvdXJzKCkpIHtcclxuICAgICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSh0cnVlKTtcclxuICAgICAgICB0aGlzLmZ1bGxFbmRNaW51dGVzQXJyYXkodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSgpO1xyXG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luTWludXRlc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEVuZE1pbnV0ZXNBcnJheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5iZWdpblZhbHVlLCAxLCBmYWxzZSk7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5lbmRWYWx1ZSwgMiwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdHJpY3RlZFRvU3RlcCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXBcclxuICAgICAgPyB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNaW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luID8gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luIDpcclxuICAgICAgICAgICAgICAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUgOiB0aGlzLl9kZWZhdWx0TWluKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNYXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmVuZCA/IHRoaXMuY3VycmVudEZpbHRlci5lbmQgOlxyXG4gICAgICAgICAgICAgICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUHJvcGVydHlCeVBhc3MoZXZlbnQpIHtcclxuICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBtb2RlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoIWV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZpbHRlclN0YXRlRGlzYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSAhdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGVEaXNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShzdHJpbmdEYXRlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIC8vIHdhcm5pbmcgY3JlYXRlIGRhdGUgd2l0aCBubyB0aW1lIG1ha2UgYSBkYXRlIFVUQyB3aXRoIFRaIGFuZCB0aGUgZGF0ZSBjcmVhdGUgbWF5YmUgbm90IHRoZSBzYW1lIHllYXIsIG1vbnRoIGFuZCBkYXlcclxuICAgIC8vIGV4ZW1wbGU6XHJcbiAgICAvLyBuZXcgRGF0ZSgnMjAyMi0wMS0wMScpIC0+IEZyaSBEZWMgMzEgMjAyMSAxOTowMDowMCBHTVQtMDUwMCAoaGV1cmUgbm9ybWFsZSBkZSBs4oCZRXN0IG5vcmQtYW3DqXJpY2FpbilcclxuICAgIC8vIHRvIGNyZWF0ZSBzYW1lIGRhdGUgYXMgc3RyaW5nLCBhZGQgdGltZSAwMCBpbiB0aGUgY3JlYXRpb25cclxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxyXG4gICAgbGV0IHllYXI7XHJcbiAgICBsZXQgbW9udGggPSAnMDEnO1xyXG4gICAgbGV0IGRheSA9ICcwMSc7XHJcbiAgICBpZiAoc3RyaW5nRGF0ZS5sZW5ndGggPT09IDEwKSB7XHJcbiAgICAgICBjb25zdCBkYXRlSXRlbXMgPSBzdHJpbmdEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gY29uZmlnIGRhdGUgYmVnaW4tZW5kIGZvciBvZ2NGaWx0ZXI6IERhdGUgd2l0aG91dCB0aW1lIGZvcm1hdCBuZWVkIHRvIGJlIFlZWVktTU0tREQgb3IgWVlZWScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5ZWFyID0gZGF0ZUl0ZW1zWzBdO1xyXG4gICAgICAgICAgbW9udGggPSBkYXRlSXRlbXNbMV07XHJcbiAgICAgICAgICBkYXkgPSBkYXRlSXRlbXNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzdHJpbmdEYXRlLmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICB5ZWFyID0gc3RyaW5nRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShzdHJpbmdEYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gMDA6MDA6MDBgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVyKCkge1xyXG4gICAgbGV0IGZpbHRlck9yaWdpbkNvbmZpZyA9IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyBhcyBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zO1xyXG5cclxuICAgIGxldCBtaW5EZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtYXhEZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtaW5EZWZhdWx0SVNPU3RyaW5nO1xyXG4gICAgbGV0IG1heERlZmF1bHRJU09TdHJpbmc7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICBpZiAoZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIGxldCB0b2RheURhdGVTdHJpbmdOb1RpbWUgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQ0EnKTsgLy8gJzIwMjItMDItMTMnXHJcbiAgICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IGAke3RvZGF5RGF0ZVN0cmluZ05vVGltZS5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1heERlZmF1bHRJU09TdHJpbmcgPSBgJHtmaWx0ZXJPcmlnaW5Db25maWcuZW5kLnN1YnN0cmluZygwLDQpfS0wMS0wMWA7XHJcbiAgICAgIH1cclxuICAgICAgbWluRGVmYXVsdElTT1N0cmluZyA9IGAke2ZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShtaW5EZWZhdWx0SVNPU3RyaW5nKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWF4RGVmYXVsdElTT1N0cmluZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIoZmlsdGVyT3JpZ2luQ29uZmlnLmJlZ2luKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLnBhcnNlRmlsdGVyKGZpbHRlck9yaWdpbkNvbmZpZy5lbmQpO1xyXG4gICAgICBtaW5EZWZhdWx0SVNPU3RyaW5nID0gbWluRGVmYXVsdERhdGUudG9JU09TdHJpbmcoKTtcclxuICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IG1heERlZmF1bHREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4gIT09IG1pbkRlZmF1bHRJU09TdHJpbmcgKSB8fFxyXG4gICAgKHRoaXMuY3VycmVudEZpbHRlci5lbmQgIT09IG1heERlZmF1bHRJU09TdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IG1pbkRlZmF1bHREYXRlO1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gbWF4RGVmYXVsdERhdGU7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXJTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRldGltZS1jb250YWluZXJcIj5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJzbGlkZXJNb2RlXCJcclxuICAgIChjaGFuZ2UpPVwibW9kZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICB7eydpZ28uZ2VvLmZpbHRlci5zbGlkZXJNb2RlVGl0bGUnIHwgdHJhbnNsYXRlfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XHJcbiAgICA8aWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXJcclxuICAgICAgW2JlZ2luXT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXHJcbiAgICAgIFtjdXJyZW50RmlsdGVyXT1cImN1cnJlbnRGaWx0ZXJcIiBcclxuICAgICAgW2RhdGFzb3VyY2VdPVwiZGF0YXNvdXJjZVwiXHJcbiAgICAgIChjaGFuZ2VQcm9wZXJ0eSk9XCJjaGFuZ2VQcm9wZXJ0eUJ5UGFzcygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvaWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXI+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFzbGlkZXJNb2RlXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInllYXItaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGVZZWFyXCI+XHJcbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXHJcbiAgICAgICAgd2l0aCB0aGUgZGF0ZXBpY2tlciAgLS0+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCAgY2xhc3M9XCJ5ZWFyLWlucHV0XCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnRZZWFyJ3wgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcclxuICAgICAgICAgIHZhbHVlPVwie3tvbmx5WWVhckJlZ2lufX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gIFxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgcGFuZWxDbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXHJcbiAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2JlZ2luWWVhclxyXG4gICAgICAgICAgY2xhc3M9IFwieWVhci1pbnB1dC1oaWRlXCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJiZWdpbkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgZW5hYmxlZD0gZmFsc2VcclxuICAgICAgICAgIHJlYWRvbmx5PSB0cnVlXHJcbiAgICAgICAgICBbdmFsdWVdPVwiYmVnaW5WYWx1ZT9iZWdpblZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXCJcclxuICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgW21heF09XCIoZW5kVmFsdWUgJiYgKCFyZXN0cmljdGVkVG9TdGVwKCkpKT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgIGNsYXNzPVwieWVhci1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmVuZFllYXInfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwieWVhci1pbnB1dC1vbmx5LXllYXJcIlxyXG4gICAgICAgICAgdmFsdWU9XCJ7e29ubHlZZWFyRW5kfX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdID0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImVuZERhdGVwaWNrZXJcIiBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyXHJcbiAgICAgICAgICBwYW5lbENsYXNzPVwiZGF0ZXBpY2tlci15ZWFyXCJcclxuICAgICAgICAgICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImVuZFZhbHVlXCJcclxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2VuZFllYXJcclxuICAgICAgICAgIGNsYXNzPSBcInllYXItaW5wdXQtaGlkZVwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZW5kRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICBlbmFibGVkPSBmYWxzZVxyXG4gICAgICAgICAgcmVhZG9ubHk9IHRydWVcclxuICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICBbbWluXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz0ndG9nZ2xlLWZpbHRlci1zdGF0ZScgXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVGaWx0ZXJTdGF0ZSgpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnRvZ2dsZUZpbHRlclN0YXRlJyB8IHRyYW5zbGF0ZVwiIFxyXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIFxyXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpIT09J3llYXInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxpbnB1dCAjYmVnaW5cclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoYmVnaW4udmFsdWUsIDEpXCJcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIihlbmRWYWx1ZSAmJiAoIXJlc3RyaWN0ZWRUb1N0ZXAoKSkpP2VuZFZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCIgXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxyXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJiZWdpblZhbHVlXCJcclxuICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIj5cclxuICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpPT09J2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8udGltZUZpbHRlci5ob3VyJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e2hvdXJ9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1pbnV0ZS1pbnB1dFwiICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCk9PT0nZGF0ZXRpbWUnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbk1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57e21pbnV0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiICpuZ0lmPVwiIXJlc3RyaWN0ZWRUb1N0ZXAoKVwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZW5kRGF0ZXBpY2tlclwiIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZW5kXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJlbmREYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5lbmREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIlxyXG4gICAgICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzLCAnZW5kJylcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICAgICAgW21pbl09XCJiZWdpblZhbHVlP2JlZ2luVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICAgIFttYXhdPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIiBcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxyXG4gICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJtb250aFNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCI+XHJcbiAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIiA+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmhvdXInIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgZW5kSG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7aG91cn19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIubWludXRlJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZE1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7bWludXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz1cInRvZ2dsZS1maWx0ZXItc3RhdGVcIiBcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIiBcclxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCIgXHJcbiAgICAgICAgW2NoZWNrZWRdPSBcIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=