@igo2/geo 17.0.0-next.6 → 17.0.0-next.7

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 (302) 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/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +7 -5
  7. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +6 -5
  8. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -2
  9. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
  10. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +5 -5
  11. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +36 -14
  12. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -1
  13. package/esm2022/lib/catalog/catalog-library/index.mjs +2 -7
  14. package/esm2022/lib/catalog/catalog.module.mjs +13 -6
  15. package/esm2022/lib/catalog/index.mjs +2 -7
  16. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  17. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  18. package/esm2022/lib/datasource/index.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
  20. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  21. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  22. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
  23. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  24. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
  25. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  26. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
  27. package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
  28. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +8 -1
  29. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  30. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +67 -36
  31. package/esm2022/lib/directions/directions.component.mjs +72 -18
  32. package/esm2022/lib/directions/directions.module.mjs +4 -10
  33. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  34. package/esm2022/lib/directions/index.mjs +2 -1
  35. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  36. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  37. package/esm2022/lib/directions/shared/directions.service.mjs +11 -19
  38. package/esm2022/lib/directions/shared/directions.utils.mjs +2 -2
  39. package/esm2022/lib/directions/shared/index.mjs +1 -1
  40. package/esm2022/lib/directions/shared/store.mjs +2 -2
  41. package/esm2022/lib/download/download-button/download-button.component.mjs +4 -4
  42. package/esm2022/lib/download/download-button/index.mjs +1 -1
  43. package/esm2022/lib/download/index.mjs +1 -1
  44. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  45. package/esm2022/lib/download/shared/index.mjs +1 -1
  46. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
  47. package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
  48. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +5 -5
  49. package/esm2022/lib/draw/draw/draw.component.mjs +5 -5
  50. package/esm2022/lib/draw/index.mjs +1 -1
  51. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  52. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +6 -5
  53. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +10 -4
  54. package/esm2022/lib/feature/feature-details/index.mjs +2 -7
  55. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
  56. package/esm2022/lib/feature/feature.module.mjs +13 -6
  57. package/esm2022/lib/feature/index.mjs +2 -7
  58. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  59. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  60. package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
  61. package/esm2022/lib/feature/shared/store.mjs +2 -2
  62. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
  63. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
  64. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
  65. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
  66. package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
  67. package/esm2022/lib/feature/shared/strategies/search.mjs +2 -2
  68. package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
  69. package/esm2022/lib/filter/filter.module.mjs +4 -4
  70. package/esm2022/lib/filter/index.mjs +2 -36
  71. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +5 -5
  72. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +4 -4
  73. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +6 -6
  74. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +18 -20
  75. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  76. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +5 -5
  77. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +5 -5
  78. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  79. package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
  80. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
  81. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -5
  82. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +5 -5
  83. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -5
  84. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +4 -4
  85. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +5 -5
  86. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  87. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +5 -5
  88. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -1
  89. package/esm2022/lib/geometry/geometry-form-field/index.mjs +3 -8
  90. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  91. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  92. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  93. package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -4
  94. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  95. package/esm2022/lib/import-export/import-export/import-export.component.mjs +8 -6
  96. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  97. package/esm2022/lib/import-export/import-export.module.mjs +6 -1
  98. package/esm2022/lib/import-export/index.mjs +2 -9
  99. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -3
  100. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  101. package/esm2022/lib/import-export/shared/export.service.mjs +8 -2
  102. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  103. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  104. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  105. package/esm2022/lib/layer/index.mjs +2 -19
  106. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +4 -4
  107. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -5
  108. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +5 -5
  109. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +26 -20
  110. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +5 -5
  111. package/esm2022/lib/layer/layer.module.mjs +12 -1
  112. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  113. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +4 -4
  114. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +4 -4
  115. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +4 -4
  116. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
  117. package/esm2022/lib/map/index.mjs +1 -32
  118. package/esm2022/lib/map/map.module.mjs +34 -34
  119. package/esm2022/lib/map/menu-button/menu-button.component.mjs +4 -4
  120. package/esm2022/lib/map/offline-button/offline-button.component.mjs +4 -4
  121. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +4 -4
  122. package/esm2022/lib/map/shared/hover-feature.directive.mjs +2 -2
  123. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -4
  124. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
  125. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
  126. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
  127. package/esm2022/lib/measure/measurer/measurer.component.mjs +5 -5
  128. package/esm2022/lib/measure/shared/index.mjs +1 -1
  129. package/esm2022/lib/metadata/index.mjs +2 -6
  130. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  131. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
  132. package/esm2022/lib/metadata/metadata.module.mjs +5 -1
  133. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  134. package/esm2022/lib/metadata/shared/metadata.service.mjs +1 -1
  135. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  136. package/esm2022/lib/offline/shared/index.mjs +1 -1
  137. package/esm2022/lib/overlay/index.mjs +1 -1
  138. package/esm2022/lib/print/index.mjs +1 -1
  139. package/esm2022/lib/print/print-form/index.mjs +1 -1
  140. package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
  141. package/esm2022/lib/print/shared/index.mjs +1 -1
  142. package/esm2022/lib/print/shared/print.service.mjs +85 -76
  143. package/esm2022/lib/query/index.mjs +1 -1
  144. package/esm2022/lib/query/shared/index.mjs +2 -1
  145. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  146. package/esm2022/lib/search/index.mjs +2 -13
  147. package/esm2022/lib/search/search-bar/search-bar.component.mjs +9 -6
  148. package/esm2022/lib/search/search-results/index.mjs +2 -7
  149. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +5 -5
  150. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +7 -5
  151. package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -2
  152. package/esm2022/lib/search/search-results/search-results.component.mjs +7 -5
  153. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  154. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  155. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  156. package/esm2022/lib/search/search.module.mjs +15 -1
  157. package/esm2022/lib/search/shared/index.mjs +2 -1
  158. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +2 -2
  159. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  160. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  161. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  162. package/esm2022/lib/search/shared/search.service.mjs +29 -10
  163. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +8 -1
  164. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +11 -1
  165. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +2 -2
  166. package/esm2022/lib/search/shared/sources/icherche.mjs +2 -2
  167. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +20 -1
  168. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +11 -1
  169. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  170. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +8 -1
  171. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
  172. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  173. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +14 -1
  174. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +8 -1
  175. package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
  176. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +5 -5
  177. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +5 -5
  178. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
  179. package/esm2022/lib/toast/index.mjs +1 -1
  180. package/esm2022/lib/toast/toast.component.mjs +4 -2
  181. package/esm2022/lib/wkt/index.mjs +1 -1
  182. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  183. package/esm2022/lib/workspace/index.mjs +1 -1
  184. package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
  185. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +3 -2
  186. package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
  187. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -2
  188. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  189. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
  190. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -2
  191. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +3 -2
  192. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  193. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  194. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +1 -1
  195. package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
  196. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
  197. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  198. package/esm2022/lib/workspace/workspace.module.mjs +2 -2
  199. package/fesm2022/igo2-geo.mjs +30361 -30092
  200. package/fesm2022/igo2-geo.mjs.map +1 -1
  201. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +2 -2
  202. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  203. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
  204. package/lib/catalog/catalog-library/catalog-library.component.d.ts +7 -2
  205. package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -0
  206. package/lib/catalog/catalog-library/index.d.ts +1 -3
  207. package/lib/catalog/catalog.module.d.ts +6 -3
  208. package/lib/catalog/index.d.ts +1 -2
  209. package/lib/catalog/shared/catalog.interface.d.ts +1 -1
  210. package/lib/directions/directions-sources/directions-source.d.ts +7 -3
  211. package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
  212. package/lib/directions/directions-sources/directions-source.provider.d.ts +2 -0
  213. package/lib/directions/directions-sources/osrm-directions-source.d.ts +19 -10
  214. package/lib/directions/directions.component.d.ts +15 -3
  215. package/lib/directions/directions.module.d.ts +5 -6
  216. package/lib/directions/directions.provider.d.ts +3 -0
  217. package/lib/directions/index.d.ts +1 -0
  218. package/lib/directions/shared/directions.service.d.ts +3 -2
  219. package/lib/directions/shared/directions.utils.d.ts +1 -1
  220. package/lib/directions/shared/store.d.ts +1 -1
  221. package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
  222. package/lib/draw/draw/draw.component.d.ts +1 -1
  223. package/lib/environment/environment.interface.d.ts +2 -1
  224. package/lib/feature/feature-details/feature-details.component.d.ts +1 -1
  225. package/lib/feature/feature-details/feature-details.module.d.ts +3 -0
  226. package/lib/feature/feature-details/index.d.ts +1 -3
  227. package/lib/feature/feature-form/feature-form.component.d.ts +1 -2
  228. package/lib/feature/feature.module.d.ts +6 -3
  229. package/lib/feature/index.d.ts +1 -2
  230. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  231. package/lib/feature/shared/feature.utils.d.ts +1 -1
  232. package/lib/feature/shared/store.d.ts +1 -1
  233. package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
  234. package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
  235. package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
  236. package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
  237. package/lib/feature/shared/strategies/loading.d.ts +1 -1
  238. package/lib/feature/shared/strategies/search.d.ts +1 -1
  239. package/lib/feature/shared/strategies/selection.d.ts +1 -1
  240. package/lib/filter/filter.module.d.ts +19 -0
  241. package/lib/filter/index.d.ts +1 -16
  242. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +1 -1
  243. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +3 -3
  244. package/lib/filter/shared/ogc-filter.d.ts +7 -0
  245. package/lib/filter/shared/ogc-filter.interface.d.ts +1 -1
  246. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +1 -1
  247. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +1 -1
  248. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
  249. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +3 -0
  250. package/lib/geometry/geometry-form-field/index.d.ts +2 -4
  251. package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
  252. package/lib/import-export/import-export/import-export.component.d.ts +2 -2
  253. package/lib/import-export/import-export.module.d.ts +4 -0
  254. package/lib/import-export/index.d.ts +1 -4
  255. package/lib/import-export/shared/drop-geo-file.directive.d.ts +2 -1
  256. package/lib/import-export/shared/export.utils.d.ts +1 -1
  257. package/lib/import-export/shared/import.utils.d.ts +1 -1
  258. package/lib/layer/index.d.ts +1 -8
  259. package/lib/layer/layer-list/layer-list.component.d.ts +4 -3
  260. package/lib/layer/layer.module.d.ts +10 -0
  261. package/lib/map/index.d.ts +0 -14
  262. package/lib/map/map.module.d.ts +32 -15
  263. package/lib/measure/measurer/measurer.component.d.ts +1 -1
  264. package/lib/metadata/index.d.ts +1 -2
  265. package/lib/metadata/metadata.module.d.ts +2 -0
  266. package/lib/print/shared/print.service.d.ts +11 -7
  267. package/lib/query/shared/index.d.ts +1 -0
  268. package/lib/search/index.d.ts +1 -5
  269. package/lib/search/search-bar/search-bar.component.d.ts +2 -1
  270. package/lib/search/search-results/index.d.ts +1 -3
  271. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  272. package/lib/search/search-results/search-results.component.d.ts +1 -1
  273. package/lib/search/search-results/search-results.directive.d.ts +3 -0
  274. package/lib/search/search.module.d.ts +8 -0
  275. package/lib/search/shared/index.d.ts +1 -0
  276. package/lib/search/shared/search-source.service.d.ts +1 -1
  277. package/lib/search/shared/search.interfaces.d.ts +1 -1
  278. package/lib/search/shared/search.provider.d.ts +8 -0
  279. package/lib/search/shared/search.service.d.ts +7 -2
  280. package/lib/search/shared/sources/cadastre.providers.d.ts +2 -0
  281. package/lib/search/shared/sources/coordinates.providers.d.ts +2 -0
  282. package/lib/search/shared/sources/icherche-icons.d.ts +1 -1
  283. package/lib/search/shared/sources/icherche.providers.d.ts +6 -12
  284. package/lib/search/shared/sources/ilayer.providers.d.ts +2 -0
  285. package/lib/search/shared/sources/nominatim.providers.d.ts +2 -0
  286. package/lib/search/shared/sources/source.d.ts +1 -1
  287. package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
  288. package/lib/search/shared/sources/storedqueries.providers.d.ts +3 -0
  289. package/lib/search/shared/sources/workspace.providers.d.ts +2 -0
  290. package/lib/toast/toast.component.d.ts +1 -1
  291. package/lib/workspace/shared/edition-workspace.d.ts +1 -1
  292. package/lib/workspace/shared/feature-workspace.d.ts +1 -1
  293. package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
  294. package/lib/workspace/shared/workspace.utils.d.ts +2 -1
  295. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +2 -1
  296. package/lib/workspace/widgets/widgets.d.ts +1 -1
  297. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  298. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  299. package/lib/workspace/workspace.module.d.ts +1 -1
  300. package/locale/en.geo.json +6 -1
  301. package/locale/fr.geo.json +6 -1
  302. package/package.json +5 -5
@@ -10,12 +10,12 @@ import { MatInputModule } from '@angular/material/input';
10
10
  import { MatRadioModule } from '@angular/material/radio';
11
11
  import { MatSelectModule } from '@angular/material/select';
12
12
  import { LanguageService } from '@igo2/core/language';
13
+ import { IgoLanguageModule } from '@igo2/core/language';
13
14
  import OlFeature from 'ol/Feature';
14
15
  import Circle from 'ol/geom/Circle';
15
16
  import { fromCircle } from 'ol/geom/Polygon';
16
17
  import { transform } from 'ol/proj';
17
18
  import { getLength } from 'ol/sphere';
18
- import { TranslateModule } from '@ngx-translate/core';
19
19
  import { roundCoordTo } from '../../map/shared';
20
20
  import { MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureLengthUnit, MeasureLengthUnitAbbreviation } from '../../measure/shared/measure.enum';
21
21
  import { measureOlGeometryArea, measureOlGeometryLength, metersToUnit, squareMetersToUnit } from '../../measure/shared/measure.utils';
@@ -384,7 +384,7 @@ export class DrawPopupComponent {
384
384
  return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
385
385
  }
386
386
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DrawPopupComponent, deps: [{ token: i1.LanguageService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
387
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DrawPopupComponent, isStandalone: true, selector: "igo-draw-popup-component", inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, ngImport: i0, template: "<h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n</h2>\n\n<ng-container *ngIf=\"labelFlag !== labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div>\n <p>\n {{ 'igo.geo.draw.builtInInstructions' | translate }}\n </p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\">\n <mat-radio-button\n *ngFor=\"let option of arrayBuiltInType\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.value)\"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"\n onLabelTypeChange($any($event.source.value), $event.checked)\n \"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\" class=\"fields-container\">\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>(Latitude, Longitude)</mat-label>\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{ currentCoordinates }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"coordinatesMeasureUnit\"\n (selectionChange)=\"onChangeCoordinateUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{ unit }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ lengthLabelT }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ lengthLabelT }}\"\n value=\"{{ currentLength }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"lengthMeasureUnit\"\n (selectionChange)=\"onChangeLengthUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{ getLengthUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ 'igo.geo.draw.labelType.Area' | translate }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{ currentArea }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"areaMeasureUnit\"\n (selectionChange)=\"onChangeAreaUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{ getAreaUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"labelFlag === labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <p>\n {{ 'igo.geo.draw.dialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"input\">\n <mat-label>{{ 'igo.geo.draw.dialogTitle' | translate }}</mat-label>\n <input\n #input\n matInput\n (select)=\"(true)\"\n (input)=\"getLabelLength($any($event.target).value)\"\n placeholder=\"{{ 'igo.geo.draw.dialogTitle' | translate }}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial\n />\n </mat-form-field>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n", styles: [":host .mat-mdc-radio-button~.mat-radio-button{margin-left:12px}:host .readOnly-Input{width:200px!important}:host .button-toggle-container{margin-bottom:12px}:host .unit-field{margin-left:12px}:host .unit-field ::ng-deep .mat-mdc-form-field-infix{width:fit-content}:host .unit-field ::ng-deep .mat-mdc-select-min-line{padding-right:24px}:host .mat-mdc-form-field{position:sticky!important}:host .coordinatesInputView{top:5em!important}:host .mat-mdc-dialog-actions{display:flex!important;justify-content:flex-end}:host .input{width:auto!important}:host .mat-button-toggle-group,:host .mat-button-toggle{width:100%}:host mat-checkbox{margin-right:10px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
387
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DrawPopupComponent, isStandalone: true, selector: "igo-draw-popup-component", inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, ngImport: i0, template: "<h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n</h2>\n\n<ng-container *ngIf=\"labelFlag !== labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div>\n <p>\n {{ 'igo.geo.draw.builtInInstructions' | translate }}\n </p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\">\n <mat-radio-button\n *ngFor=\"let option of arrayBuiltInType\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.value)\"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"\n onLabelTypeChange($any($event.source.value), $event.checked)\n \"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\" class=\"fields-container\">\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>(Latitude, Longitude)</mat-label>\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{ currentCoordinates }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"coordinatesMeasureUnit\"\n (selectionChange)=\"onChangeCoordinateUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{ unit }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ lengthLabelT }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ lengthLabelT }}\"\n value=\"{{ currentLength }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"lengthMeasureUnit\"\n (selectionChange)=\"onChangeLengthUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{ getLengthUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ 'igo.geo.draw.labelType.Area' | translate }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{ currentArea }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"areaMeasureUnit\"\n (selectionChange)=\"onChangeAreaUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{ getAreaUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"labelFlag === labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <p>\n {{ 'igo.geo.draw.dialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"input\">\n <mat-label>{{ 'igo.geo.draw.dialogTitle' | translate }}</mat-label>\n <input\n #input\n matInput\n (select)=\"(true)\"\n (input)=\"getLabelLength($any($event.target).value)\"\n placeholder=\"{{ 'igo.geo.draw.dialogTitle' | translate }}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial\n />\n </mat-form-field>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n", styles: [":host .mat-mdc-radio-button~.mat-radio-button{margin-left:12px}:host .readOnly-Input{width:200px!important}:host .button-toggle-container{margin-bottom:12px}:host .unit-field{margin-left:12px}:host .unit-field ::ng-deep .mat-mdc-form-field-infix{width:fit-content}:host .unit-field ::ng-deep .mat-mdc-select-min-line{padding-right:24px}:host .mat-mdc-form-field{position:sticky!important}:host .coordinatesInputView{top:5em!important}:host .mat-mdc-dialog-actions{display:flex!important;justify-content:flex-end}:host .input{width:auto!important}:host .mat-button-toggle-group,:host .mat-button-toggle{width:100%}:host mat-checkbox{margin-right:10px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
388
388
  }
389
389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DrawPopupComponent, decorators: [{
390
390
  type: Component,
@@ -402,7 +402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
402
402
  MatOptionModule,
403
403
  MatDialogActions,
404
404
  MatButtonModule,
405
- TranslateModule
405
+ IgoLanguageModule
406
406
  ], template: "<h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n</h2>\n\n<ng-container *ngIf=\"labelFlag !== labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div>\n <p>\n {{ 'igo.geo.draw.builtInInstructions' | translate }}\n </p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\">\n <mat-radio-button\n *ngFor=\"let option of arrayBuiltInType\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.value)\"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"\n onLabelTypeChange($any($event.source.value), $event.checked)\n \"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\" class=\"fields-container\">\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>(Latitude, Longitude)</mat-label>\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{ currentCoordinates }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"coordinatesMeasureUnit\"\n (selectionChange)=\"onChangeCoordinateUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{ unit }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ lengthLabelT }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ lengthLabelT }}\"\n value=\"{{ currentLength }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"lengthMeasureUnit\"\n (selectionChange)=\"onChangeLengthUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{ getLengthUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ 'igo.geo.draw.labelType.Area' | translate }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{ currentArea }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"areaMeasureUnit\"\n (selectionChange)=\"onChangeAreaUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{ getAreaUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"labelFlag === labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <p>\n {{ 'igo.geo.draw.dialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"input\">\n <mat-label>{{ 'igo.geo.draw.dialogTitle' | translate }}</mat-label>\n <input\n #input\n matInput\n (select)=\"(true)\"\n (input)=\"getLabelLength($any($event.target).value)\"\n placeholder=\"{{ 'igo.geo.draw.dialogTitle' | translate }}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial\n />\n </mat-form-field>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n", styles: [":host .mat-mdc-radio-button~.mat-radio-button{margin-left:12px}:host .readOnly-Input{width:200px!important}:host .button-toggle-container{margin-bottom:12px}:host .unit-field{margin-left:12px}:host .unit-field ::ng-deep .mat-mdc-form-field-infix{width:fit-content}:host .unit-field ::ng-deep .mat-mdc-select-min-line{padding-right:24px}:host .mat-mdc-form-field{position:sticky!important}:host .coordinatesInputView{top:5em!important}:host .mat-mdc-dialog-actions{display:flex!important;justify-content:flex-end}:host .input{width:auto!important}:host .mat-button-toggle-group,:host .mat-button-toggle{width:100%}:host mat-checkbox{margin-right:10px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
407
407
  }], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
408
408
  type: Inject,
@@ -418,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
418
418
  }], areaMeasureUnit: [{
419
419
  type: Input
420
420
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLE1BQU0sTUFBTSxnQkFB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QixxQkFBcUIsc2hCQUNyQixjQUFjLHVpQkFDZCxLQUFLLGtIQUNMLGlCQUFpQiw2V0FDakIsa0JBQWtCLDBTQUNsQixjQUFjLDBXQUNkLGVBQWUsbXJCQUNmLGVBQWUsK0JBQ2YsZ0JBQWdCLDJIQUNoQixlQUFlLDROQUNmLGVBQWU7OzJGQUdOLGtCQUFrQjtrQkF0QjlCLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsS0FBSzt3QkFDTCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7cUJBQ2hCOzswQkFnQ0UsTUFBTTsyQkFBQyxlQUFlO3lDQTdCaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIE1BVF9ESUFMT0dfREFUQSxcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ29udGVudCxcbiAgTWF0RGlhbG9nUmVmLFxuICBNYXREaWFsb2dUaXRsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgeyBnZXRMZW5ndGggfSBmcm9tICdvbC9zcGhlcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgSWdvTWFwLCByb3VuZENvb3JkVG8gfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkJztcbmltcG9ydCB7XG4gIE1lYXN1cmVBcmVhVW5pdCxcbiAgTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uLFxuICBNZWFzdXJlTGVuZ3RoVW5pdCxcbiAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25cbn0gZnJvbSAnLi4vLi4vbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5lbnVtJztcbmltcG9ydCB7XG4gIG1lYXN1cmVPbEdlb21ldHJ5QXJlYSxcbiAgbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgsXG4gIG1ldGVyc1RvVW5pdCxcbiAgc3F1YXJlTWV0ZXJzVG9Vbml0XG59IGZyb20gJy4uLy4uL21lYXN1cmUvc2hhcmVkL21lYXN1cmUudXRpbHMnO1xuaW1wb3J0IHsgQ29vcmRpbmF0ZXNVbml0LCBHZW9tZXRyeVR5cGUsIExhYmVsVHlwZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LmVudW0nO1xuaW1wb3J0IHsgRER0b0RNUyB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRyYXctcG9wdXAtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXctcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcmF3LXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREaWFsb2dUaXRsZSxcbiAgICBOZ0lmLFxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdQb3B1cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpcm1GbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsRmxhZzogTGFiZWxUeXBlIHwgW0xhYmVsVHlwZSwgTGFiZWxUeXBlXSA9IExhYmVsVHlwZS5DdXN0b207XG4gIEBJbnB1dCgpIGNvb3JkaW5hdGVzTWVhc3VyZVVuaXQ6IENvb3JkaW5hdGVzVW5pdDtcbiAgQElucHV0KCkgbGVuZ3RoTWVhc3VyZVVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0O1xuICBASW5wdXQoKSBhcmVhTWVhc3VyZVVuaXQ6IE1lYXN1cmVBcmVhVW5pdDtcblxuICBwdWJsaWMgZ2VvbWV0cnlUeXBlID0gR2VvbWV0cnlUeXBlO1xuICBwdWJsaWMgbGFiZWxUeXBlID0gTGFiZWxUeXBlO1xuICBwdWJsaWMgYXJyYXlCdWlsdEluVHlwZTogYW55W10gPSBbXTtcblxuICBwdWJsaWMgY3VycmVudExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50Q29vcmRpbmF0ZXM6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRBcmVhOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50TGVuZ3RoOiBzdHJpbmc7XG5cbiAgcHVibGljIG9sR2VvbWV0cnlUeXBlOiBHZW9tZXRyeVR5cGUgPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyBsZW5ndGhJbk1ldGVyczogc3RyaW5nO1xuICBwdWJsaWMgYXJlYUluTWV0ZXJzU3F1YXJlOiBzdHJpbmc7XG4gIHB1YmxpYyBjb29yZGluYXRlc0luREQ6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRDb29yZGluYXRlc1VuaXQ6IHN0cmluZztcblxuICBwcml2YXRlIGxvbmdsYXRERDogW251bWJlciwgbnVtYmVyXTtcbiAgcHJpdmF0ZSBsYWJlbExlbmd0aDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwb2x5Z29uQ2hlY2sgPSAwOyAvLyBDb3VudCBmb3IgcG9seWdvbiBsYWJlbCB0eXBlcyBjaGVja2JveGVzXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RHJhd1BvcHVwQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHsgb2xHZW9tZXRyeTogYW55OyBtYXA6IElnb01hcCB9XG4gICkge1xuICAgIHRoaXMuY3VycmVudExhYmVsID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdkcmF3Jyk7XG4gICAgdGhpcy5sYWJlbExlbmd0aCA9IHRoaXMuY3VycmVudExhYmVsID8gdGhpcy5jdXJyZW50TGFiZWwubGVuZ3RoIDogMDtcbiAgICBsZXQgb2xHZW9tZXRyeTtcblxuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLmRhdGEubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5kYXRhLm9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbEZlYXR1cmUpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ3JhZCcpKSB7XG4gICAgICAgIGNvbnN0IGxvbmdpdHVkZUxhdGl0dWRlID0gW1xuICAgICAgICAgIHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnbG9uZ2l0dWRlJyksXG4gICAgICAgICAgdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsYXRpdHVkZScpXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSBHZW9tZXRyeVR5cGUuQ2lyY2xlO1xuICAgICAgICBvbEdlb21ldHJ5ID0gbmV3IENpcmNsZShcbiAgICAgICAgICBsb25naXR1ZGVMYXRpdHVkZSxcbiAgICAgICAgICB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ3JhZCcpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCk7XG4gICAgICAgIG9sR2VvbWV0cnkgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2dlb21ldHJ5Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXRUeXBlKCk7XG4gICAgICBvbEdlb21ldHJ5ID0gdGhpcy5kYXRhLm9sR2VvbWV0cnk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvaW50IHx8XG4gICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5kYXRhLm9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbEZlYXR1cmUpIHtcbiAgICAgICAgbGV0IGxvbmdpdHVkZSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnbG9uZ2l0dWRlJyk7XG4gICAgICAgIGxldCBsYXRpdHVkZSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnbGF0aXR1ZGUnKTtcbiAgICAgICAgdGhpcy5sb25nbGF0REQgPSByb3VuZENvb3JkVG8oW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCA1KTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlc0luREQgPSAnKCcgKyBsYXRpdHVkZSArICcsICcgKyBsb25naXR1ZGUgKyAnKSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcG9pbnQ0MzI2ID0gdHJhbnNmb3JtKFxuICAgICAgICAgIHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldEZsYXRDb29yZGluYXRlcygpLFxuICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgJ0VQU0c6NDMyNidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb25nbGF0REQgPSByb3VuZENvb3JkVG8oW3BvaW50NDMyNlswXSwgcG9pbnQ0MzI2WzFdXSwgNSk7XG4gICAgICAgIHRoaXMuY29vcmRpbmF0ZXNJbkREID1cbiAgICAgICAgICAnKCcgKyB0aGlzLmxvbmdsYXRERFsxXSArICcsICcgKyB0aGlzLmxvbmdsYXRERFswXSArICcpJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudENvb3JkaW5hdGVzID0gdGhpcy5jb29yZGluYXRlc0luREQ7XG4gICAgfVxuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuTGluZVN0cmluZykge1xuICAgICAgdGhpcy5sZW5ndGhJbk1ldGVycyA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKFxuICAgICAgICBvbEdlb21ldHJ5LFxuICAgICAgICBwcm9qZWN0aW9uLmdldENvZGUoKVxuICAgICAgKS50b0ZpeGVkKDIpO1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uKSB7XG4gICAgICB0aGlzLmxlbmd0aEluTWV0ZXJzID0gbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgoXG4gICAgICAgIG9sR2VvbWV0cnksXG4gICAgICAgIHByb2plY3Rpb24uZ2V0Q29kZSgpXG4gICAgICApLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmUgPSBtZWFzdXJlT2xHZW9tZXRyeUFyZWEoXG4gICAgICAgIG9sR2VvbWV0cnksXG4gICAgICAgIHByb2plY3Rpb24uZ2V0Q29kZSgpXG4gICAgICApLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRBcmVhID0gdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKSB7XG4gICAgICBsZXQgY2lyY3VsYXJQb2x5Z29uID0gZnJvbUNpcmNsZShvbEdlb21ldHJ5LCAxMDAwMCk7XG4gICAgICBjb25zdCByYWRpdXMgPSB0aGlzLmdldFJhZGl1cyhjaXJjdWxhclBvbHlnb24pO1xuICAgICAgdGhpcy5sZW5ndGhJbk1ldGVycyA9IHJhZGl1cy50b0ZpeGVkKDIpO1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlID0gbWVhc3VyZU9sR2VvbWV0cnlBcmVhKFxuICAgICAgICBjaXJjdWxhclBvbHlnb24sXG4gICAgICAgIHByb2plY3Rpb24uZ2V0Q29kZSgpXG4gICAgICApLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRBcmVhID0gdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuQ29vcmRpbmF0ZXMsIHRydWUpO1xuICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5QcmVkZWZpbmVkKTtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLkxlbmd0aCwgdHJ1ZSk7XG4gICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuQXJlYSkge1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuUHJlZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5BcmVhLCB0cnVlKTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpPy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuTGVuZ3RoLCB0cnVlKTtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLkFyZWEsIHRydWUpO1xuICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0JylbMF07XG4gICAgICB0aGlzLmFyZWFNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0JylbMV07XG4gICAgfVxuICAgIHRoaXMuYnVpbGRBcnJheVR5cGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIVE1MIEludGVyYWN0aW9uc1xuICAgKi9cblxuICBjYW5jZWxEcmF3aW5nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBjb25maXJtKGlucHV0Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maXJtRmxhZyA9IHRydWU7XG4gICAgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ3VzdG9tKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgIGxhYmVsOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyxcbiAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMuY29vcmRpbmF0ZXNNZWFzdXJlVW5pdFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgaWYgKHRoaXMucG9seWdvbkNoZWNrID09PSAyKSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gW0xhYmVsVHlwZS5MZW5ndGgsIExhYmVsVHlwZS5BcmVhXTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgJ1A6ICcgK1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvbltNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnNdICtcbiAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLkEnKSArXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcmVhICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVyc10sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IFt0aGlzLmxlbmd0aE1lYXN1cmVVbml0LCB0aGlzLmFyZWFNZWFzdXJlVW5pdF1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkxlbmd0aFxuICAgICAgICAgID8gdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICAgICAnUDogJyArXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXRdLFxuICAgICAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5sZW5ndGhNZWFzdXJlVW5pdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgbGFiZWw6XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXJlYSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bdGhpcy5hcmVhTWVhc3VyZVVuaXRdLFxuICAgICAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5MZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICdSOiAnICtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExlbmd0aCArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bdGhpcy5sZW5ndGhNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMubGVuZ3RoTWVhc3VyZVVuaXRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExlbmd0aCArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bdGhpcy5sZW5ndGhNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMubGVuZ3RoTWVhc3VyZVVuaXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgbGFiZWw6XG4gICAgICAgICAgdGhpcy5jdXJyZW50QXJlYSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bdGhpcy5hcmVhTWVhc3VyZVVuaXRdLFxuICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uTGFiZWxUeXBlQ2hhbmdlKGxhYmVsVHlwZTogTGFiZWxUeXBlLCBjaGVja2VkPzogYm9vbGVhbikge1xuICAgIGlmIChcbiAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWQgJiZcbiAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLkN1c3RvbSAmJlxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb25cbiAgICApIHtcbiAgICAgIHRoaXMuYXJyYXlCdWlsdEluVHlwZS5maW5kKCh0eXBlKSA9PiB0eXBlLnZhbHVlID09PSBsYWJlbFR5cGUpXG4gICAgICAgID8gKHRoaXMuYXJyYXlCdWlsdEluVHlwZS5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IHR5cGUudmFsdWUgPT09IGxhYmVsVHlwZVxuICAgICAgICAgICkuY2hlY2tlZCA9IGNoZWNrZWQpXG4gICAgICAgIDogKHRoaXMubGFiZWxGbGFnID0gdW5kZWZpbmVkKTtcbiAgICAgIGNoZWNrZWRcbiAgICAgICAgPyAodGhpcy5sYWJlbEZsYWcgPSBsYWJlbFR5cGUpXG4gICAgICAgIDogKHRoaXMubGFiZWxGbGFnID0gdGhpcy5hcnJheUJ1aWx0SW5UeXBlLmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gdHlwZS5jaGVja2VkXG4gICAgICAgICAgKT8udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhYmVsRmxhZyA9IGxhYmVsVHlwZTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2ludCkge1xuICAgICAgICB0aGlzLmxhYmVsRmxhZyA9IExhYmVsVHlwZS5Db29yZGluYXRlcztcbiAgICAgICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPSB0aGlzLmNvb3JkaW5hdGVzSW5ERDtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gQ29vcmRpbmF0ZXNVbml0LkRlY2ltYWxEZWdyZWU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gTGFiZWxUeXBlLkxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxhYmVsVHlwZSA9PT0gTGFiZWxUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuY3VycmVudEFyZWEgPSB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcbiAgICB9IGVsc2UgaWYgKGxhYmVsVHlwZSA9PT0gTGFiZWxUeXBlLkxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIHRoaXMubGVuZ3RoTWVhc3VyZVVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnM7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKSB7XG4gICAgICB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuY29vcmRpbmF0ZXNJbkREO1xuICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gQ29vcmRpbmF0ZXNVbml0LkRlY2ltYWxEZWdyZWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWx0eXBlcyA9IFt0aGlzLmxhYmVsVHlwZS5MZW5ndGgsIHRoaXMubGFiZWxUeXBlLkFyZWFdO1xuICAgIGlmIChcbiAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uICYmXG4gICAgICBsYWJlbHR5cGVzLmluY2x1ZGVzKGxhYmVsVHlwZSlcbiAgICApIHtcbiAgICAgIGNoZWNrZWQgPyAodGhpcy5wb2x5Z29uQ2hlY2sgKz0gMSkgOiAodGhpcy5wb2x5Z29uQ2hlY2sgLT0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9seWdvbkNoZWNrID0gMDtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZUxlbmd0aFVuaXQobGVuZ3RoVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gbGVuZ3RoVW5pdDtcbiAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSBtZXRlcnNUb1VuaXQoXG4gICAgICBOdW1iZXIodGhpcy5sZW5ndGhJbk1ldGVycyksXG4gICAgICBsZW5ndGhVbml0XG4gICAgKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25DaGFuZ2VBcmVhVW5pdChhcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0KSB7XG4gICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBhcmVhVW5pdDtcbiAgICB0aGlzLmN1cnJlbnRBcmVhID0gc3F1YXJlTWV0ZXJzVG9Vbml0KFxuICAgICAgTnVtYmVyKHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlKSxcbiAgICAgIGFyZWFVbml0XG4gICAgKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25DaGFuZ2VDb29yZGluYXRlVW5pdChjb29yZGluYXRlc1VuaXQ6IENvb3JkaW5hdGVzVW5pdCkge1xuICAgIHRoaXMuY29vcmRpbmF0ZXNNZWFzdXJlVW5pdCA9IGNvb3JkaW5hdGVzVW5pdDtcbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBERHRvRE1TKHRoaXMubG9uZ2xhdERELCBjb29yZGluYXRlc1VuaXQpO1xuICAgIHRoaXMuY3VycmVudENvb3JkaW5hdGVzID1cbiAgICAgICcoJyArIGNvb3JkaW5hdGVzWzFdICsgJywgJyArIGNvb3JkaW5hdGVzWzBdICsgJyknO1xuICB9XG5cbiAgYnVpbGRBcnJheVR5cGUoKSB7XG4gICAgZm9yIChjb25zdCBsYWJlbFR5cGUgb2YgT2JqZWN0LnZhbHVlcyhMYWJlbFR5cGUpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLkN1c3RvbSAmJlxuICAgICAgICBsYWJlbFR5cGUgIT09IExhYmVsVHlwZS5QcmVkZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5hcnJheUJ1aWx0SW5UeXBlLnB1c2goe1xuICAgICAgICAgIHZhbHVlOiBsYWJlbFR5cGUsXG4gICAgICAgICAgY2hlY2tlZDpcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0T3B0aW9ucyhsYWJlbFR5cGUpIHx8XG4gICAgICAgICAgICB0aGlzLmxhYmVsRmxhZyA9PT0gbGFiZWxUeXBlIHx8XG4gICAgICAgICAgICAodGhpcy5wb2x5Z29uQ2hlY2sgPT09IDIgJiYgbGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5vTGFiZWxCdXR0b24oKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5QcmVkZWZpbmVkIHx8XG4gICAgICAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20gJiYgdGhpcy5sYWJlbExlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kcmF3Lm5vTGFiZWwnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ09LJztcbiAgfVxuXG4gIGdldCBjdXN0b21PclByZWRlZmluZWQoKSB7XG4gICAgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ3VzdG9tKSB7XG4gICAgICByZXR1cm4gTGFiZWxUeXBlLkN1c3RvbTtcbiAgICB9XG4gICAgcmV0dXJuIExhYmVsVHlwZS5QcmVkZWZpbmVkO1xuICB9XG5cbiAgb3B0aW9uQXZhaWxhYmxlKGN1cnJlbnRPcHRpb246IExhYmVsVHlwZSkge1xuICAgIHN3aXRjaCAodGhpcy5vbEdlb21ldHJ5VHlwZSkge1xuICAgICAgY2FzZSBHZW9tZXRyeVR5cGUuUG9pbnQ6XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nOlxuICAgICAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gTGFiZWxUeXBlLkxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgR2VvbWV0cnlUeXBlLlBvbHlnb246XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFsbExlbmd0aFVuaXRzKCk6IE1lYXN1cmVMZW5ndGhVbml0W10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKE1lYXN1cmVMZW5ndGhVbml0KTtcbiAgfVxuXG4gIGdldExlbmd0aFVuaXRFbnVtKGxlbmd0aFVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0KSB7XG4gICAgcmV0dXJuIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW2xlbmd0aFVuaXRdO1xuICB9XG5cbiAgZ2V0IGFsbEFyZWFVbml0cygpOiBNZWFzdXJlQXJlYVVuaXRbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVhc3VyZUFyZWFVbml0KTtcbiAgfVxuXG4gIGdldCBhbGxDb29yZGluYXRlc1VuaXRzKCk6IENvb3JkaW5hdGVzVW5pdFtdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhDb29yZGluYXRlc1VuaXQpO1xuICB9XG5cbiAgZ2V0QXJlYVVuaXRFbnVtKGFyZWFVbml0OiBNZWFzdXJlQXJlYVVuaXQpIHtcbiAgICByZXR1cm4gTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uW2FyZWFVbml0XTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmFkaXVzKG9sR2VvbWV0cnkpOiBudW1iZXIge1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aChvbEdlb21ldHJ5KTtcbiAgICByZXR1cm4gTnVtYmVyKGxlbmd0aCAvICgyICogTWF0aC5QSSkpO1xuICB9XG5cbiAgZ2V0IGxlbmd0aExhYmVsVCgpIHtcbiAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5nZW8ubWVhc3VyZS5wZXJpbWV0ZXInXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5zZWFyY2guY29vcmRpbmF0ZXMucmFkaXVzJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuTGVuZ3RoJ1xuICAgICk7XG4gIH1cblxuICBnZXRMYWJlbExlbmd0aChldmVudD8pIHtcbiAgICB0aGlzLmxhYmVsTGVuZ3RoID0gZXZlbnQubGVuZ3RoO1xuICB9XG5cbiAgc2VsZWN0T3B0aW9ucyhvcHRpb24pIHtcbiAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvaW50KSB7XG4gICAgICByZXR1cm4gb3B0aW9uID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXM7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuTGluZVN0cmluZykge1xuICAgICAgcmV0dXJuIG9wdGlvbiA9PT0gTGFiZWxUeXBlLkxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBnZXRQcm9wZXJMZW5ndGhMYWJlbChvcHRpb24pIHtcbiAgICBpZiAob3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLm1lYXN1cmUucGVyaW1ldGVyJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLnNlYXJjaC5jb29yZGluYXRlcy5yYWRpdXMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLkxlbmd0aCdcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLicgKyBvcHRpb25cbiAgICApO1xuICB9XG59XG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAge3sgJ2lnby5nZW8uZHJhdy5wb3B1cFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuPC9oMj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsRmxhZyAhPT0gbGFiZWxUeXBlLkN1c3RvbVwiPlxuICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImdlb21ldHJ5LXR5cGUtdG9nZ2xlXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgKGNoYW5nZSk9XCJvbkxhYmVsVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgW3ZhbHVlXT1cImN1c3RvbU9yUHJlZGVmaW5lZFwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibGFiZWxUeXBlLkN1c3RvbVwiPlxuICAgICAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLmN1c3RvbScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuUHJlZGVmaW5lZFwiPlxuICAgICAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLnByZWRlZmluZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8cD5cbiAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5idWlsdEluSW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgICAgPG1hdC1yYWRpby1ncm91cCAqbmdJZj1cIm9sR2VvbWV0cnlUeXBlICE9PSAnUG9seWdvbidcIj5cbiAgICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFycmF5QnVpbHRJblR5cGVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25BdmFpbGFibGUob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkxhYmVsVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24uY2hlY2tlZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRQcm9wZXJMZW5ndGhMYWJlbChvcHRpb24udmFsdWUpIH19XG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9sR2VvbWV0cnlUeXBlID09PSAnUG9seWdvbidcIj5cbiAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXJyYXlCdWlsdEluVHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbkF2YWlsYWJsZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIlxuICAgICAgICAgICAgb25MYWJlbFR5cGVDaGFuZ2UoJGFueSgkZXZlbnQuc291cmNlLnZhbHVlKSwgJGV2ZW50LmNoZWNrZWQpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24uY2hlY2tlZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRQcm9wZXJMZW5ndGhMYWJlbChvcHRpb24udmFsdWUpIH19XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuQ29vcmRpbmF0ZXNcIiBjbGFzcz1cImZpZWxkcy1jb250YWluZXJcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmVhZE9ubHktSW5wdXRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPihMYXRpdHVkZSwgTG9uZ2l0dWRlKTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIoTGF0aXR1ZGUsIExvbmdpdHVkZSlcIlxuICAgICAgICAgICAgdmFsdWU9XCJ7eyBjdXJyZW50Q29vcmRpbmF0ZXMgfX1cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgIFt2YWx1ZV09XCJjb29yZGluYXRlc01lYXN1cmVVbml0XCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VDb29yZGluYXRlVW5pdCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBhbGxDb29yZGluYXRlc1VuaXRzXCIgW3ZhbHVlXT1cInVuaXRcIj5cbiAgICAgICAgICAgICAge3sgdW5pdCB9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImxhYmVsRmxhZyA9PT0gbGFiZWxUeXBlLkxlbmd0aCB8fCBwb2x5Z29uQ2hlY2sgPT09IDJcIlxuICAgICAgICBjbGFzcz1cImZpZWxkcy1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGVuZ3RoTGFiZWxUIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGxlbmd0aExhYmVsVCB9fVwiXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRMZW5ndGggfX1cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgIFt2YWx1ZV09XCJsZW5ndGhNZWFzdXJlVW5pdFwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hhbmdlTGVuZ3RoVW5pdCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBhbGxMZW5ndGhVbml0c1wiIFt2YWx1ZV09XCJ1bml0XCI+XG4gICAgICAgICAgICAgIHt7IGdldExlbmd0aFVuaXRFbnVtKHVuaXQpIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuQXJlYSB8fCBwb2x5Z29uQ2hlY2sgPT09IDJcIlxuICAgICAgICBjbGFzcz1cImZpZWxkcy1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuQXJlYScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuQXJlYScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdmFsdWU9XCJ7eyBjdXJyZW50QXJlYSB9fVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgW3ZhbHVlXT1cImFyZWFNZWFzdXJlVW5pdFwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hhbmdlQXJlYVVuaXQoJGV2ZW50LnZhbHVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHVuaXQgb2YgYWxsQXJlYVVuaXRzXCIgW3ZhbHVlXT1cInVuaXRcIj5cbiAgICAgICAgICAgICAge3sgZ2V0QXJlYVVuaXRFbnVtKHVuaXQpIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbERyYXdpbmcoKVwiPlxuICAgICAge3sgJ2lnby5nZW8uZHJhdy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY29uZmlybSgpXCI+XG4gICAgICB7eyBub0xhYmVsQnV0dG9uKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsRmxhZyA9PT0gbGFiZWxUeXBlLkN1c3RvbVwiPlxuICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImdlb21ldHJ5LXR5cGUtdG9nZ2xlXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgKGNoYW5nZSk9XCJvbkxhYmVsVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgW3ZhbHVlXT1cImN1c3RvbU9yUHJlZGVmaW5lZFwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibGFiZWxUeXBlLkN1c3RvbVwiPlxuICAgICAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLmN1c3RvbScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuUHJlZGVmaW5lZFwiPlxuICAgICAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLnByZWRlZmluZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIDxwPlxuICAgICAge3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dJbnN0cnVjdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXRcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dUaXRsZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgKHNlbGVjdCk9XCIodHJ1ZSlcIlxuICAgICAgICAoaW5wdXQpPVwiZ2V0TGFiZWxMZW5ndGgoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLmRyYXcuZGlhbG9nVGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdmFsdWU9XCJ7eyBjdXJyZW50TGFiZWwgfX1cIlxuICAgICAgICBjZGtGb2N1c0luaXRpYWxcbiAgICAgIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsRHJhd2luZygpXCI+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtKGlucHV0LnZhbHVlKVwiPlxuICAgICAge3sgbm9MYWJlbEJ1dHRvbigpIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8s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Q2hCLHFCQUFxQixzaEJBQ3JCLGNBQWMsdWlCQUNkLEtBQUssa0hBQ0wsaUJBQWlCLDZXQUNqQixrQkFBa0IsMFNBQ2xCLGNBQWMsMFdBQ2QsZUFBZSxtckJBQ2YsZUFBZSwrQkFDZixnQkFBZ0IsMkhBQ2hCLGVBQWUsNE5BQ2YsaUJBQWlCOzsyRkFHUixrQkFBa0I7a0JBdEI5QixTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLEtBQUs7d0JBQ0wsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixpQkFBaUI7cUJBQ2xCOzswQkFnQ0UsTUFBTTsyQkFBQyxlQUFlO3lDQTdCaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIE1BVF9ESUFMT0dfREFUQSxcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ29udGVudCxcbiAgTWF0RGlhbG9nUmVmLFxuICBNYXREaWFsb2dUaXRsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IENpcmNsZSBmcm9tICdvbC9nZW9tL0NpcmNsZSc7XG5pbXBvcnQgeyBmcm9tQ2lyY2xlIH0gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgZ2V0TGVuZ3RoIH0gZnJvbSAnb2wvc3BoZXJlJztcblxuaW1wb3J0IHsgSWdvTWFwLCByb3VuZENvb3JkVG8gfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkJztcbmltcG9ydCB7XG4gIE1lYXN1cmVBcmVhVW5pdCxcbiAgTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uLFxuICBNZWFzdXJlTGVuZ3RoVW5pdCxcbiAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25cbn0gZnJvbSAnLi4vLi4vbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5lbnVtJztcbmltcG9ydCB7XG4gIG1lYXN1cmVPbEdlb21ldHJ5QXJlYSxcbiAgbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgsXG4gIG1ldGVyc1RvVW5pdCxcbiAgc3F1YXJlTWV0ZXJzVG9Vbml0XG59IGZyb20gJy4uLy4uL21lYXN1cmUvc2hhcmVkL21lYXN1cmUudXRpbHMnO1xuaW1wb3J0IHsgQ29vcmRpbmF0ZXNVbml0LCBHZW9tZXRyeVR5cGUsIExhYmVsVHlwZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LmVudW0nO1xuaW1wb3J0IHsgRER0b0RNUyB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRyYXctcG9wdXAtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXctcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcmF3LXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREaWFsb2dUaXRsZSxcbiAgICBOZ0lmLFxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd1BvcHVwQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29uZmlybUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWxGbGFnOiBMYWJlbFR5cGUgfCBbTGFiZWxUeXBlLCBMYWJlbFR5cGVdID0gTGFiZWxUeXBlLkN1c3RvbTtcbiAgQElucHV0KCkgY29vcmRpbmF0ZXNNZWFzdXJlVW5pdDogQ29vcmRpbmF0ZXNVbml0O1xuICBASW5wdXQoKSBsZW5ndGhNZWFzdXJlVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQ7XG4gIEBJbnB1dCgpIGFyZWFNZWFzdXJlVW5pdDogTWVhc3VyZUFyZWFVbml0O1xuXG4gIHB1YmxpYyBnZW9tZXRyeVR5cGUgPSBHZW9tZXRyeVR5cGU7XG4gIHB1YmxpYyBsYWJlbFR5cGUgPSBMYWJlbFR5cGU7XG4gIHB1YmxpYyBhcnJheUJ1aWx0SW5UeXBlOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjdXJyZW50TGFiZWw6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRDb29yZGluYXRlczogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudEFyZWE6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRMZW5ndGg6IHN0cmluZztcblxuICBwdWJsaWMgb2xHZW9tZXRyeVR5cGU6IEdlb21ldHJ5VHlwZSA9IHVuZGVmaW5lZDtcbiAgcHVibGljIGxlbmd0aEluTWV0ZXJzOiBzdHJpbmc7XG4gIHB1YmxpYyBhcmVhSW5NZXRlcnNTcXVhcmU6IHN0cmluZztcbiAgcHVibGljIGNvb3JkaW5hdGVzSW5ERDogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudENvb3JkaW5hdGVzVW5pdDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbG9uZ2xhdEREOiBbbnVtYmVyLCBudW1iZXJdO1xuICBwcml2YXRlIGxhYmVsTGVuZ3RoOiBudW1iZXI7XG5cbiAgcHVibGljIHBvbHlnb25DaGVjayA9IDA7IC8vIENvdW50IGZvciBwb2x5Z29uIGxhYmVsIHR5cGVzIGNoZWNrYm94ZXNcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEcmF3UG9wdXBDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogeyBvbEdlb21ldHJ5OiBhbnk7IG1hcDogSWdvTWFwIH1cbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50TGFiZWwgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2RyYXcnKTtcbiAgICB0aGlzLmxhYmVsTGVuZ3RoID0gdGhpcy5jdXJyZW50TGFiZWwgPyB0aGlzLmN1cnJlbnRMYWJlbC5sZW5ndGggOiAwO1xuICAgIGxldCBvbEdlb21ldHJ5O1xuXG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHRoaXMuZGF0YS5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcblxuICAgIGlmICh0aGlzLmRhdGEub2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sRmVhdHVyZSkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgncmFkJykpIHtcbiAgICAgICAgY29uc3QgbG9uZ2l0dWRlTGF0aXR1ZGUgPSBbXG4gICAgICAgICAgdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsb25naXR1ZGUnKSxcbiAgICAgICAgICB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhdGl0dWRlJylcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9IEdlb21ldHJ5VHlwZS5DaXJjbGU7XG4gICAgICAgIG9sR2VvbWV0cnkgPSBuZXcgQ2lyY2xlKFxuICAgICAgICAgIGxvbmdpdHVkZUxhdGl0dWRlLFxuICAgICAgICAgIHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgncmFkJylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKTtcbiAgICAgICAgb2xHZW9tZXRyeSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnZ2VvbWV0cnknKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldFR5cGUoKTtcbiAgICAgIG9sR2VvbWV0cnkgPSB0aGlzLmRhdGEub2xHZW9tZXRyeTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9pbnQgfHxcbiAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGVcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmRhdGEub2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sRmVhdHVyZSkge1xuICAgICAgICBsZXQgbG9uZ2l0dWRlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsb25naXR1ZGUnKTtcbiAgICAgICAgbGV0IGxhdGl0dWRlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsYXRpdHVkZScpO1xuICAgICAgICB0aGlzLmxvbmdsYXRERCA9IHJvdW5kQ29vcmRUbyhbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIDUpO1xuICAgICAgICB0aGlzLmNvb3JkaW5hdGVzSW5ERCA9ICcoJyArIGxhdGl0dWRlICsgJywgJyArIGxvbmdpdHVkZSArICcpJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwb2ludDQzMjYgPSB0cmFuc2Zvcm0oXG4gICAgICAgICAgdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0RmxhdENvb3JkaW5hdGVzKCksXG4gICAgICAgICAgcHJvamVjdGlvbixcbiAgICAgICAgICAnRVBTRzo0MzI2J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvbmdsYXRERCA9IHJvdW5kQ29vcmRUbyhbcG9pbnQ0MzI2WzBdLCBwb2ludDQzMjZbMV1dLCA1KTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlc0luREQgPVxuICAgICAgICAgICcoJyArIHRoaXMubG9uZ2xhdEREWzFdICsgJywgJyArIHRoaXMubG9uZ2xhdEREWzBdICsgJyknO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPSB0aGlzLmNvb3JkaW5hdGVzSW5ERDtcbiAgICB9XG4gICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICB0aGlzLmxlbmd0aEluTWV0ZXJzID0gbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgoXG4gICAgICAgIG9sR2VvbWV0cnksXG4gICAgICAgIHByb2plY3Rpb24uZ2V0Q29kZSgpXG4gICAgICApLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24pIHtcbiAgICAgIHRoaXMubGVuZ3RoSW5NZXRlcnMgPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChcbiAgICAgICAgb2xHZW9tZXRyeSxcbiAgICAgICAgcHJvamVjdGlvbi5nZXRDb2RlKClcbiAgICAgICkudG9GaXhlZCgyKTtcbiAgICAgIHRoaXMuY3VycmVudExlbmd0aCA9IHRoaXMubGVuZ3RoSW5NZXRlcnM7XG4gICAgICB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZSA9IG1lYXN1cmVPbEdlb21ldHJ5QXJlYShcbiAgICAgICAgb2xHZW9tZXRyeSxcbiAgICAgICAgcHJvamVjdGlvbi5nZXRDb2RlKClcbiAgICAgICkudG9GaXhlZCgyKTtcbiAgICAgIHRoaXMuY3VycmVudEFyZWEgPSB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGUpIHtcbiAgICAgIGxldCBjaXJjdWxhclBvbHlnb24gPSBmcm9tQ2lyY2xlKG9sR2VvbWV0cnksIDEwMDAwKTtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IHRoaXMuZ2V0UmFkaXVzKGNpcmN1bGFyUG9seWdvbik7XG4gICAgICB0aGlzLmxlbmd0aEluTWV0ZXJzID0gcmFkaXVzLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmUgPSBtZWFzdXJlT2xHZW9tZXRyeUFyZWEoXG4gICAgICAgIGNpcmN1bGFyUG9seWdvbixcbiAgICAgICAgcHJvamVjdGlvbi5nZXRDb2RlKClcbiAgICAgICkudG9GaXhlZCgyKTtcbiAgICAgIHRoaXMuY3VycmVudEFyZWEgPSB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vbEdlb21ldHJ5LmdldCgnbGFiZWxUeXBlJykgPT09IExhYmVsVHlwZS5Db29yZGluYXRlcykge1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuUHJlZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5Db29yZGluYXRlcywgdHJ1ZSk7XG4gICAgICB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXQgPSBkYXRhLm9sR2VvbWV0cnkuZ2V0KCdtZWFzdXJlVW5pdCcpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5vbEdlb21ldHJ5LmdldCgnbGFiZWxUeXBlJykgPT09IExhYmVsVHlwZS5MZW5ndGgpIHtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuTGVuZ3RoLCB0cnVlKTtcbiAgICAgIHRoaXMubGVuZ3RoTWVhc3VyZVVuaXQgPSBkYXRhLm9sR2VvbWV0cnkuZ2V0KCdtZWFzdXJlVW5pdCcpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5vbEdlb21ldHJ5LmdldCgnbGFiZWxUeXBlJykgPT09IExhYmVsVHlwZS5BcmVhKSB7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5QcmVkZWZpbmVkKTtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLkFyZWEsIHRydWUpO1xuICAgICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBkYXRhLm9sR2VvbWV0cnkuZ2V0KCdtZWFzdXJlVW5pdCcpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5vbEdlb21ldHJ5LmdldCgnbGFiZWxUeXBlJyk/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuUHJlZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5MZW5ndGgsIHRydWUpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuQXJlYSwgdHJ1ZSk7XG4gICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKVswXTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKVsxXTtcbiAgICB9XG4gICAgdGhpcy5idWlsZEFycmF5VHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhUTUwgSW50ZXJhY3Rpb25zXG4gICAqL1xuXG4gIGNhbmNlbERyYXdpbmcoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIGNvbmZpcm0oaW5wdXQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1GbGFnID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20pIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgbGFiZWw6IGlucHV0XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgbGFiZWw6IHRoaXMuY3VycmVudENvb3JkaW5hdGVzLFxuICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uKSB7XG4gICAgICBpZiAodGhpcy5wb2x5Z29uQ2hlY2sgPT09IDIpIHtcbiAgICAgICAgdGhpcy5sYWJlbEZsYWcgPSBbTGFiZWxUeXBlLkxlbmd0aCwgTGFiZWxUeXBlLkFyZWFdO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgbGFiZWw6XG4gICAgICAgICAgICAnUDogJyArXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW01lYXN1cmVMZW5ndGhVbml0Lk1ldGVyc10gK1xuICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuQScpICtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFyZWEgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIE1lYXN1cmVBcmVhVW5pdEFiYnJldmlhdGlvbltNZWFzdXJlQXJlYVVuaXQuU3F1YXJlTWV0ZXJzXSxcbiAgICAgICAgICBtZWFzdXJlVW5pdDogW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXQsIHRoaXMuYXJlYU1lYXN1cmVVbml0XVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuTGVuZ3RoXG4gICAgICAgICAgPyB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgICAgICdQOiAnICtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggK1xuICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bdGhpcy5sZW5ndGhNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmxlbmd0aE1lYXN1cmVVbml0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcmVhICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIE1lYXN1cmVBcmVhVW5pdEFiYnJldmlhdGlvblt0aGlzLmFyZWFNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmFyZWFNZWFzdXJlVW5pdFxuICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgJ1I6ICcgK1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvblt0aGlzLmxlbmd0aE1lYXN1cmVVbml0XSxcbiAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5sZW5ndGhNZWFzdXJlVW5pdFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvblt0aGlzLmxlbmd0aE1lYXN1cmVVbml0XSxcbiAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5sZW5ndGhNZWFzdXJlVW5pdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQXJlYSkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICBsYWJlbDpcbiAgICAgICAgICB0aGlzLmN1cnJlbnRBcmVhICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIE1lYXN1cmVBcmVhVW5pdEFiYnJldmlhdGlvblt0aGlzLmFyZWFNZWFzdXJlVW5pdF0sXG4gICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmFyZWFNZWFzdXJlVW5pdFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25MYWJlbFR5cGVDaGFuZ2UobGFiZWxUeXBlOiBMYWJlbFR5cGUsIGNoZWNrZWQ/OiBib29sZWFuKSB7XG4gICAgaWYgKFxuICAgICAgbGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCAmJlxuICAgICAgbGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuQ3VzdG9tICYmXG4gICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvblxuICAgICkge1xuICAgICAgdGhpcy5hcnJheUJ1aWx0SW5UeXBlLmZpbmQoKHR5cGUpID0+IHR5cGUudmFsdWUgPT09IGxhYmVsVHlwZSlcbiAgICAgICAgPyAodGhpcy5hcnJheUJ1aWx0SW5UeXBlLmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gdHlwZS52YWx1ZSA9PT0gbGFiZWxUeXBlXG4gICAgICAgICAgKS5jaGVja2VkID0gY2hlY2tlZClcbiAgICAgICAgOiAodGhpcy5sYWJlbEZsYWcgPSB1bmRlZmluZWQpO1xuICAgICAgY2hlY2tlZFxuICAgICAgICA/ICh0aGlzLmxhYmVsRmxhZyA9IGxhYmVsVHlwZSlcbiAgICAgICAgOiAodGhpcy5sYWJlbEZsYWcgPSB0aGlzLmFycmF5QnVpbHRJblR5cGUuZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiB0eXBlLmNoZWNrZWRcbiAgICAgICAgICApPy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFiZWxGbGFnID0gbGFiZWxUeXBlO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFR5cGUgPT09IExhYmVsVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvaW50KSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzO1xuICAgICAgICB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuY29vcmRpbmF0ZXNJbkREO1xuICAgICAgICB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXQgPSBDb29yZGluYXRlc1VuaXQuRGVjaW1hbERlZ3JlZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sYWJlbEZsYWcgPSBMYWJlbFR5cGUuTGVuZ3RoO1xuICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuQXJlYSkge1xuICAgICAgdGhpcy5jdXJyZW50QXJlYSA9IHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlO1xuICAgICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBNZWFzdXJlQXJlYVVuaXQuU3F1YXJlTWV0ZXJzO1xuICAgIH0gZWxzZSBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgICB9IGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY3VycmVudENvb3JkaW5hdGVzID0gdGhpcy5jb29yZGluYXRlc0luREQ7XG4gICAgICB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXQgPSBDb29yZGluYXRlc1VuaXQuRGVjaW1hbERlZ3JlZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbHR5cGVzID0gW3RoaXMubGFiZWxUeXBlLkxlbmd0aCwgdGhpcy5sYWJlbFR5cGUuQXJlYV07XG4gICAgaWYgKFxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24gJiZcbiAgICAgIGxhYmVsdHlwZXMuaW5jbHVkZXMobGFiZWxUeXBlKVxuICAgICkge1xuICAgICAgY2hlY2tlZCA/ICh0aGlzLnBvbHlnb25DaGVjayArPSAxKSA6ICh0aGlzLnBvbHlnb25DaGVjayAtPSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb2x5Z29uQ2hlY2sgPSAwO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlTGVuZ3RoVW5pdChsZW5ndGhVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCkge1xuICAgIHRoaXMubGVuZ3RoTWVhc3VyZVVuaXQgPSBsZW5ndGhVbml0O1xuICAgIHRoaXMuY3VycmVudExlbmd0aCA9IG1ldGVyc1RvVW5pdChcbiAgICAgIE51bWJlcih0aGlzLmxlbmd0aEluTWV0ZXJzKSxcbiAgICAgIGxlbmd0aFVuaXRcbiAgICApLnRvRml4ZWQoMik7XG4gIH1cblxuICBvbkNoYW5nZUFyZWFVbml0KGFyZWFVbml0OiBNZWFzdXJlQXJlYVVuaXQpIHtcbiAgICB0aGlzLmFyZWFNZWFzdXJlVW5pdCA9IGFyZWFVbml0O1xuICAgIHRoaXMuY3VycmVudEFyZWEgPSBzcXVhcmVNZXRlcnNUb1VuaXQoXG4gICAgICBOdW1iZXIodGhpcy5hcmVhSW5NZXRlcnNTcXVhcmUpLFxuICAgICAgYXJlYVVuaXRcbiAgICApLnRvRml4ZWQoMik7XG4gIH1cblxuICBvbkNoYW5nZUNvb3JkaW5hdGVVbml0KGNvb3JkaW5hdGVzVW5pdDogQ29vcmRpbmF0ZXNVbml0KSB7XG4gICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gY29vcmRpbmF0ZXNVbml0O1xuICAgIGxldCBjb29yZGluYXRlcyA9IEREdG9ETVModGhpcy5sb25nbGF0REQsIGNvb3JkaW5hdGVzVW5pdCk7XG4gICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPVxuICAgICAgJygnICsgY29vcmRpbmF0ZXNbMV0gKyAnLCAnICsgY29vcmRpbmF0ZXNbMF0gKyAnKSc7XG4gIH1cblxuICBidWlsZEFycmF5VHlwZSgpIHtcbiAgICBmb3IgKGNvbnN0IGxhYmVsVHlwZSBvZiBPYmplY3QudmFsdWVzKExhYmVsVHlwZSkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuQ3VzdG9tICYmXG4gICAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmFycmF5QnVpbHRJblR5cGUucHVzaCh7XG4gICAgICAgICAgdmFsdWU6IGxhYmVsVHlwZSxcbiAgICAgICAgICBjaGVja2VkOlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKGxhYmVsVHlwZSkgfHxcbiAgICAgICAgICAgIHRoaXMubGFiZWxGbGFnID09PSBsYWJlbFR5cGUgfHxcbiAgICAgICAgICAgICh0aGlzLnBvbHlnb25DaGVjayA9PT0gMiAmJiBsYWJlbFR5cGUgIT09IExhYmVsVHlwZS5Db29yZGluYXRlcylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbm9MYWJlbEJ1dHRvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLlByZWRlZmluZWQgfHxcbiAgICAgICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkN1c3RvbSAmJiB0aGlzLmxhYmVsTGVuZ3RoID09PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubm9MYWJlbCcpO1xuICAgIH1cblxuICAgIHJldHVybiAnT0snO1xuICB9XG5cbiAgZ2V0IGN1c3RvbU9yUHJlZGVmaW5lZCgpIHtcbiAgICBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20pIHtcbiAgICAgIHJldHVybiBMYWJlbFR5cGUuQ3VzdG9tO1xuICAgIH1cbiAgICByZXR1cm4gTGFiZWxUeXBlLlByZWRlZmluZWQ7XG4gIH1cblxuICBvcHRpb25BdmFpbGFibGUoY3VycmVudE9wdGlvbjogTGFiZWxUeXBlKSB7XG4gICAgc3dpdGNoICh0aGlzLm9sR2VvbWV0cnlUeXBlKSB7XG4gICAgICBjYXNlIEdlb21ldHJ5VHlwZS5Qb2ludDpcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmc6XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBHZW9tZXRyeVR5cGUuUG9seWdvbjpcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgYWxsTGVuZ3RoVW5pdHMoKTogTWVhc3VyZUxlbmd0aFVuaXRbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVhc3VyZUxlbmd0aFVuaXQpO1xuICB9XG5cbiAgZ2V0TGVuZ3RoVW5pdEVudW0obGVuZ3RoVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICByZXR1cm4gTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bbGVuZ3RoVW5pdF07XG4gIH1cblxuICBnZXQgYWxsQXJlYVVuaXRzKCk6IE1lYXN1cmVBcmVhVW5pdFtdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWFzdXJlQXJlYVVuaXQpO1xuICB9XG5cbiAgZ2V0IGFsbENvb3JkaW5hdGVzVW5pdHMoKTogQ29vcmRpbmF0ZXNVbml0W10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKENvb3JkaW5hdGVzVW5pdCk7XG4gIH1cblxuICBnZXRBcmVhVW5pdEVudW0oYXJlYVVuaXQ6IE1lYXN1cmVBcmVhVW5pdCkge1xuICAgIHJldHVybiBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bYXJlYVVuaXRdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXMob2xHZW9tZXRyeSk6IG51bWJlciB7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoKG9sR2VvbWV0cnkpO1xuICAgIHJldHVybiBOdW1iZXIobGVuZ3RoIC8gKDIgKiBNYXRoLlBJKSk7XG4gIH1cblxuICBnZXQgbGVuZ3RoTGFiZWxUKCkge1xuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcidcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uZ2VvLnNlYXJjaC5jb29yZGluYXRlcy5yYWRpdXMnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5MZW5ndGgnXG4gICAgKTtcbiAgfVxuXG4gIGdldExhYmVsTGVuZ3RoKGV2ZW50Pykge1xuICAgIHRoaXMubGFiZWxMZW5ndGggPSBldmVudC5sZW5ndGg7XG4gIH1cblxuICBzZWxlY3RPcHRpb25zKG9wdGlvbikge1xuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9pbnQpIHtcbiAgICAgIHJldHVybiBvcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcztcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbikge1xuICAgIGlmIChvcHRpb24gPT09IExhYmVsVHlwZS5MZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8ubWVhc3VyZS5wZXJpbWV0ZXInXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uc2VhcmNoLmNvb3JkaW5hdGVzLnJhZGl1cydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuTGVuZ3RoJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuJyArIG9wdGlvblxuICAgICk7XG4gIH1cbn1cbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPlxuICB7eyAnaWdvLmdlby5kcmF3LnBvcHVwVGl0bGUnIHwgdHJhbnNsYXRlIH19XG48L2gyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxGbGFnICE9PSBsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICBbdmFsdWVdPVwiY3VzdG9tT3JQcmVkZWZpbmVkXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuY3VzdG9tJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cImxhYmVsVHlwZS5QcmVkZWZpbmVkXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUucHJlZGVmaW5lZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxwPlxuICAgICAgICB7eyAnaWdvLmdlby5kcmF3LmJ1aWx0SW5JbnN0cnVjdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgICA8bWF0LXJhZGlvLWdyb3VwICpuZ0lmPVwib2xHZW9tZXRyeVR5cGUgIT09ICdQb2x5Z29uJ1wiPlxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXJyYXlCdWlsdEluVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbkF2YWlsYWJsZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5jaGVja2VkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbi52YWx1ZSkgfX1cbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2xHZW9tZXRyeVR5cGUgPT09ICdQb2x5Z29uJ1wiPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhcnJheUJ1aWx0SW5UeXBlXCJcbiAgICAgICAgICBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uQXZhaWxhYmxlKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICBvbkxhYmVsVHlwZUNoYW5nZSgkYW55KCRldmVudC5zb3VyY2UudmFsdWUpLCAkZXZlbnQuY2hlY2tlZClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5jaGVja2VkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbi52YWx1ZSkgfX1cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5Db29yZGluYXRlc1wiIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+KExhdGl0dWRlLCBMb25naXR1ZGUpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIihMYXRpdHVkZSwgTG9uZ2l0dWRlKVwiXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRDb29yZGluYXRlcyB9fVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvb3JkaW5hdGVzTWVhc3VyZVVuaXRcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZUNvb3JkaW5hdGVVbml0KCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGFsbENvb3JkaW5hdGVzVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAgICB7eyB1bml0IH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuTGVuZ3RoIHx8IHBvbHlnb25DaGVjayA9PT0gMlwiXG4gICAgICAgIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJlYWRPbmx5LUlucHV0XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsZW5ndGhMYWJlbFQgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbGVuZ3RoTGFiZWxUIH19XCJcbiAgICAgICAgICAgIHZhbHVlPVwie3sgY3VycmVudExlbmd0aCB9fVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgW3ZhbHVlXT1cImxlbmd0aE1lYXN1cmVVbml0XCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VMZW5ndGhVbml0KCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGFsbExlbmd0aFVuaXRzXCIgW3ZhbHVlXT1cInVuaXRcIj5cbiAgICAgICAgICAgICAge3sgZ2V0TGVuZ3RoVW5pdEVudW0odW5pdCkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5BcmVhIHx8IHBvbHlnb25DaGVjayA9PT0gMlwiXG4gICAgICAgIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJlYWRPbmx5LUlucHV0XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5BcmVhJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5BcmVhJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRBcmVhIH19XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBbdmFsdWVdPVwiYXJlYU1lYXN1cmVVbml0XCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VBcmVhVW5pdCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBhbGxBcmVhVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAgICB7eyBnZXRBcmVhVW5pdEVudW0odW5pdCkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsRHJhd2luZygpXCI+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtKClcIj5cbiAgICAgIHt7IG5vTGFiZWxCdXR0b24oKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICBbdmFsdWVdPVwiY3VzdG9tT3JQcmVkZWZpbmVkXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuY3VzdG9tJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cImxhYmVsVHlwZS5QcmVkZWZpbmVkXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUucHJlZGVmaW5lZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPHA+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmRpYWxvZ0luc3RydWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dFwiPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5kcmF3LmRpYWxvZ1RpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAoc2VsZWN0KT1cIih0cnVlKVwiXG4gICAgICAgIChpbnB1dCk9XCJnZXRMYWJlbExlbmd0aCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dUaXRsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRMYWJlbCB9fVwiXG4gICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWxEcmF3aW5nKClcIj5cbiAgICAgIHt7ICdpZ28uZ2VvLmRyYXcuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm0oaW5wdXQudmFsdWUpXCI+XG4gICAgICB7eyBub0xhYmVsQnV0dG9uKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -2,8 +2,8 @@ import { Component } from '@angular/core';
2
2
  import { MatButtonModule } from '@angular/material/button';
3
3
  import { MatDialogActions, MatDialogClose, MatDialogContent } from '@angular/material/dialog';
4
4
  import { MatIconModule } from '@angular/material/icon';
5
- import { IgoIconComponent, KEYBOARD_ESC_ICON } from '@igo2/common';
6
- import { TranslateModule } from '@ngx-translate/core';
5
+ import { IgoIconComponent, KEYBOARD_ESC_ICON } from '@igo2/common/icon';
6
+ import { IgoLanguageModule } from '@igo2/core/language';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/material/icon";
9
9
  import * as i2 from "@angular/material/button";
@@ -11,7 +11,7 @@ import * as i3 from "@ngx-translate/core";
11
11
  export class DrawShorcutsComponent {
12
12
  svgIcon = KEYBOARD_ESC_ICON;
13
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DrawShorcutsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DrawShorcutsComponent, isStandalone: true, selector: "igo-draw-shorcuts", ngImport: i0, template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_return</mat-icon\n >{{ 'igo.geo.draw.finish' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_backspace</mat-icon\n >{{ 'igo.geo.draw.undo' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <igo-icon [icon]=\"svgIcon\" />\n {{ 'igo.geo.draw.abort' | translate }}\n </span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">space_bar</mat-icon\n >{{ 'igo.geo.draw.move' | translate }}</span\n >\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>\n", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IgoIconComponent, selector: "igo-icon", inputs: ["icon"] }] });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DrawShorcutsComponent, isStandalone: true, selector: "igo-draw-shorcuts", ngImport: i0, template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_return</mat-icon\n >{{ 'igo.geo.draw.finish' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_backspace</mat-icon\n >{{ 'igo.geo.draw.undo' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <igo-icon [icon]=\"svgIcon\" />\n {{ 'igo.geo.draw.abort' | translate }}\n </span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">space_bar</mat-icon\n >{{ 'igo.geo.draw.move' | translate }}</span\n >\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>\n", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IgoIconComponent, selector: "igo-icon", inputs: ["icon"] }] });
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DrawShorcutsComponent, decorators: [{
17
17
  type: Component,
@@ -21,8 +21,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
21
21
  MatDialogActions,
22
22
  MatButtonModule,
23
23
  MatDialogClose,
24
- TranslateModule,
24
+ IgoLanguageModule,
25
25
  IgoIconComponent
26
26
  ], template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_return</mat-icon\n >{{ 'igo.geo.draw.finish' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_backspace</mat-icon\n >{{ 'igo.geo.draw.undo' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <igo-icon [icon]=\"svgIcon\" />\n {{ 'igo.geo.draw.abort' | translate }}\n </span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">space_bar</mat-icon\n >{{ 'igo.geo.draw.move' | translate }}</span\n >\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>\n", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"] }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFXLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFpQnRELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsT0FBTyxHQUFZLGlCQUFpQixDQUFDO3VHQUQxQixxQkFBcUI7MkZBQXJCLHFCQUFxQiw2RUM1QmxDLGk2QkE2QkEsNExEVkksZ0JBQWdCLHdHQUNoQixhQUFhLG9MQUNiLGdCQUFnQiwySEFDaEIsZUFBZSw0TkFDZixjQUFjLG9MQUNkLGVBQWUsNEZBQ2YsZ0JBQWdCOzsyRkFHUCxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ2xvc2UsXG4gIE1hdERpYWxvZ0NvbnRlbnRcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgSWNvblN2ZywgSWdvSWNvbkNvbXBvbmVudCwgS0VZQk9BUkRfRVNDX0lDT04gfSBmcm9tICdAaWdvMi9jb21tb24nO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRyYXctc2hvcmN1dHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctc2hvcmN1dHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dDbG9zZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgSWdvSWNvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdTaG9yY3V0c0NvbXBvbmVudCB7XG4gIHN2Z0ljb246IEljb25TdmcgPSBLRVlCT0FSRF9FU0NfSUNPTjtcbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2hvcnRjdXQtaWNvblwiPmtleWJvYXJkX3JldHVybjwvbWF0LWljb25cbiAgICAgID57eyAnaWdvLmdlby5kcmF3LmZpbmlzaCcgfCB0cmFuc2xhdGUgfX08L3NwYW5cbiAgICA+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwic2hvcnRjdXQgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNob3J0Y3V0LWljb25cIj5rZXlib2FyZF9iYWNrc3BhY2U8L21hdC1pY29uXG4gICAgICA+e3sgJ2lnby5nZW8uZHJhdy51bmRvJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPGlnby1pY29uIFtpY29uXT1cInN2Z0ljb25cIiAvPlxuICAgICAge3sgJ2lnby5nZW8uZHJhdy5hYm9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwic2hvcnRjdXQgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNob3J0Y3V0LWljb25cIj5zcGFjZV9iYXI8L21hdC1pY29uXG4gICAgICA+e3sgJ2lnby5nZW8uZHJhdy5tb3ZlJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJzaG9ydGN1dHMtY2xvc2VcIj5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIGNvbG9yPVwicHJpbWFyeVwiPk9LPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFpQnhELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsT0FBTyxHQUFZLGlCQUFpQixDQUFDO3VHQUQxQixxQkFBcUI7MkZBQXJCLHFCQUFxQiw2RUMvQmxDLGk2QkE2QkEsNExEUEksZ0JBQWdCLHdHQUNoQixhQUFhLG9MQUNiLGdCQUFnQiwySEFDaEIsZUFBZSw0TkFDZixjQUFjLG9MQUNkLGlCQUFpQiw0RkFDakIsZ0JBQWdCOzsyRkFHUCxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ2xvc2UsXG4gIE1hdERpYWxvZ0NvbnRlbnRcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHtcbiAgSWNvblN2ZyxcbiAgSWdvSWNvbkNvbXBvbmVudCxcbiAgS0VZQk9BUkRfRVNDX0lDT05cbn0gZnJvbSAnQGlnbzIvY29tbW9uL2ljb24nO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRyYXctc2hvcmN1dHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctc2hvcmN1dHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dDbG9zZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBJZ29JY29uQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd1Nob3JjdXRzQ29tcG9uZW50IHtcbiAgc3ZnSWNvbjogSWNvblN2ZyA9IEtFWUJPQVJEX0VTQ19JQ09OO1xufVxuIiwiPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPGRpdj5cbiAgICA8c3BhbiBjbGFzcz1cInNob3J0Y3V0IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJzaG9ydGN1dC1pY29uXCI+a2V5Ym9hcmRfcmV0dXJuPC9tYXQtaWNvblxuICAgICAgPnt7ICdpZ28uZ2VvLmRyYXcuZmluaXNoJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2hvcnRjdXQtaWNvblwiPmtleWJvYXJkX2JhY2tzcGFjZTwvbWF0LWljb25cbiAgICAgID57eyAnaWdvLmdlby5kcmF3LnVuZG8nIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8c3BhbiBjbGFzcz1cInNob3J0Y3V0IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICA8aWdvLWljb24gW2ljb25dPVwic3ZnSWNvblwiIC8+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmFib3J0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2hvcnRjdXQtaWNvblwiPnNwYWNlX2JhcjwvbWF0LWljb25cbiAgICAgID57eyAnaWdvLmdlby5kcmF3Lm1vdmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cInNob3J0Y3V0cy1jbG9zZVwiPlxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY29sb3I9XCJwcmltYXJ5XCI+T0s8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19