@provoly/dashboard 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1765) hide show
  1. package/README.md +5 -0
  2. package/admin/admin-routing.module.d.ts +9 -0
  3. package/admin/admin.module.d.ts +87 -0
  4. package/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.d.ts +14 -0
  5. package/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.d.ts +29 -0
  6. package/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.d.ts +12 -0
  7. package/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.d.ts +13 -0
  8. package/admin/components/admin-abac-rules/admin-abac-rules.component.d.ts +18 -0
  9. package/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.d.ts +26 -0
  10. package/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.d.ts +29 -0
  11. package/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.d.ts +28 -0
  12. package/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.d.ts +17 -0
  13. package/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.d.ts +14 -0
  14. package/admin/components/admin-abac-rules/store/abac-rules.actions.d.ts +147 -0
  15. package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +67 -0
  16. package/admin/components/admin-abac-rules/store/abac-rules.model.d.ts +44 -0
  17. package/admin/components/admin-abac-rules/store/abac-rules.reducer.d.ts +10 -0
  18. package/admin/components/admin-abac-rules/store/abac-rules.selectors.d.ts +14 -0
  19. package/admin/components/admin-abac-rules/store/abac-rules.service.d.ts +21 -0
  20. package/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +32 -0
  21. package/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.d.ts +46 -0
  22. package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +41 -0
  23. package/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.d.ts +16 -0
  24. package/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.d.ts +26 -0
  25. package/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.d.ts +5 -0
  26. package/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.d.ts +24 -0
  27. package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +17 -0
  28. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +43 -0
  29. package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +17 -0
  30. package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +27 -0
  31. package/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.d.ts +44 -0
  32. package/admin/components/admin-classes/admin-classes.component.d.ts +25 -0
  33. package/admin/components/admin-classes/store/admin-class.actions.d.ts +143 -0
  34. package/admin/components/admin-classes/store/admin-class.effects.d.ts +81 -0
  35. package/admin/components/admin-classes/store/admin-class.reducer.d.ts +11 -0
  36. package/admin/components/admin-classes/store/admin-class.selectors.d.ts +12 -0
  37. package/admin/components/admin-dataset/admin-dataset.component.d.ts +32 -0
  38. package/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.d.ts +15 -0
  39. package/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.d.ts +5 -0
  40. package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +36 -0
  41. package/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.d.ts +34 -0
  42. package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +59 -0
  43. package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +30 -0
  44. package/admin/components/admin-dataset/store/admin-dataset.reducer.d.ts +6 -0
  45. package/admin/components/admin-dataset/store/admin-dataset.selector.d.ts +5 -0
  46. package/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.d.ts +35 -0
  47. package/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.d.ts +5 -0
  48. package/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.d.ts +24 -0
  49. package/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.d.ts +15 -0
  50. package/admin/components/admin-environment/admin-environment.component.d.ts +20 -0
  51. package/admin/components/admin-environment/store/environment.actions.d.ts +82 -0
  52. package/admin/components/admin-environment/store/environment.effects.d.ts +44 -0
  53. package/admin/components/admin-environment/store/environment.reducer.d.ts +9 -0
  54. package/admin/components/admin-environment/store/environment.selectors.d.ts +8 -0
  55. package/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.d.ts +15 -0
  56. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +30 -0
  57. package/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.d.ts +5 -0
  58. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +28 -0
  59. package/admin/components/admin-fields/admin-fields.component.d.ts +19 -0
  60. package/admin/components/admin-fields/store/admin-fields.model.d.ts +4 -0
  61. package/admin/components/admin-fields/store/fields.actions.d.ts +47 -0
  62. package/admin/components/admin-fields/store/fields.effects.d.ts +36 -0
  63. package/admin/components/admin-fields/store/fields.reducer.d.ts +8 -0
  64. package/admin/components/admin-fields/store/fields.selectors.d.ts +7 -0
  65. package/admin/components/admin-layout/admin-layout.component.d.ts +24 -0
  66. package/admin/components/admin-links/admin-links-new/admin-links-new.component.d.ts +33 -0
  67. package/admin/components/admin-links/admin-links.component.d.ts +19 -0
  68. package/admin/components/admin-links/store/links.actions.d.ts +31 -0
  69. package/admin/components/admin-links/store/links.effects.d.ts +28 -0
  70. package/admin/components/admin-links/store/links.reducer.d.ts +8 -0
  71. package/admin/components/admin-links/store/links.selectors.d.ts +5 -0
  72. package/admin/components/admin-menu/admin-menu.component.d.ts +14 -0
  73. package/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.d.ts +16 -0
  74. package/admin/components/admin-metadata/admin-metadata.component.d.ts +24 -0
  75. package/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.d.ts +10 -0
  76. package/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.d.ts +23 -0
  77. package/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.d.ts +36 -0
  78. package/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.d.ts +11 -0
  79. package/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.d.ts +40 -0
  80. package/admin/components/admin-metadata/store/metadata.action.d.ts +56 -0
  81. package/admin/components/admin-metadata/store/metadata.effects.d.ts +36 -0
  82. package/admin/components/admin-metadata/store/metadata.reducer.d.ts +13 -0
  83. package/admin/components/admin-metadata/store/metadata.selector.d.ts +10 -0
  84. package/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.d.ts +12 -0
  85. package/admin/components/admin-metadata-rules/admin-metadata-rules.component.d.ts +35 -0
  86. package/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.d.ts +5 -0
  87. package/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.d.ts +23 -0
  88. package/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.d.ts +41 -0
  89. package/admin/components/admin-metadata-rules/store/metadata-rules.actions.d.ts +49 -0
  90. package/admin/components/admin-metadata-rules/store/metadata-rules.effects.d.ts +39 -0
  91. package/admin/components/admin-metadata-rules/store/metadata-rules.reducer.d.ts +11 -0
  92. package/admin/components/admin-metadata-rules/store/metadata-rules.selectors.d.ts +7 -0
  93. package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +25 -0
  94. package/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.d.ts +17 -0
  95. package/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.d.ts +10 -0
  96. package/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.d.ts +23 -0
  97. package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +84 -0
  98. package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +48 -0
  99. package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +11 -0
  100. package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +14 -0
  101. package/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.d.ts +34 -0
  102. package/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.d.ts +5 -0
  103. package/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.d.ts +22 -0
  104. package/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.d.ts +16 -0
  105. package/admin/components/admin-predicates/admin-predicates.component.d.ts +19 -0
  106. package/admin/components/admin-predicates/store/predicates.actions.d.ts +46 -0
  107. package/admin/components/admin-predicates/store/predicates.effects.d.ts +33 -0
  108. package/admin/components/admin-predicates/store/predicates.reducer.d.ts +9 -0
  109. package/admin/components/admin-predicates/store/predicates.selectors.d.ts +8 -0
  110. package/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.d.ts +32 -0
  111. package/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.d.ts +19 -0
  112. package/admin/components/admin-relation-types/admin-relation-types.component.d.ts +15 -0
  113. package/admin/components/admin-title/admin-title.component.d.ts +15 -0
  114. package/admin/components/admin-user/admin-user-select/admin-user-select.component.d.ts +35 -0
  115. package/admin/components/admin-user/admin-user.component.d.ts +18 -0
  116. package/admin/components/admin-user/store/admin-user.action.d.ts +76 -0
  117. package/admin/components/admin-user/store/admin-user.effects.d.ts +43 -0
  118. package/admin/components/admin-user/store/admin-user.reducer.d.ts +10 -0
  119. package/admin/components/admin-user/store/admin-user.selector.d.ts +8 -0
  120. package/admin/components/admin.component.d.ts +17 -0
  121. package/admin/i18n/en.translations.d.ts +327 -0
  122. package/admin/i18n/fr.translations.d.ts +328 -0
  123. package/admin/index.d.ts +5 -0
  124. package/admin/public-api.d.ts +1 -0
  125. package/admin/store/admin.actions.d.ts +41 -0
  126. package/admin/store/admin.effects.d.ts +34 -0
  127. package/admin/store/admin.reducer.d.ts +13 -0
  128. package/admin/store/admin.selectors.d.ts +13 -0
  129. package/admin/store/admin.service.d.ts +45 -0
  130. package/assets/backgrounds/chart.svg +684 -0
  131. package/assets/backgrounds/detail.svg +27 -0
  132. package/assets/backgrounds/graph.svg +1775 -0
  133. package/assets/backgrounds/iframe.svg +799 -0
  134. package/assets/backgrounds/img_processus.png +0 -0
  135. package/assets/backgrounds/map.svg +154 -0
  136. package/assets/backgrounds/placeholder.png +0 -0
  137. package/assets/backgrounds/table.svg +48 -0
  138. package/assets/backgrounds/template.svg +26 -0
  139. package/assets/backgrounds/tile.svg +26 -0
  140. package/assets/fonts/ubuntu-latin-bold.woff2 +0 -0
  141. package/assets/fonts/ubuntu-latin-medium.woff2 +0 -0
  142. package/assets/fonts/ubuntu-latin-regular.woff2 +0 -0
  143. package/assets/svgs/add.svg +4 -0
  144. package/assets/svgs/add_column.svg +5 -0
  145. package/assets/svgs/admin-fill.svg +5 -0
  146. package/assets/svgs/admin.svg +8 -0
  147. package/assets/svgs/ads_click.svg +5 -0
  148. package/assets/svgs/apps.svg +5 -0
  149. package/assets/svgs/area_chart.svg +19 -0
  150. package/assets/svgs/arrow_back.svg +4 -0
  151. package/assets/svgs/arrow_right.svg +6 -0
  152. package/assets/svgs/auto_graph.svg +12 -0
  153. package/assets/svgs/bar_chart.svg +18 -0
  154. package/assets/svgs/bubble-chart-line.svg +18 -0
  155. package/assets/svgs/bulles.svg +5 -0
  156. package/assets/svgs/chart.svg +5 -0
  157. package/assets/svgs/chat-settings.svg +5 -0
  158. package/assets/svgs/check.svg +4 -0
  159. package/assets/svgs/checkbox-circle.svg +6 -0
  160. package/assets/svgs/chevron_bottom.svg +6 -0
  161. package/assets/svgs/chevron_bottom_rounded.svg +5 -0
  162. package/assets/svgs/chevron_left.svg +6 -0
  163. package/assets/svgs/chevron_right.svg +6 -0
  164. package/assets/svgs/chevron_top.svg +3 -0
  165. package/assets/svgs/chevron_top_rounded.svg +5 -0
  166. package/assets/svgs/click.svg +4 -0
  167. package/assets/svgs/close.svg +5 -0
  168. package/assets/svgs/control.svg +5 -0
  169. package/assets/svgs/control_point.svg +5 -0
  170. package/assets/svgs/danger.svg +5 -0
  171. package/assets/svgs/data.svg +5 -0
  172. package/assets/svgs/data_usage.svg +5 -0
  173. package/assets/svgs/dataset.svg +0 -0
  174. package/assets/svgs/default-restitution.svg +6 -0
  175. package/assets/svgs/default.svg +28 -0
  176. package/assets/svgs/delete.svg +5 -0
  177. package/assets/svgs/detail.svg +5 -0
  178. package/assets/svgs/donut_large.svg +14 -0
  179. package/assets/svgs/download.svg +4 -0
  180. package/assets/svgs/drag_indicator.svg +5 -0
  181. package/assets/svgs/edit.svg +5 -0
  182. package/assets/svgs/edit_off.svg +5 -0
  183. package/assets/svgs/epingle.svg +6 -0
  184. package/assets/svgs/event-fill.svg +5 -0
  185. package/assets/svgs/event.svg +5 -0
  186. package/assets/svgs/exposure_neg_1.svg +4 -0
  187. package/assets/svgs/exposure_plus_1.svg +4 -0
  188. package/assets/svgs/eye-arrow-down.svg +14 -0
  189. package/assets/svgs/eye-arrow-up.svg +14 -0
  190. package/assets/svgs/eye.svg +5 -0
  191. package/assets/svgs/file_download.svg +5 -0
  192. package/assets/svgs/file_upload.svg +5 -0
  193. package/assets/svgs/fleche_bas.svg +4 -0
  194. package/assets/svgs/fleche_haut.svg +4 -0
  195. package/assets/svgs/frequentation.svg +4 -0
  196. package/assets/svgs/fullscreen.svg +4 -0
  197. package/assets/svgs/globe.svg +5 -0
  198. package/assets/svgs/graph.svg +20 -0
  199. package/assets/svgs/grid_1_2_horizontal.svg +4 -0
  200. package/assets/svgs/grid_1_2_vertical.svg +4 -0
  201. package/assets/svgs/grid_1_3_horizontal.svg +5 -0
  202. package/assets/svgs/grid_1_3_vertical.svg +5 -0
  203. package/assets/svgs/grid_1_4.svg +6 -0
  204. package/assets/svgs/grid_2_gauche_1_droite.svg +5 -0
  205. package/assets/svgs/grid_composition_libre.svg +7 -0
  206. package/assets/svgs/grid_full.svg +3 -0
  207. package/assets/svgs/grid_view.svg +4 -0
  208. package/assets/svgs/heart-add-line.svg +5 -0
  209. package/assets/svgs/heart-fill.svg +5 -0
  210. package/assets/svgs/highlight_alt.svg +5 -0
  211. package/assets/svgs/history-line.svg +5 -0
  212. package/assets/svgs/home-fill.svg +5 -0
  213. package/assets/svgs/home-fill_old.svg +4 -0
  214. package/assets/svgs/home-line.svg +12 -0
  215. package/assets/svgs/home-line_old.svg +5 -0
  216. package/assets/svgs/home.svg +12 -0
  217. package/assets/svgs/iframe.svg +11 -0
  218. package/assets/svgs/image.svg +6 -0
  219. package/assets/svgs/info.svg +8 -0
  220. package/assets/svgs/information-point.svg +5 -0
  221. package/assets/svgs/lasso.svg +5 -0
  222. package/assets/svgs/launch.svg +5 -0
  223. package/assets/svgs/legend.svg +4 -0
  224. package/assets/svgs/library_add.svg +5 -0
  225. package/assets/svgs/links_line.svg +5 -0
  226. package/assets/svgs/map.svg +8 -0
  227. package/assets/svgs/marqueur.svg +5 -0
  228. package/assets/svgs/mode_clic.svg +5 -0
  229. package/assets/svgs/more_horiz.svg +5 -0
  230. package/assets/svgs/more_vertical.svg +5 -0
  231. package/assets/svgs/move.svg +5 -0
  232. package/assets/svgs/noise_aware.svg +12 -0
  233. package/assets/svgs/north_east.svg +6 -0
  234. package/assets/svgs/north_west.svg +6 -0
  235. package/assets/svgs/notification-4-line.svg +5 -0
  236. package/assets/svgs/notification.svg +5 -0
  237. package/assets/svgs/notifications.svg +5 -0
  238. package/assets/svgs/picture-in-picture.svg +7 -0
  239. package/assets/svgs/place.svg +5 -0
  240. package/assets/svgs/post_add.svg +8 -0
  241. package/assets/svgs/presentation-fill.svg +4 -0
  242. package/assets/svgs/presentation.svg +5 -0
  243. package/assets/svgs/private.svg +10 -0
  244. package/assets/svgs/pry_recherche.svg +81 -0
  245. package/assets/svgs/pry_recherche_pas_de_resultat.svg +81 -0
  246. package/assets/svgs/public.svg +16 -0
  247. package/assets/svgs/published_with_changes.svg +5 -0
  248. package/assets/svgs/question-line.svg +5 -0
  249. package/assets/svgs/radar_chart.svg +11 -0
  250. package/assets/svgs/rectangle.svg +5 -0
  251. package/assets/svgs/remove.svg +4 -0
  252. package/assets/svgs/renamed.svg +6 -0
  253. package/assets/svgs/reset.svg +4 -0
  254. package/assets/svgs/resize.svg +4 -0
  255. package/assets/svgs/restitution-fill.svg +11 -0
  256. package/assets/svgs/restitution.svg +15 -0
  257. package/assets/svgs/restricted.svg +18 -0
  258. package/assets/svgs/rotate-lock-line.svg +5 -0
  259. package/assets/svgs/save-fill.svg +4 -0
  260. package/assets/svgs/save-line.svg +5 -0
  261. package/assets/svgs/screenshot-fill.svg +5 -0
  262. package/assets/svgs/search-criteria.svg +5 -0
  263. package/assets/svgs/search-fill.svg +5 -0
  264. package/assets/svgs/search-line.svg +5 -0
  265. package/assets/svgs/search.svg +4 -0
  266. package/assets/svgs/settings_applications.svg +12 -0
  267. package/assets/svgs/share.svg +5 -0
  268. package/assets/svgs/share_location.svg +20 -0
  269. package/assets/svgs/shield-lock.svg +7 -0
  270. package/assets/svgs/show_chart.svg +12 -0
  271. package/assets/svgs/south_east.svg +6 -0
  272. package/assets/svgs/south_west.svg +6 -0
  273. package/assets/svgs/stack-fill.svg +5 -0
  274. package/assets/svgs/stack-line.svg +5 -0
  275. package/assets/svgs/stop.svg +5 -0
  276. package/assets/svgs/supervision.svg +13 -0
  277. package/assets/svgs/svg.svg +5 -0
  278. package/assets/svgs/synchro.svg +5 -0
  279. package/assets/svgs/table.svg +5 -0
  280. package/assets/svgs/table_chart.svg +18 -0
  281. package/assets/svgs/tags.svg +11 -0
  282. package/assets/svgs/tile.svg +12 -0
  283. package/assets/svgs/toc.svg +20 -0
  284. package/assets/svgs/transformation-fill.svg +21 -0
  285. package/assets/svgs/transformation.svg +20 -0
  286. package/assets/svgs/tune.svg +5 -0
  287. package/assets/svgs/unpublished.svg +5 -0
  288. package/assets/svgs/upload.svg +4 -0
  289. package/assets/svgs/user.svg +5 -0
  290. package/assets/svgs/warning-triangle.svg +5 -0
  291. package/assets/svgs/warning.svg +5 -0
  292. package/assets/svgs/zoom.svg +6 -0
  293. package/components/card/card.component.d.ts +69 -0
  294. package/components/card/card.module.d.ts +10 -0
  295. package/components/card/index.d.ts +5 -0
  296. package/components/card/public-api.d.ts +2 -0
  297. package/components/checkbox/checkbox.component.d.ts +20 -0
  298. package/components/checkbox/checkbox.module.d.ts +9 -0
  299. package/components/checkbox/index.d.ts +5 -0
  300. package/components/checkbox/public-api.d.ts +2 -0
  301. package/components/expand-panel/expand-panel.component.d.ts +14 -0
  302. package/components/expand-panel/expand-panel.module.d.ts +7 -0
  303. package/components/expand-panel/index.d.ts +5 -0
  304. package/components/expand-panel/public-api.d.ts +2 -0
  305. package/components/filter/filter.module.d.ts +7 -0
  306. package/components/filter/filter.pipe.d.ts +7 -0
  307. package/components/filter/index.d.ts +5 -0
  308. package/components/filter/public-api.d.ts +2 -0
  309. package/components/sinceDate/index.d.ts +5 -0
  310. package/components/sinceDate/public-api.d.ts +2 -0
  311. package/components/sinceDate/sinceDate.module.d.ts +7 -0
  312. package/components/sinceDate/sinceDate.pipe.d.ts +11 -0
  313. package/components/stepper/index.d.ts +5 -0
  314. package/components/stepper/public-api.d.ts +4 -0
  315. package/components/stepper/step/step.component.d.ts +15 -0
  316. package/components/stepper/step-title.directive.d.ts +8 -0
  317. package/components/stepper/stepper.component.d.ts +28 -0
  318. package/components/stepper/stepper.module.d.ts +10 -0
  319. package/dataset/components/dataset-card/dataset-card.component.d.ts +10 -0
  320. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +29 -0
  321. package/dataset/components/dataset.component.d.ts +17 -0
  322. package/dataset/dataset.module.d.ts +17 -0
  323. package/dataset/i18n/en.translations.d.ts +33 -0
  324. package/dataset/i18n/fr.translations.d.ts +38 -0
  325. package/dataset/index.d.ts +5 -0
  326. package/dataset/public-api.d.ts +5 -0
  327. package/dataset/style/_o-pry-dataset-card.scss +29 -0
  328. package/dataset/style/_o-pry-dataset-detail.scss +55 -0
  329. package/dataset/style/_o-pry-dataset.scss +31 -0
  330. package/dataset/style/css.component.d.ts +5 -0
  331. package/esm2022/admin/admin-routing.module.mjs +567 -0
  332. package/esm2022/admin/admin.module.mjs +366 -0
  333. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +50 -0
  334. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +57 -0
  335. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +34 -0
  336. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +54 -0
  337. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +47 -0
  338. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +81 -0
  339. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +66 -0
  340. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +69 -0
  341. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +29 -0
  342. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +24 -0
  343. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.actions.mjs +28 -0
  344. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +78 -0
  345. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.model.mjs +20 -0
  346. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.reducer.mjs +110 -0
  347. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.selectors.mjs +29 -0
  348. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +161 -0
  349. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +92 -0
  350. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +146 -0
  351. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +127 -0
  352. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +26 -0
  353. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +91 -0
  354. package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +13 -0
  355. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +107 -0
  356. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +30 -0
  357. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +151 -0
  358. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +30 -0
  359. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +81 -0
  360. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +183 -0
  361. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +70 -0
  362. package/esm2022/admin/components/admin-classes/store/admin-class.actions.mjs +32 -0
  363. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +139 -0
  364. package/esm2022/admin/components/admin-classes/store/admin-class.reducer.mjs +43 -0
  365. package/esm2022/admin/components/admin-classes/store/admin-class.selectors.mjs +23 -0
  366. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +79 -0
  367. package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +26 -0
  368. package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +13 -0
  369. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +155 -0
  370. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +98 -0
  371. package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +14 -0
  372. package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +34 -0
  373. package/esm2022/admin/components/admin-dataset/store/admin-dataset.reducer.mjs +11 -0
  374. package/esm2022/admin/components/admin-dataset/store/admin-dataset.selector.mjs +9 -0
  375. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +125 -0
  376. package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +13 -0
  377. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +94 -0
  378. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +26 -0
  379. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +51 -0
  380. package/esm2022/admin/components/admin-environment/store/environment.actions.mjs +19 -0
  381. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +47 -0
  382. package/esm2022/admin/components/admin-environment/store/environment.reducer.mjs +39 -0
  383. package/esm2022/admin/components/admin-environment/store/environment.selectors.mjs +15 -0
  384. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +25 -0
  385. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +85 -0
  386. package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +13 -0
  387. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +96 -0
  388. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +52 -0
  389. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +2 -0
  390. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +14 -0
  391. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +54 -0
  392. package/esm2022/admin/components/admin-fields/store/fields.reducer.mjs +14 -0
  393. package/esm2022/admin/components/admin-fields/store/fields.selectors.mjs +13 -0
  394. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +81 -0
  395. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +92 -0
  396. package/esm2022/admin/components/admin-links/admin-links.component.mjs +60 -0
  397. package/esm2022/admin/components/admin-links/store/links.actions.mjs +10 -0
  398. package/esm2022/admin/components/admin-links/store/links.effects.mjs +27 -0
  399. package/esm2022/admin/components/admin-links/store/links.reducer.mjs +19 -0
  400. package/esm2022/admin/components/admin-links/store/links.selectors.mjs +9 -0
  401. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +38 -0
  402. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +32 -0
  403. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +65 -0
  404. package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +21 -0
  405. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +77 -0
  406. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +130 -0
  407. package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +21 -0
  408. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +90 -0
  409. package/esm2022/admin/components/admin-metadata/store/metadata.action.mjs +19 -0
  410. package/esm2022/admin/components/admin-metadata/store/metadata.effects.mjs +33 -0
  411. package/esm2022/admin/components/admin-metadata/store/metadata.reducer.mjs +35 -0
  412. package/esm2022/admin/components/admin-metadata/store/metadata.selector.mjs +17 -0
  413. package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +22 -0
  414. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +86 -0
  415. package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +13 -0
  416. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +86 -0
  417. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +133 -0
  418. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.actions.mjs +23 -0
  419. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +51 -0
  420. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.reducer.mjs +28 -0
  421. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.selectors.mjs +13 -0
  422. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +65 -0
  423. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +33 -0
  424. package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +21 -0
  425. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +77 -0
  426. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +23 -0
  427. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +38 -0
  428. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +45 -0
  429. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +17 -0
  430. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +102 -0
  431. package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +13 -0
  432. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +69 -0
  433. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +27 -0
  434. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +46 -0
  435. package/esm2022/admin/components/admin-predicates/store/predicates.actions.mjs +13 -0
  436. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +28 -0
  437. package/esm2022/admin/components/admin-predicates/store/predicates.reducer.mjs +40 -0
  438. package/esm2022/admin/components/admin-predicates/store/predicates.selectors.mjs +15 -0
  439. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +101 -0
  440. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +63 -0
  441. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +42 -0
  442. package/esm2022/admin/components/admin-title/admin-title.component.mjs +29 -0
  443. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +116 -0
  444. package/esm2022/admin/components/admin-user/admin-user.component.mjs +34 -0
  445. package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +21 -0
  446. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +38 -0
  447. package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +27 -0
  448. package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +15 -0
  449. package/esm2022/admin/components/admin.component.mjs +29 -0
  450. package/esm2022/admin/i18n/en.translations.mjs +328 -0
  451. package/esm2022/admin/i18n/fr.translations.mjs +329 -0
  452. package/esm2022/admin/provoly-dashboard-admin.mjs +5 -0
  453. package/esm2022/admin/public-api.mjs +2 -0
  454. package/esm2022/admin/store/admin.actions.mjs +12 -0
  455. package/esm2022/admin/store/admin.effects.mjs +66 -0
  456. package/esm2022/admin/store/admin.reducer.mjs +52 -0
  457. package/esm2022/admin/store/admin.selectors.mjs +32 -0
  458. package/esm2022/admin/store/admin.service.mjs +181 -0
  459. package/esm2022/components/card/card.component.mjs +270 -0
  460. package/esm2022/components/card/card.module.mjs +38 -0
  461. package/esm2022/components/card/provoly-dashboard-components-card.mjs +5 -0
  462. package/esm2022/components/card/public-api.mjs +3 -0
  463. package/esm2022/components/checkbox/checkbox.component.mjs +58 -0
  464. package/esm2022/components/checkbox/checkbox.module.mjs +20 -0
  465. package/esm2022/components/checkbox/provoly-dashboard-components-checkbox.mjs +5 -0
  466. package/esm2022/components/checkbox/public-api.mjs +3 -0
  467. package/esm2022/components/expand-panel/expand-panel.component.mjs +65 -0
  468. package/esm2022/components/expand-panel/expand-panel.module.mjs +19 -0
  469. package/esm2022/components/expand-panel/provoly-dashboard-components-expand-panel.mjs +5 -0
  470. package/esm2022/components/expand-panel/public-api.mjs +3 -0
  471. package/esm2022/components/filter/filter.module.mjs +16 -0
  472. package/esm2022/components/filter/filter.pipe.mjs +16 -0
  473. package/esm2022/components/filter/provoly-dashboard-components-filter.mjs +5 -0
  474. package/esm2022/components/filter/public-api.mjs +3 -0
  475. package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +5 -0
  476. package/esm2022/components/sinceDate/public-api.mjs +3 -0
  477. package/esm2022/components/sinceDate/sinceDate.module.mjs +16 -0
  478. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +40 -0
  479. package/esm2022/components/stepper/provoly-dashboard-components-stepper.mjs +5 -0
  480. package/esm2022/components/stepper/public-api.mjs +5 -0
  481. package/esm2022/components/stepper/step/step.component.mjs +36 -0
  482. package/esm2022/components/stepper/step-title.directive.mjs +14 -0
  483. package/esm2022/components/stepper/stepper.component.mjs +109 -0
  484. package/esm2022/components/stepper/stepper.module.mjs +20 -0
  485. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +24 -0
  486. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +86 -0
  487. package/esm2022/dataset/components/dataset.component.mjs +35 -0
  488. package/esm2022/dataset/dataset.module.mjs +59 -0
  489. package/esm2022/dataset/i18n/en.translations.mjs +34 -0
  490. package/esm2022/dataset/i18n/fr.translations.mjs +39 -0
  491. package/esm2022/dataset/provoly-dashboard-dataset.mjs +5 -0
  492. package/esm2022/dataset/public-api.mjs +6 -0
  493. package/esm2022/dataset/style/css.component.mjs +11 -0
  494. package/esm2022/filters/date/date-filter.component.mjs +50 -0
  495. package/esm2022/filters/date/date-filter.module.mjs +25 -0
  496. package/esm2022/filters/date/provoly-dashboard-filters-date.mjs +5 -0
  497. package/esm2022/filters/date/public-api.mjs +4 -0
  498. package/esm2022/filters/date/style/css.component.mjs +11 -0
  499. package/esm2022/filters/list/list-filter.component.mjs +31 -0
  500. package/esm2022/filters/list/list-filter.module.mjs +24 -0
  501. package/esm2022/filters/list/provoly-dashboard-filters-list.mjs +5 -0
  502. package/esm2022/filters/list/public-api.mjs +4 -0
  503. package/esm2022/filters/list/style/css.component.mjs +11 -0
  504. package/esm2022/filters/number/number-filter.component.mjs +26 -0
  505. package/esm2022/filters/number/number-filter.module.mjs +24 -0
  506. package/esm2022/filters/number/provoly-dashboard-filters-number.mjs +5 -0
  507. package/esm2022/filters/number/public-api.mjs +3 -0
  508. package/esm2022/filters/text/provoly-dashboard-filters-text.mjs +5 -0
  509. package/esm2022/filters/text/public-api.mjs +3 -0
  510. package/esm2022/filters/text/text-filter.component.mjs +29 -0
  511. package/esm2022/filters/text/text-filter.module.mjs +24 -0
  512. package/esm2022/import/components/import.component.mjs +72 -0
  513. package/esm2022/import/i18n/en.translations.mjs +28 -0
  514. package/esm2022/import/i18n/fr.translations.mjs +28 -0
  515. package/esm2022/import/import-routing.module.mjs +32 -0
  516. package/esm2022/import/import.module.mjs +61 -0
  517. package/esm2022/import/provoly-dashboard-import.mjs +5 -0
  518. package/esm2022/import/public-api.mjs +3 -0
  519. package/esm2022/import/store/import.actions.mjs +7 -0
  520. package/esm2022/import/store/import.effects.mjs +32 -0
  521. package/esm2022/import/store/import.reducer.mjs +23 -0
  522. package/esm2022/import/store/import.selectors.mjs +10 -0
  523. package/esm2022/import/store/import.service.mjs +29 -0
  524. package/esm2022/import/style/css.component.mjs +11 -0
  525. package/esm2022/lib/core/access/access.directive.mjs +45 -0
  526. package/esm2022/lib/core/access/access.guard.mjs +21 -0
  527. package/esm2022/lib/core/access/access.model.mjs +2 -0
  528. package/esm2022/lib/core/access/access.service.mjs +20 -0
  529. package/esm2022/lib/core/access/access.utils.mjs +83 -0
  530. package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +44 -0
  531. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +29 -0
  532. package/esm2022/lib/core/components/base-toolbox/base-toolbox-action.interface.mjs +2 -0
  533. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +23 -0
  534. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +64 -0
  535. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +206 -0
  536. package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +36 -0
  537. package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +42 -0
  538. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +92 -0
  539. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +81 -0
  540. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +60 -0
  541. package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +22 -0
  542. package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +25 -0
  543. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +30 -0
  544. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +20 -0
  545. package/esm2022/lib/core/components/icon/icon.component.mjs +92 -0
  546. package/esm2022/lib/core/components/icon/icon.module.mjs +19 -0
  547. package/esm2022/lib/core/components/modal/modal.component.mjs +34 -0
  548. package/esm2022/lib/core/components/modal/pry-modal.module.mjs +22 -0
  549. package/esm2022/lib/core/components/modalStatus/modalStatus.component.mjs +35 -0
  550. package/esm2022/lib/core/components/modalStatus/modalStatus.module.mjs +28 -0
  551. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +77 -0
  552. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +57 -0
  553. package/esm2022/lib/core/components/overlay/dialog-ref.mjs +15 -0
  554. package/esm2022/lib/core/components/overlay/dialog.service.mjs +71 -0
  555. package/esm2022/lib/core/components/overlay/overlay.constantes.mjs +9 -0
  556. package/esm2022/lib/core/components/overlay/overlay.directive.mjs +125 -0
  557. package/esm2022/lib/core/components/overlay/overlay.module.mjs +23 -0
  558. package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +121 -0
  559. package/esm2022/lib/core/components/range/range.component.mjs +106 -0
  560. package/esm2022/lib/core/components/range/range.module.mjs +19 -0
  561. package/esm2022/lib/core/components/select/select.component.mjs +118 -0
  562. package/esm2022/lib/core/components/select/select.module.mjs +22 -0
  563. package/esm2022/lib/core/components/select-image/select-image.component.mjs +84 -0
  564. package/esm2022/lib/core/components/share/share.component.mjs +83 -0
  565. package/esm2022/lib/core/components/share/share.model.mjs +7 -0
  566. package/esm2022/lib/core/components/share/share.module.mjs +21 -0
  567. package/esm2022/lib/core/components/snackbar/snack.interface.mjs +2 -0
  568. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +65 -0
  569. package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +19 -0
  570. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +63 -0
  571. package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +54 -0
  572. package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +52 -0
  573. package/esm2022/lib/core/components/sort/sort-header.directive.mjs +13 -0
  574. package/esm2022/lib/core/components/sort/sort-table.directive.mjs +64 -0
  575. package/esm2022/lib/core/components/sort/sort.model.mjs +2 -0
  576. package/esm2022/lib/core/components/sort/sort.module.mjs +23 -0
  577. package/esm2022/lib/core/components/title-presentation/title-presentation.component.mjs +26 -0
  578. package/esm2022/lib/core/components/toggle/toggle.component.mjs +100 -0
  579. package/esm2022/lib/core/components/toggle/toggle.module.mjs +21 -0
  580. package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +115 -0
  581. package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +27 -0
  582. package/esm2022/lib/core/components/upload/upload.component.mjs +88 -0
  583. package/esm2022/lib/core/core.module.mjs +179 -0
  584. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +44 -0
  585. package/esm2022/lib/core/i18n/deep-merge.function.mjs +21 -0
  586. package/esm2022/lib/core/i18n/en.translations.mjs +323 -0
  587. package/esm2022/lib/core/i18n/fr.translations.mjs +323 -0
  588. package/esm2022/lib/core/i18n/i18n.module.mjs +16 -0
  589. package/esm2022/lib/core/i18n/i18n.pipe.mjs +42 -0
  590. package/esm2022/lib/core/i18n/i18n.service.mjs +88 -0
  591. package/esm2022/lib/core/model/admin-api.model.mjs +45 -0
  592. package/esm2022/lib/core/model/dataset.interface.mjs +13 -0
  593. package/esm2022/lib/core/model/filter.interface.mjs +2 -0
  594. package/esm2022/lib/core/model/item.interface.mjs +2 -0
  595. package/esm2022/lib/core/model/manifest.interface.mjs +11 -0
  596. package/esm2022/lib/core/model/mimetype-resultset.constant.mjs +2 -0
  597. package/esm2022/lib/core/model/notification-interface.mjs +2 -0
  598. package/esm2022/lib/core/model/public-api.mjs +25 -0
  599. package/esm2022/lib/core/model/relation.interface.mjs +2 -0
  600. package/esm2022/lib/core/model/result-order.interface.mjs +2 -0
  601. package/esm2022/lib/core/model/result-set.interface.mjs +2 -0
  602. package/esm2022/lib/core/model/search-mono-class.model.mjs +17 -0
  603. package/esm2022/lib/core/model/search-multi-class.model.mjs +2 -0
  604. package/esm2022/lib/core/model/tooltip-of-class.interface.mjs +2 -0
  605. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +26 -0
  606. package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +63 -0
  607. package/esm2022/lib/core/model/widget-detail-manifest.interface.mjs +2 -0
  608. package/esm2022/lib/core/model/widget-graph-manifest.interface.mjs +2 -0
  609. package/esm2022/lib/core/model/widget-iframe-manifest.interface.mjs +2 -0
  610. package/esm2022/lib/core/model/widget-image-manifest.interface.mjs +2 -0
  611. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +19 -0
  612. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +2 -0
  613. package/esm2022/lib/core/model/widget-template-manifest.interface.mjs +2 -0
  614. package/esm2022/lib/core/model/widget-tile-manifest.interface.mjs +2 -0
  615. package/esm2022/lib/core/model/widget.interface.mjs +2 -0
  616. package/esm2022/lib/core/public-api.mjs +113 -0
  617. package/esm2022/lib/core/store/category/category.actions.mjs +7 -0
  618. package/esm2022/lib/core/store/category/category.effects.mjs +20 -0
  619. package/esm2022/lib/core/store/category/category.interface.mjs +2 -0
  620. package/esm2022/lib/core/store/category/category.reducer.mjs +19 -0
  621. package/esm2022/lib/core/store/category/category.selectors.mjs +11 -0
  622. package/esm2022/lib/core/store/category/category.service.mjs +26 -0
  623. package/esm2022/lib/core/store/class/class.actions.mjs +13 -0
  624. package/esm2022/lib/core/store/class/class.effects.mjs +26 -0
  625. package/esm2022/lib/core/store/class/class.interface.mjs +2 -0
  626. package/esm2022/lib/core/store/class/class.reducer.mjs +42 -0
  627. package/esm2022/lib/core/store/class/class.selectors.mjs +31 -0
  628. package/esm2022/lib/core/store/class/class.service.mjs +42 -0
  629. package/esm2022/lib/core/store/config/config.actions.mjs +31 -0
  630. package/esm2022/lib/core/store/config/config.effects.mjs +100 -0
  631. package/esm2022/lib/core/store/config/config.reducer.mjs +122 -0
  632. package/esm2022/lib/core/store/config/config.selectors.mjs +82 -0
  633. package/esm2022/lib/core/store/config/config.service.mjs +106 -0
  634. package/esm2022/lib/core/store/config/config.widget.constants.mjs +55 -0
  635. package/esm2022/lib/core/store/config/icon-definitions.interface.mjs +19 -0
  636. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +37 -0
  637. package/esm2022/lib/core/store/context-menu/context-menu.actions.mjs +6 -0
  638. package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +14 -0
  639. package/esm2022/lib/core/store/context-menu/context-menu.reducer.mjs +29 -0
  640. package/esm2022/lib/core/store/context-menu/context-menu.selectors.mjs +19 -0
  641. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +53 -0
  642. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +151 -0
  643. package/esm2022/lib/core/store/data-source/data-source.model.mjs +2 -0
  644. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +87 -0
  645. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +66 -0
  646. package/esm2022/lib/core/store/data-source/data-source.service.mjs +123 -0
  647. package/esm2022/lib/core/store/data-source/named-query-types.model.mjs +7 -0
  648. package/esm2022/lib/core/store/data-source/named-query-utils.mjs +13 -0
  649. package/esm2022/lib/core/store/field/field.actions.mjs +7 -0
  650. package/esm2022/lib/core/store/field/field.effects.mjs +20 -0
  651. package/esm2022/lib/core/store/field/field.interface.mjs +18 -0
  652. package/esm2022/lib/core/store/field/field.reducer.mjs +19 -0
  653. package/esm2022/lib/core/store/field/field.selectors.mjs +19 -0
  654. package/esm2022/lib/core/store/field/field.service.mjs +36 -0
  655. package/esm2022/lib/core/store/image/image.actions.mjs +10 -0
  656. package/esm2022/lib/core/store/image/image.effects.mjs +21 -0
  657. package/esm2022/lib/core/store/image/image.reducer.mjs +23 -0
  658. package/esm2022/lib/core/store/image/image.selectors.mjs +19 -0
  659. package/esm2022/lib/core/store/image/image.service.mjs +72 -0
  660. package/esm2022/lib/core/store/item/item.actions.mjs +7 -0
  661. package/esm2022/lib/core/store/item/item.effects.mjs +44 -0
  662. package/esm2022/lib/core/store/item/item.service.mjs +50 -0
  663. package/esm2022/lib/core/store/raw/raw.service.mjs +50 -0
  664. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +22 -0
  665. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +48 -0
  666. package/esm2022/lib/core/store/relation-types/relation-types.interface.mjs +2 -0
  667. package/esm2022/lib/core/store/relation-types/relation-types.reducer.mjs +33 -0
  668. package/esm2022/lib/core/store/relation-types/relation-types.selectors.mjs +18 -0
  669. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +46 -0
  670. package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +35 -0
  671. package/esm2022/lib/core/store/search/search.actions.mjs +9 -0
  672. package/esm2022/lib/core/store/search/search.constants.mjs +3 -0
  673. package/esm2022/lib/core/store/search/search.effects.mjs +36 -0
  674. package/esm2022/lib/core/store/search/search.reducer.mjs +25 -0
  675. package/esm2022/lib/core/store/search/search.selectors.mjs +9 -0
  676. package/esm2022/lib/core/store/search/search.service.mjs +96 -0
  677. package/esm2022/lib/core/symbol/symbol.service.mjs +182 -0
  678. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +335 -0
  679. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +167 -0
  680. package/esm2022/lib/core/ws/websocket.service.mjs +92 -0
  681. package/esm2022/lib/dashboard/action-bus/bus-action.interface.mjs +2 -0
  682. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +23 -0
  683. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +86 -0
  684. package/esm2022/lib/dashboard/action-bus/service/control-message.interface.mjs +2 -0
  685. package/esm2022/lib/dashboard/base-widget.module.mjs +16 -0
  686. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +131 -0
  687. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +267 -0
  688. package/esm2022/lib/dashboard/components/dashboard.component.mjs +558 -0
  689. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +60 -0
  690. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +33 -0
  691. package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +88 -0
  692. package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +17 -0
  693. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +45 -0
  694. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +62 -0
  695. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +59 -0
  696. package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +45 -0
  697. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +474 -0
  698. package/esm2022/lib/dashboard/components/widgets/public-api.mjs +10 -0
  699. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +97 -0
  700. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +20 -0
  701. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +60 -0
  702. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +90 -0
  703. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.mjs +2 -0
  704. package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +17 -0
  705. package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +183 -0
  706. package/esm2022/lib/dashboard/dashboard.module.mjs +172 -0
  707. package/esm2022/lib/dashboard/date-utils.mjs +7 -0
  708. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +32 -0
  709. package/esm2022/lib/dashboard/filter/base-filter.module.mjs +15 -0
  710. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +42 -0
  711. package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +67 -0
  712. package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +21 -0
  713. package/esm2022/lib/dashboard/filter/public-api.mjs +6 -0
  714. package/esm2022/lib/dashboard/guard/default-view.guard.mjs +41 -0
  715. package/esm2022/lib/dashboard/item-utils.mjs +167 -0
  716. package/esm2022/lib/dashboard/public-api.mjs +31 -0
  717. package/esm2022/lib/dashboard/resultset-utils.mjs +30 -0
  718. package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +37 -0
  719. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +76 -0
  720. package/esm2022/lib/dashboard/store/dashboard.contants.mjs +5 -0
  721. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +333 -0
  722. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +590 -0
  723. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +118 -0
  724. package/esm2022/lib/dashboard/store/geocoding.service.mjs +44 -0
  725. package/esm2022/lib/dashboard/store/manifest.service.mjs +95 -0
  726. package/esm2022/lib/dashboard/store/refresh.service.mjs +37 -0
  727. package/esm2022/lib/dashboard/store/title.service.mjs +39 -0
  728. package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +20 -0
  729. package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +16 -0
  730. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +15 -0
  731. package/esm2022/lib/dashboard/tooltip/public-api.mjs +6 -0
  732. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +77 -0
  733. package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +22 -0
  734. package/esm2022/lib/dashboard/widget-loader.function.mjs +22 -0
  735. package/esm2022/notification/components/notification/content/notification-content.component.mjs +62 -0
  736. package/esm2022/notification/components/notification/notification.component.mjs +59 -0
  737. package/esm2022/notification/i18n/en.translations.mjs +23 -0
  738. package/esm2022/notification/i18n/fr.translations.mjs +23 -0
  739. package/esm2022/notification/notification.module.mjs +53 -0
  740. package/esm2022/notification/provoly-dashboard-notification.mjs +5 -0
  741. package/esm2022/notification/public-api.mjs +9 -0
  742. package/esm2022/notification/store/notification.actions.mjs +9 -0
  743. package/esm2022/notification/store/notification.effects.mjs +37 -0
  744. package/esm2022/notification/store/notification.reducer.mjs +20 -0
  745. package/esm2022/notification/store/notification.selectors.mjs +9 -0
  746. package/esm2022/notification/store/notification.service.mjs +31 -0
  747. package/esm2022/notification/style/css.component.mjs +11 -0
  748. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +103 -0
  749. package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +101 -0
  750. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +305 -0
  751. package/esm2022/pipeline/components/pipeline-editor/pipeline.interface.mjs +7 -0
  752. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +174 -0
  753. package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +22 -0
  754. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +58 -0
  755. package/esm2022/pipeline/i18n/en.translations.mjs +74 -0
  756. package/esm2022/pipeline/i18n/fr.translations.mjs +74 -0
  757. package/esm2022/pipeline/node-class/base-node.class.mjs +44 -0
  758. package/esm2022/pipeline/pipeline.module.mjs +83 -0
  759. package/esm2022/pipeline/provoly-dashboard-pipeline.mjs +5 -0
  760. package/esm2022/pipeline/public-api.mjs +17 -0
  761. package/esm2022/pipeline/store/pipeline.actions.mjs +15 -0
  762. package/esm2022/pipeline/store/pipeline.effects.mjs +71 -0
  763. package/esm2022/pipeline/store/pipeline.reducer.mjs +41 -0
  764. package/esm2022/pipeline/store/pipeline.selectors.mjs +18 -0
  765. package/esm2022/pipeline/store/pipeline.service.mjs +51 -0
  766. package/esm2022/pipeline/style/css.component.mjs +11 -0
  767. package/esm2022/pipeline-components/filter/component/filter.component.mjs +62 -0
  768. package/esm2022/pipeline-components/filter/filter.module.mjs +52 -0
  769. package/esm2022/pipeline-components/filter/i18n/en.translations.mjs +16 -0
  770. package/esm2022/pipeline-components/filter/i18n/fr.translations.mjs +16 -0
  771. package/esm2022/pipeline-components/filter/node-class/filter-node.class.mjs +10 -0
  772. package/esm2022/pipeline-components/filter/provoly-dashboard-pipeline-components-filter.mjs +5 -0
  773. package/esm2022/pipeline-components/filter/public-api.mjs +4 -0
  774. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +28 -0
  775. package/esm2022/pipeline-components/input-datasource/i18n/en.translations.mjs +8 -0
  776. package/esm2022/pipeline-components/input-datasource/i18n/fr.translations.mjs +8 -0
  777. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +59 -0
  778. package/esm2022/pipeline-components/input-datasource/node-class/input-datasourse-node.class.mjs +16 -0
  779. package/esm2022/pipeline-components/input-datasource/provoly-dashboard-pipeline-components-input-datasource.mjs +5 -0
  780. package/esm2022/pipeline-components/input-datasource/public-api.mjs +4 -0
  781. package/esm2022/pipeline-components/noop/component/noop.component.mjs +18 -0
  782. package/esm2022/pipeline-components/noop/node-class/noop-node.class.mjs +10 -0
  783. package/esm2022/pipeline-components/noop/noop.module.mjs +46 -0
  784. package/esm2022/pipeline-components/noop/provoly-dashboard-pipeline-components-noop.mjs +5 -0
  785. package/esm2022/pipeline-components/noop/public-api.mjs +4 -0
  786. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +30 -0
  787. package/esm2022/pipeline-components/output-dataset/i18n/en.translations.mjs +8 -0
  788. package/esm2022/pipeline-components/output-dataset/i18n/fr.translations.mjs +8 -0
  789. package/esm2022/pipeline-components/output-dataset/node-class/output-dataset-node.class.mjs +17 -0
  790. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +60 -0
  791. package/esm2022/pipeline-components/output-dataset/provoly-dashboard-pipeline-components-output-dataset.mjs +5 -0
  792. package/esm2022/pipeline-components/output-dataset/public-api.mjs +4 -0
  793. package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +18 -0
  794. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-input.class.mjs +15 -0
  795. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +96 -0
  796. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-output.class.mjs +15 -0
  797. package/esm2022/pipeline-components/subgraph/provoly-dashboard-pipeline-components-subgraph.mjs +5 -0
  798. package/esm2022/pipeline-components/subgraph/public-api.mjs +6 -0
  799. package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +50 -0
  800. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +119 -0
  801. package/esm2022/presentation/components/presentation.component.mjs +231 -0
  802. package/esm2022/presentation/i18n/en.translations.mjs +40 -0
  803. package/esm2022/presentation/i18n/fr.translations.mjs +41 -0
  804. package/esm2022/presentation/presentation.module.mjs +72 -0
  805. package/esm2022/presentation/provoly-dashboard-presentation.mjs +5 -0
  806. package/esm2022/presentation/public-api.mjs +5 -0
  807. package/esm2022/presentation/style/css.component.mjs +11 -0
  808. package/esm2022/provoly-dashboard.mjs +5 -0
  809. package/esm2022/public-api.mjs +6 -0
  810. package/esm2022/restitution/components/restitution/restitution.component.mjs +216 -0
  811. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +114 -0
  812. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +68 -0
  813. package/esm2022/restitution/i18n/en.translations.mjs +44 -0
  814. package/esm2022/restitution/i18n/fr.translations.mjs +44 -0
  815. package/esm2022/restitution/model/restitution.model.mjs +2 -0
  816. package/esm2022/restitution/provoly-dashboard-restitution.mjs +5 -0
  817. package/esm2022/restitution/public-api.mjs +5 -0
  818. package/esm2022/restitution/restitution.module.mjs +86 -0
  819. package/esm2022/restitution/style/css.component.mjs +11 -0
  820. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +67 -0
  821. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +101 -0
  822. package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +55 -0
  823. package/esm2022/search/components/save-query/save-query.component.mjs +106 -0
  824. package/esm2022/search/components/save-query-button/save-query-button.component.mjs +76 -0
  825. package/esm2022/search/i18n/en.translations.mjs +132 -0
  826. package/esm2022/search/i18n/fr.translations.mjs +132 -0
  827. package/esm2022/search/provoly-dashboard-search.mjs +5 -0
  828. package/esm2022/search/public-api.mjs +13 -0
  829. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +207 -0
  830. package/esm2022/search/search-fulltext/store/search-fulltext.actions.mjs +6 -0
  831. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +38 -0
  832. package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +22 -0
  833. package/esm2022/search/search-home/search-home.component.mjs +199 -0
  834. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +78 -0
  835. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +139 -0
  836. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +34 -0
  837. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +69 -0
  838. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +37 -0
  839. package/esm2022/search/search-mono-class/store/search-mono-class.actions.mjs +26 -0
  840. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +112 -0
  841. package/esm2022/search/search-mono-class/store/search-mono-class.reducer.mjs +139 -0
  842. package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +38 -0
  843. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +161 -0
  844. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +150 -0
  845. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +62 -0
  846. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +37 -0
  847. package/esm2022/search/search-multi-class/store/search-multi-class.actions.mjs +16 -0
  848. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +66 -0
  849. package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +59 -0
  850. package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +32 -0
  851. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +125 -0
  852. package/esm2022/search/search-tools/search-tools.component.mjs +151 -0
  853. package/esm2022/search/search.module.mjs +156 -0
  854. package/esm2022/search/style/css.component.mjs +11 -0
  855. package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +34 -0
  856. package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +33 -0
  857. package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +51 -0
  858. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +27 -0
  859. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +100 -0
  860. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +47 -0
  861. package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +32 -0
  862. package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +24 -0
  863. package/esm2022/supervision/components/supervision.component.mjs +19 -0
  864. package/esm2022/supervision/i18n/en.translations.mjs +58 -0
  865. package/esm2022/supervision/i18n/fr.translations.mjs +58 -0
  866. package/esm2022/supervision/provoly-dashboard-supervision.mjs +5 -0
  867. package/esm2022/supervision/public-api.mjs +2 -0
  868. package/esm2022/supervision/store/supervision-api.model.mjs +2 -0
  869. package/esm2022/supervision/store/supervision.actions.mjs +33 -0
  870. package/esm2022/supervision/store/supervision.effects.mjs +60 -0
  871. package/esm2022/supervision/store/supervision.reducer.mjs +115 -0
  872. package/esm2022/supervision/store/supervision.selectors.mjs +35 -0
  873. package/esm2022/supervision/store/supervision.service.mjs +54 -0
  874. package/esm2022/supervision/supervision-routing.module.mjs +96 -0
  875. package/esm2022/supervision/supervision.module.mjs +96 -0
  876. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +24 -0
  877. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +43 -0
  878. package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +27 -0
  879. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +235 -0
  880. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +24 -0
  881. package/esm2022/toolbox/components/named-query/named-query.component.mjs +35 -0
  882. package/esm2022/toolbox/components/save-view/save-view.component.mjs +207 -0
  883. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +109 -0
  884. package/esm2022/toolbox/components/toolbox.component.mjs +32 -0
  885. package/esm2022/toolbox/provoly-dashboard-toolbox.mjs +5 -0
  886. package/esm2022/toolbox/public-api.mjs +12 -0
  887. package/esm2022/toolbox/style/css.component.mjs +11 -0
  888. package/esm2022/toolbox/toolbox.module.mjs +107 -0
  889. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +33 -0
  890. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +24 -0
  891. package/esm2022/tooltips/attribute/provoly-dashboard-tooltips-attribute.mjs +5 -0
  892. package/esm2022/tooltips/attribute/public-api.mjs +3 -0
  893. package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +12 -0
  894. package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +24 -0
  895. package/esm2022/tooltips/cluster/provoly-dashboard-tooltips-cluster.mjs +5 -0
  896. package/esm2022/tooltips/cluster/public-api.mjs +3 -0
  897. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +633 -0
  898. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +104 -0
  899. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +104 -0
  900. package/esm2022/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.mjs +5 -0
  901. package/esm2022/widgets/widget-aggregated-chart/public-api.mjs +6 -0
  902. package/esm2022/widgets/widget-aggregated-chart/service/backend-aggregation.service.mjs +103 -0
  903. package/esm2022/widgets/widget-aggregated-chart/service/base-aggregation.service.mjs +16 -0
  904. package/esm2022/widgets/widget-aggregated-chart/service/frontend-aggregation.service.mjs +206 -0
  905. package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +11 -0
  906. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +72 -0
  907. package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +36 -0
  908. package/esm2022/widgets/widget-chart/component/vega-spec.constant.mjs +248 -0
  909. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +652 -0
  910. package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +114 -0
  911. package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +114 -0
  912. package/esm2022/widgets/widget-chart/provoly-dashboard-widgets-widget-chart.mjs +5 -0
  913. package/esm2022/widgets/widget-chart/public-api.mjs +3 -0
  914. package/esm2022/widgets/widget-chart/style/css.component.mjs +11 -0
  915. package/esm2022/widgets/widget-chart/widget-chart.module.mjs +70 -0
  916. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +131 -0
  917. package/esm2022/widgets/widget-detail/i18n/en.translations.mjs +14 -0
  918. package/esm2022/widgets/widget-detail/i18n/fr.translations.mjs +14 -0
  919. package/esm2022/widgets/widget-detail/provoly-dashboard-widgets-widget-detail.mjs +5 -0
  920. package/esm2022/widgets/widget-detail/public-api.mjs +3 -0
  921. package/esm2022/widgets/widget-detail/style/css.component.mjs +11 -0
  922. package/esm2022/widgets/widget-detail/widget-detail.module.mjs +64 -0
  923. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +448 -0
  924. package/esm2022/widgets/widget-graph/i18n/en.translations.mjs +15 -0
  925. package/esm2022/widgets/widget-graph/i18n/fr.translations.mjs +15 -0
  926. package/esm2022/widgets/widget-graph/layout/node.interface.mjs +2 -0
  927. package/esm2022/widgets/widget-graph/layout/simple.function.mjs +99 -0
  928. package/esm2022/widgets/widget-graph/provoly-dashboard-widgets-widget-graph.mjs +5 -0
  929. package/esm2022/widgets/widget-graph/public-api.mjs +4 -0
  930. package/esm2022/widgets/widget-graph/style/css.component.mjs +11 -0
  931. package/esm2022/widgets/widget-graph/widget-graph.module.mjs +73 -0
  932. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +53 -0
  933. package/esm2022/widgets/widget-iframe/i18n/en.translations.mjs +11 -0
  934. package/esm2022/widgets/widget-iframe/i18n/fr.translations.mjs +11 -0
  935. package/esm2022/widgets/widget-iframe/messaging/iframe-message-type.interface.mjs +2 -0
  936. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +30 -0
  937. package/esm2022/widgets/widget-iframe/provoly-dashboard-widgets-widget-iframe.mjs +5 -0
  938. package/esm2022/widgets/widget-iframe/public-api.mjs +5 -0
  939. package/esm2022/widgets/widget-iframe/style/css.component.mjs +11 -0
  940. package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +66 -0
  941. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +33 -0
  942. package/esm2022/widgets/widget-image/provoly-dashboard-widgets-widget-image.mjs +5 -0
  943. package/esm2022/widgets/widget-image/public-api.mjs +3 -0
  944. package/esm2022/widgets/widget-image/style/css.component.mjs +11 -0
  945. package/esm2022/widgets/widget-image/widget-image.module.mjs +24 -0
  946. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +317 -0
  947. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +822 -0
  948. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +81 -0
  949. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +81 -0
  950. package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +170 -0
  951. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +52 -0
  952. package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +22 -0
  953. package/esm2022/widgets/widget-map/provoly-dashboard-widgets-widget-map.mjs +5 -0
  954. package/esm2022/widgets/widget-map/public-api.mjs +7 -0
  955. package/esm2022/widgets/widget-map/reader/kmz-zip-reader.class.mjs +57 -0
  956. package/esm2022/widgets/widget-map/reader/map-formats-reader.class.mjs +37 -0
  957. package/esm2022/widgets/widget-map/reader/random-color-style.function.mjs +32 -0
  958. package/esm2022/widgets/widget-map/reader/read-as-text.class.mjs +30 -0
  959. package/esm2022/widgets/widget-map/reader/shp-zip-reader.class.mjs +35 -0
  960. package/esm2022/widgets/widget-map/search-bar/search-bar.control.mjs +66 -0
  961. package/esm2022/widgets/widget-map/style/css.component.mjs +11 -0
  962. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +229 -0
  963. package/esm2022/widgets/widget-map/widget-map.module.mjs +72 -0
  964. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +187 -0
  965. package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +30 -0
  966. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +32 -0
  967. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +29 -0
  968. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +43 -0
  969. package/esm2022/widgets/widget-table/i18n/en.translations.mjs +15 -0
  970. package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +15 -0
  971. package/esm2022/widgets/widget-table/provoly-dashboard-widgets-widget-table.mjs +5 -0
  972. package/esm2022/widgets/widget-table/public-api.mjs +6 -0
  973. package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +21 -0
  974. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +34 -0
  975. package/esm2022/widgets/widget-table/style/css.component.mjs +11 -0
  976. package/esm2022/widgets/widget-table/widget-table.module.mjs +86 -0
  977. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +86 -0
  978. package/esm2022/widgets/widget-template/provoly-dashboard-widgets-widget-template.mjs +5 -0
  979. package/esm2022/widgets/widget-template/public-api.mjs +3 -0
  980. package/esm2022/widgets/widget-template/style/css.component.mjs +11 -0
  981. package/esm2022/widgets/widget-template/widget-template.module.mjs +52 -0
  982. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +114 -0
  983. package/esm2022/widgets/widget-tile/i18n/en.translations.mjs +13 -0
  984. package/esm2022/widgets/widget-tile/i18n/fr.translations.mjs +13 -0
  985. package/esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs +5 -0
  986. package/esm2022/widgets/widget-tile/public-api.mjs +3 -0
  987. package/esm2022/widgets/widget-tile/style/css.component.mjs +11 -0
  988. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +72 -0
  989. package/fesm2022/provoly-dashboard-admin.mjs +6992 -0
  990. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -0
  991. package/fesm2022/provoly-dashboard-components-card.mjs +312 -0
  992. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -0
  993. package/fesm2022/provoly-dashboard-components-checkbox.mjs +81 -0
  994. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -0
  995. package/fesm2022/provoly-dashboard-components-expand-panel.mjs +88 -0
  996. package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -0
  997. package/fesm2022/provoly-dashboard-components-filter.mjs +36 -0
  998. package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -0
  999. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +60 -0
  1000. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -0
  1001. package/fesm2022/provoly-dashboard-components-stepper.mjs +175 -0
  1002. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -0
  1003. package/fesm2022/provoly-dashboard-dataset.mjs +268 -0
  1004. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -0
  1005. package/fesm2022/provoly-dashboard-filters-date.mjs +85 -0
  1006. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -0
  1007. package/fesm2022/provoly-dashboard-filters-list.mjs +65 -0
  1008. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -0
  1009. package/fesm2022/provoly-dashboard-filters-number.mjs +53 -0
  1010. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -0
  1011. package/fesm2022/provoly-dashboard-filters-text.mjs +56 -0
  1012. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -0
  1013. package/fesm2022/provoly-dashboard-import.mjs +302 -0
  1014. package/fesm2022/provoly-dashboard-import.mjs.map +1 -0
  1015. package/fesm2022/provoly-dashboard-notification.mjs +303 -0
  1016. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -0
  1017. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +154 -0
  1018. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -0
  1019. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +116 -0
  1020. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -0
  1021. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +76 -0
  1022. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -0
  1023. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +120 -0
  1024. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -0
  1025. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +188 -0
  1026. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -0
  1027. package/fesm2022/provoly-dashboard-pipeline.mjs +1183 -0
  1028. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -0
  1029. package/fesm2022/provoly-dashboard-presentation.mjs +498 -0
  1030. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -0
  1031. package/fesm2022/provoly-dashboard-restitution.mjs +557 -0
  1032. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -0
  1033. package/fesm2022/provoly-dashboard-search.mjs +2590 -0
  1034. package/fesm2022/provoly-dashboard-search.mjs.map +1 -0
  1035. package/fesm2022/provoly-dashboard-supervision.mjs +866 -0
  1036. package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -0
  1037. package/fesm2022/provoly-dashboard-toolbox.mjs +774 -0
  1038. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -0
  1039. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +60 -0
  1040. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -0
  1041. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +39 -0
  1042. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -0
  1043. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1228 -0
  1044. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -0
  1045. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1238 -0
  1046. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -0
  1047. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +230 -0
  1048. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -0
  1049. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +656 -0
  1050. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -0
  1051. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +173 -0
  1052. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -0
  1053. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +67 -0
  1054. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -0
  1055. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +2055 -0
  1056. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -0
  1057. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +464 -0
  1058. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -0
  1059. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +148 -0
  1060. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -0
  1061. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +219 -0
  1062. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -0
  1063. package/fesm2022/provoly-dashboard.mjs +10650 -0
  1064. package/fesm2022/provoly-dashboard.mjs.map +1 -0
  1065. package/filters/date/date-filter.component.d.ts +17 -0
  1066. package/filters/date/date-filter.module.d.ts +15 -0
  1067. package/filters/date/index.d.ts +5 -0
  1068. package/filters/date/public-api.d.ts +3 -0
  1069. package/filters/date/style/_m-date.scss +6 -0
  1070. package/filters/date/style/css.component.d.ts +5 -0
  1071. package/filters/list/index.d.ts +5 -0
  1072. package/filters/list/list-filter.component.d.ts +12 -0
  1073. package/filters/list/list-filter.module.d.ts +14 -0
  1074. package/filters/list/public-api.d.ts +3 -0
  1075. package/filters/list/style/_m-list.scss +7 -0
  1076. package/filters/list/style/css.component.d.ts +5 -0
  1077. package/filters/number/index.d.ts +5 -0
  1078. package/filters/number/number-filter.component.d.ts +11 -0
  1079. package/filters/number/number-filter.module.d.ts +14 -0
  1080. package/filters/number/public-api.d.ts +2 -0
  1081. package/filters/text/index.d.ts +5 -0
  1082. package/filters/text/public-api.d.ts +2 -0
  1083. package/filters/text/text-filter.component.d.ts +12 -0
  1084. package/filters/text/text-filter.module.d.ts +14 -0
  1085. package/import/components/import.component.d.ts +29 -0
  1086. package/import/i18n/en.translations.d.ts +27 -0
  1087. package/import/i18n/fr.translations.d.ts +27 -0
  1088. package/import/import-routing.module.d.ts +7 -0
  1089. package/import/import.module.d.ts +17 -0
  1090. package/import/index.d.ts +5 -0
  1091. package/import/public-api.d.ts +2 -0
  1092. package/import/store/import.actions.d.ts +33 -0
  1093. package/import/store/import.effects.d.ts +18 -0
  1094. package/import/store/import.reducer.d.ts +11 -0
  1095. package/import/store/import.selectors.d.ts +9 -0
  1096. package/import/store/import.service.d.ts +12 -0
  1097. package/import/style/_o-import.scss +51 -0
  1098. package/import/style/css.component.d.ts +5 -0
  1099. package/index.d.ts +5 -0
  1100. package/lib/core/access/access.directive.d.ts +16 -0
  1101. package/lib/core/access/access.guard.d.ts +13 -0
  1102. package/lib/core/access/access.model.d.ts +24 -0
  1103. package/lib/core/access/access.service.d.ts +13 -0
  1104. package/lib/core/access/access.utils.d.ts +6 -0
  1105. package/lib/core/components/base-layout/base-layout.component.d.ts +20 -0
  1106. package/lib/core/components/base-menu/base-menu.component.d.ts +27 -0
  1107. package/lib/core/components/base-toolbox/base-toolbox-action.interface.d.ts +12 -0
  1108. package/lib/core/components/base-toolbox/base-toolbox.component.d.ts +10 -0
  1109. package/lib/core/components/base-toolbox-action/base-toolbox-action.component.d.ts +23 -0
  1110. package/lib/core/components/date-picker/date-picker.component.d.ts +47 -0
  1111. package/lib/core/components/date-picker/date-picker.module.d.ts +14 -0
  1112. package/lib/core/components/date-picker/date-range-highlight.pipe.d.ts +8 -0
  1113. package/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.d.ts +26 -0
  1114. package/lib/core/components/date-picker/time-picker/time-picker.component.d.ts +28 -0
  1115. package/lib/core/components/edit-input/edit-input.component.d.ts +21 -0
  1116. package/lib/core/components/edit-input/edit-input.module.d.ts +11 -0
  1117. package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +16 -0
  1118. package/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.d.ts +12 -0
  1119. package/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.d.ts +9 -0
  1120. package/lib/core/components/icon/icon.component.d.ts +32 -0
  1121. package/lib/core/components/icon/icon.module.d.ts +8 -0
  1122. package/lib/core/components/modal/modal.component.d.ts +11 -0
  1123. package/lib/core/components/modal/pry-modal.module.d.ts +11 -0
  1124. package/lib/core/components/modalStatus/modalStatus.component.d.ts +17 -0
  1125. package/lib/core/components/modalStatus/modalStatus.module.d.ts +13 -0
  1126. package/lib/core/components/nq-color-selector/nq-color-selector.component.d.ts +23 -0
  1127. package/lib/core/components/overlay/dialog-confirm.component.d.ts +29 -0
  1128. package/lib/core/components/overlay/dialog-ref.d.ts +9 -0
  1129. package/lib/core/components/overlay/dialog.service.d.ts +27 -0
  1130. package/lib/core/components/overlay/overlay.constantes.d.ts +4 -0
  1131. package/lib/core/components/overlay/overlay.directive.d.ts +27 -0
  1132. package/lib/core/components/overlay/overlay.module.d.ts +13 -0
  1133. package/lib/core/components/overlay/tooltip.directive.d.ts +28 -0
  1134. package/lib/core/components/range/range.component.d.ts +35 -0
  1135. package/lib/core/components/range/range.module.d.ts +9 -0
  1136. package/lib/core/components/select/select.component.d.ts +42 -0
  1137. package/lib/core/components/select/select.module.d.ts +12 -0
  1138. package/lib/core/components/select-image/select-image.component.d.ts +28 -0
  1139. package/lib/core/components/share/share.component.d.ts +31 -0
  1140. package/lib/core/components/share/share.model.d.ts +9 -0
  1141. package/lib/core/components/share/share.module.d.ts +11 -0
  1142. package/lib/core/components/snackbar/snack.interface.d.ts +6 -0
  1143. package/lib/core/components/snackbar/snackbar/snackbar.component.d.ts +25 -0
  1144. package/lib/core/components/snackbar/snackbar.module.d.ts +9 -0
  1145. package/lib/core/components/snackbar/snackbar.service.d.ts +22 -0
  1146. package/lib/core/components/sort/sort-data.pipe.d.ts +10 -0
  1147. package/lib/core/components/sort/sort-header/sort-header.component.d.ts +16 -0
  1148. package/lib/core/components/sort/sort-header.directive.d.ts +5 -0
  1149. package/lib/core/components/sort/sort-table.directive.d.ts +17 -0
  1150. package/lib/core/components/sort/sort.model.d.ts +4 -0
  1151. package/lib/core/components/sort/sort.module.d.ts +12 -0
  1152. package/lib/core/components/title-presentation/title-presentation.component.d.ts +12 -0
  1153. package/lib/core/components/toggle/toggle.component.d.ts +31 -0
  1154. package/lib/core/components/toggle/toggle.module.d.ts +10 -0
  1155. package/lib/core/components/translate-id/translate-id.pipe.d.ts +20 -0
  1156. package/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +18 -0
  1157. package/lib/core/components/upload/upload.component.d.ts +19 -0
  1158. package/lib/core/core.module.d.ts +36 -0
  1159. package/lib/core/errors/http-error-interceptor.service.d.ts +16 -0
  1160. package/lib/core/i18n/deep-merge.function.d.ts +1 -0
  1161. package/lib/core/i18n/en.translations.d.ts +322 -0
  1162. package/lib/core/i18n/fr.translations.d.ts +322 -0
  1163. package/lib/core/i18n/i18n.module.d.ts +7 -0
  1164. package/lib/core/i18n/i18n.pipe.d.ts +16 -0
  1165. package/lib/core/i18n/i18n.service.d.ts +35 -0
  1166. package/lib/core/model/admin-api.model.d.ts +111 -0
  1167. package/lib/core/model/dataset.interface.d.ts +29 -0
  1168. package/lib/core/model/filter.interface.d.ts +20 -0
  1169. package/lib/core/model/item.interface.d.ts +38 -0
  1170. package/lib/core/model/manifest.interface.d.ts +84 -0
  1171. package/lib/core/model/mimetype-resultset.constant.d.ts +1 -0
  1172. package/lib/core/model/notification-interface.d.ts +13 -0
  1173. package/lib/core/model/public-api.d.ts +24 -0
  1174. package/lib/core/model/relation.interface.d.ts +5 -0
  1175. package/lib/core/model/result-order.interface.d.ts +5 -0
  1176. package/lib/core/model/result-set.interface.d.ts +19 -0
  1177. package/lib/core/model/search-mono-class.model.d.ts +49 -0
  1178. package/lib/core/model/search-multi-class.model.d.ts +38 -0
  1179. package/lib/core/model/tooltip-of-class.interface.d.ts +4 -0
  1180. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +60 -0
  1181. package/lib/core/model/widget-chart-manifest.interface.d.ts +150 -0
  1182. package/lib/core/model/widget-detail-manifest.interface.d.ts +4 -0
  1183. package/lib/core/model/widget-graph-manifest.interface.d.ts +14 -0
  1184. package/lib/core/model/widget-iframe-manifest.interface.d.ts +3 -0
  1185. package/lib/core/model/widget-image-manifest.interface.d.ts +4 -0
  1186. package/lib/core/model/widget-map-manifest.interface.d.ts +97 -0
  1187. package/lib/core/model/widget-table-manifest.interface.d.ts +9 -0
  1188. package/lib/core/model/widget-template-manifest.interface.d.ts +5 -0
  1189. package/lib/core/model/widget-tile-manifest.interface.d.ts +10 -0
  1190. package/lib/core/model/widget.interface.d.ts +13 -0
  1191. package/lib/core/public-api.d.ts +113 -0
  1192. package/lib/core/store/category/category.actions.d.ts +14 -0
  1193. package/lib/core/store/category/category.effects.d.ts +15 -0
  1194. package/lib/core/store/category/category.interface.d.ts +4 -0
  1195. package/lib/core/store/category/category.reducer.d.ts +11 -0
  1196. package/lib/core/store/category/category.selectors.d.ts +6 -0
  1197. package/lib/core/store/category/category.service.d.ts +13 -0
  1198. package/lib/core/store/class/class.actions.d.ts +37 -0
  1199. package/lib/core/store/class/class.effects.d.ts +25 -0
  1200. package/lib/core/store/class/class.interface.d.ts +19 -0
  1201. package/lib/core/store/class/class.reducer.d.ts +15 -0
  1202. package/lib/core/store/class/class.selectors.d.ts +14 -0
  1203. package/lib/core/store/class/class.service.d.ts +22 -0
  1204. package/lib/core/store/config/config.actions.d.ts +185 -0
  1205. package/lib/core/store/config/config.effects.d.ts +51 -0
  1206. package/lib/core/store/config/config.reducer.d.ts +37 -0
  1207. package/lib/core/store/config/config.selectors.d.ts +52 -0
  1208. package/lib/core/store/config/config.service.d.ts +51 -0
  1209. package/lib/core/store/config/config.widget.constants.d.ts +12 -0
  1210. package/lib/core/store/config/icon-definitions.interface.d.ts +34 -0
  1211. package/lib/core/store/config/open-map-tiles.service.d.ts +17 -0
  1212. package/lib/core/store/context-menu/context-menu.actions.d.ts +18 -0
  1213. package/lib/core/store/context-menu/context-menu.effects.d.ts +8 -0
  1214. package/lib/core/store/context-menu/context-menu.reducer.d.ts +12 -0
  1215. package/lib/core/store/context-menu/context-menu.selectors.d.ts +16 -0
  1216. package/lib/core/store/data-source/data-source.actions.d.ts +238 -0
  1217. package/lib/core/store/data-source/data-source.effects.d.ts +106 -0
  1218. package/lib/core/store/data-source/data-source.model.d.ts +32 -0
  1219. package/lib/core/store/data-source/data-source.reducer.d.ts +21 -0
  1220. package/lib/core/store/data-source/data-source.selectors.d.ts +31 -0
  1221. package/lib/core/store/data-source/data-source.service.d.ts +40 -0
  1222. package/lib/core/store/data-source/named-query-types.model.d.ts +5 -0
  1223. package/lib/core/store/data-source/named-query-utils.d.ts +6 -0
  1224. package/lib/core/store/field/field.actions.d.ts +14 -0
  1225. package/lib/core/store/field/field.effects.d.ts +15 -0
  1226. package/lib/core/store/field/field.interface.d.ts +21 -0
  1227. package/lib/core/store/field/field.reducer.d.ts +11 -0
  1228. package/lib/core/store/field/field.selectors.d.ts +7 -0
  1229. package/lib/core/store/field/field.service.d.ts +15 -0
  1230. package/lib/core/store/image/image.actions.d.ts +32 -0
  1231. package/lib/core/store/image/image.effects.d.ts +20 -0
  1232. package/lib/core/store/image/image.reducer.d.ts +9 -0
  1233. package/lib/core/store/image/image.selectors.d.ts +7 -0
  1234. package/lib/core/store/image/image.service.d.ts +29 -0
  1235. package/lib/core/store/item/item.actions.d.ts +18 -0
  1236. package/lib/core/store/item/item.effects.d.ts +27 -0
  1237. package/lib/core/store/item/item.service.d.ts +28 -0
  1238. package/lib/core/store/raw/raw.service.d.ts +18 -0
  1239. package/lib/core/store/relation-types/relation-types.actions.d.ts +65 -0
  1240. package/lib/core/store/relation-types/relation-types.effects.d.ts +31 -0
  1241. package/lib/core/store/relation-types/relation-types.interface.d.ts +8 -0
  1242. package/lib/core/store/relation-types/relation-types.reducer.d.ts +11 -0
  1243. package/lib/core/store/relation-types/relation-types.selectors.d.ts +8 -0
  1244. package/lib/core/store/relation-types/relation-types.service.d.ts +17 -0
  1245. package/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.d.ts +2 -0
  1246. package/lib/core/store/search/search.actions.d.ts +33 -0
  1247. package/lib/core/store/search/search.constants.d.ts +2 -0
  1248. package/lib/core/store/search/search.effects.d.ts +33 -0
  1249. package/lib/core/store/search/search.reducer.d.ts +10 -0
  1250. package/lib/core/store/search/search.selectors.d.ts +5 -0
  1251. package/lib/core/store/search/search.service.d.ts +50 -0
  1252. package/lib/core/symbol/symbol.service.d.ts +27 -0
  1253. package/lib/core/toolbox/toolbox-manifest.service.d.ts +21 -0
  1254. package/lib/core/toolbox/toolbox-menu.service.d.ts +45 -0
  1255. package/lib/core/ws/websocket.service.d.ts +26 -0
  1256. package/lib/dashboard/action-bus/bus-action.interface.d.ts +4 -0
  1257. package/lib/dashboard/action-bus/effect/action-bus.effects.d.ts +13 -0
  1258. package/lib/dashboard/action-bus/service/bus.service.d.ts +22 -0
  1259. package/lib/dashboard/action-bus/service/control-message.interface.d.ts +6 -0
  1260. package/lib/dashboard/base-widget.module.d.ts +9 -0
  1261. package/lib/dashboard/components/context-menu/context-menu.component.d.ts +59 -0
  1262. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +78 -0
  1263. package/lib/dashboard/components/dashboard.component.d.ts +99 -0
  1264. package/lib/dashboard/components/manifests/manifests.component.d.ts +20 -0
  1265. package/lib/dashboard/components/metadata/metadata.component.d.ts +16 -0
  1266. package/lib/dashboard/components/solve-collisions.function.d.ts +15 -0
  1267. package/lib/dashboard/components/subscriptionner.directive.d.ts +9 -0
  1268. package/lib/dashboard/components/vizualize-raw/vizualize-raw.component.d.ts +26 -0
  1269. package/lib/dashboard/components/widgets/base-widget.component.d.ts +36 -0
  1270. package/lib/dashboard/components/widgets/data-widget.component.d.ts +20 -0
  1271. package/lib/dashboard/components/widgets/header/resultset-size.pipe.d.ts +18 -0
  1272. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +115 -0
  1273. package/lib/dashboard/components/widgets/public-api.d.ts +9 -0
  1274. package/lib/dashboard/components/widgets/settings/settings.component.d.ts +35 -0
  1275. package/lib/dashboard/components/widgets/widget-filler/widget-filler.component.d.ts +10 -0
  1276. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +24 -0
  1277. package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +34 -0
  1278. package/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.d.ts +11 -0
  1279. package/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.d.ts +9 -0
  1280. package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +39 -0
  1281. package/lib/dashboard/dashboard.module.d.ts +59 -0
  1282. package/lib/dashboard/date-utils.d.ts +3 -0
  1283. package/lib/dashboard/filter/base-filter.component.d.ts +13 -0
  1284. package/lib/dashboard/filter/base-filter.module.d.ts +9 -0
  1285. package/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.d.ts +20 -0
  1286. package/lib/dashboard/filter/filter-factory.service.d.ts +40 -0
  1287. package/lib/dashboard/filter/filter-loader.function.d.ts +3 -0
  1288. package/lib/dashboard/filter/public-api.d.ts +5 -0
  1289. package/lib/dashboard/guard/default-view.guard.d.ts +14 -0
  1290. package/lib/dashboard/item-utils.d.ts +35 -0
  1291. package/lib/dashboard/public-api.d.ts +30 -0
  1292. package/lib/dashboard/resultset-utils.d.ts +4 -0
  1293. package/lib/dashboard/store/dashboard-init.service.d.ts +20 -0
  1294. package/lib/dashboard/store/dashboard.actions.d.ts +455 -0
  1295. package/lib/dashboard/store/dashboard.contants.d.ts +4 -0
  1296. package/lib/dashboard/store/dashboard.effects.d.ts +226 -0
  1297. package/lib/dashboard/store/dashboard.reducers.d.ts +48 -0
  1298. package/lib/dashboard/store/dashboard.selectors.d.ts +374 -0
  1299. package/lib/dashboard/store/geocoding.service.d.ts +56 -0
  1300. package/lib/dashboard/store/manifest.service.d.ts +26 -0
  1301. package/lib/dashboard/store/refresh.service.d.ts +12 -0
  1302. package/lib/dashboard/store/title.service.d.ts +17 -0
  1303. package/lib/dashboard/tooltip/base-tooltip.component.d.ts +15 -0
  1304. package/lib/dashboard/tooltip/base-tooltip.module.d.ts +9 -0
  1305. package/lib/dashboard/tooltip/components/default/default.tooltip.component.d.ts +6 -0
  1306. package/lib/dashboard/tooltip/public-api.d.ts +5 -0
  1307. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +42 -0
  1308. package/lib/dashboard/tooltip/tooltip-loader.function.d.ts +3 -0
  1309. package/lib/dashboard/widget-loader.function.d.ts +3 -0
  1310. package/notification/components/notification/content/notification-content.component.d.ts +25 -0
  1311. package/notification/components/notification/notification.component.d.ts +20 -0
  1312. package/notification/i18n/en.translations.d.ts +22 -0
  1313. package/notification/i18n/fr.translations.d.ts +22 -0
  1314. package/notification/index.d.ts +5 -0
  1315. package/notification/notification.module.d.ts +17 -0
  1316. package/notification/public-api.d.ts +9 -0
  1317. package/notification/store/notification.actions.d.ts +20 -0
  1318. package/notification/store/notification.effects.d.ts +18 -0
  1319. package/notification/store/notification.reducer.d.ts +6 -0
  1320. package/notification/store/notification.selectors.d.ts +5 -0
  1321. package/notification/store/notification.service.d.ts +12 -0
  1322. package/notification/style/_m-notifications.scss +127 -0
  1323. package/notification/style/css.component.d.ts +5 -0
  1324. package/package.json +266 -0
  1325. package/pipeline/components/pipeline-details/pipeline-details.component.d.ts +27 -0
  1326. package/pipeline/components/pipeline-editor/graph-serializer.utils.d.ts +8 -0
  1327. package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +73 -0
  1328. package/pipeline/components/pipeline-editor/pipeline.interface.d.ts +52 -0
  1329. package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +46 -0
  1330. package/pipeline/components/pipeline-properties-panel.component.d.ts +11 -0
  1331. package/pipeline/factory/pipeline-component-factory.service.d.ts +29 -0
  1332. package/pipeline/i18n/en.translations.d.ts +73 -0
  1333. package/pipeline/i18n/fr.translations.d.ts +73 -0
  1334. package/pipeline/index.d.ts +5 -0
  1335. package/pipeline/node-class/base-node.class.d.ts +13 -0
  1336. package/pipeline/pipeline.module.d.ts +20 -0
  1337. package/pipeline/public-api.d.ts +16 -0
  1338. package/pipeline/store/pipeline.actions.d.ts +81 -0
  1339. package/pipeline/store/pipeline.effects.d.ts +30 -0
  1340. package/pipeline/store/pipeline.reducer.d.ts +13 -0
  1341. package/pipeline/store/pipeline.selectors.d.ts +8 -0
  1342. package/pipeline/store/pipeline.service.d.ts +19 -0
  1343. package/pipeline/style/_o-pipeline.scss +274 -0
  1344. package/pipeline/style/css.component.d.ts +5 -0
  1345. package/pipeline-components/filter/component/filter.component.d.ts +16 -0
  1346. package/pipeline-components/filter/filter.module.d.ts +15 -0
  1347. package/pipeline-components/filter/i18n/en.translations.d.ts +15 -0
  1348. package/pipeline-components/filter/i18n/fr.translations.d.ts +15 -0
  1349. package/pipeline-components/filter/index.d.ts +5 -0
  1350. package/pipeline-components/filter/node-class/filter-node.class.d.ts +4 -0
  1351. package/pipeline-components/filter/public-api.d.ts +3 -0
  1352. package/pipeline-components/input-datasource/component/input-datasource.component.d.ts +13 -0
  1353. package/pipeline-components/input-datasource/i18n/en.translations.d.ts +10 -0
  1354. package/pipeline-components/input-datasource/i18n/fr.translations.d.ts +10 -0
  1355. package/pipeline-components/input-datasource/index.d.ts +5 -0
  1356. package/pipeline-components/input-datasource/input-datasource.module.d.ts +17 -0
  1357. package/pipeline-components/input-datasource/node-class/input-datasourse-node.class.d.ts +5 -0
  1358. package/pipeline-components/input-datasource/public-api.d.ts +3 -0
  1359. package/pipeline-components/noop/component/noop.component.d.ts +7 -0
  1360. package/pipeline-components/noop/index.d.ts +5 -0
  1361. package/pipeline-components/noop/node-class/noop-node.class.d.ts +4 -0
  1362. package/pipeline-components/noop/noop.module.d.ts +13 -0
  1363. package/pipeline-components/noop/public-api.d.ts +3 -0
  1364. package/pipeline-components/output-dataset/component/output-dataset.component.d.ts +13 -0
  1365. package/pipeline-components/output-dataset/i18n/en.translations.d.ts +9 -0
  1366. package/pipeline-components/output-dataset/i18n/fr.translations.d.ts +9 -0
  1367. package/pipeline-components/output-dataset/index.d.ts +5 -0
  1368. package/pipeline-components/output-dataset/node-class/output-dataset-node.class.d.ts +5 -0
  1369. package/pipeline-components/output-dataset/output-dataset.module.d.ts +17 -0
  1370. package/pipeline-components/output-dataset/public-api.d.ts +3 -0
  1371. package/pipeline-components/subgraph/component/empty.component.d.ts +7 -0
  1372. package/pipeline-components/subgraph/index.d.ts +5 -0
  1373. package/pipeline-components/subgraph/node-class/sub-graph-input.class.d.ts +4 -0
  1374. package/pipeline-components/subgraph/node-class/sub-graph-node.class.d.ts +17 -0
  1375. package/pipeline-components/subgraph/node-class/sub-graph-output.class.d.ts +4 -0
  1376. package/pipeline-components/subgraph/public-api.d.ts +5 -0
  1377. package/pipeline-components/subgraph/subgraph.module.d.ts +13 -0
  1378. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +28 -0
  1379. package/presentation/components/presentation.component.d.ts +55 -0
  1380. package/presentation/i18n/en.translations.d.ts +39 -0
  1381. package/presentation/i18n/fr.translations.d.ts +40 -0
  1382. package/presentation/index.d.ts +5 -0
  1383. package/presentation/presentation.module.d.ts +18 -0
  1384. package/presentation/public-api.d.ts +4 -0
  1385. package/presentation/style/_o-pry-new-presentation.scss +78 -0
  1386. package/presentation/style/_o-pry-presentation.scss +93 -0
  1387. package/presentation/style/css.component.d.ts +5 -0
  1388. package/public-api.d.ts +2 -0
  1389. package/restitution/components/restitution/restitution.component.d.ts +54 -0
  1390. package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +40 -0
  1391. package/restitution/components/restitution-list/restitution-list.component.d.ts +33 -0
  1392. package/restitution/i18n/en.translations.d.ts +43 -0
  1393. package/restitution/i18n/fr.translations.d.ts +43 -0
  1394. package/restitution/index.d.ts +5 -0
  1395. package/restitution/model/restitution.model.d.ts +8 -0
  1396. package/restitution/public-api.d.ts +4 -0
  1397. package/restitution/restitution.module.d.ts +21 -0
  1398. package/restitution/style/_o-restitution-list.scss +161 -0
  1399. package/restitution/style/_o-restitution.scss +32 -0
  1400. package/restitution/style/css.component.d.ts +5 -0
  1401. package/search/components/choose-widget/choose-widget.component.d.ts +34 -0
  1402. package/search/components/edit-named-query/edit-named-query.component.d.ts +37 -0
  1403. package/search/components/edit-named-query-modal/edit-named-query-modal.component.d.ts +17 -0
  1404. package/search/components/save-query/save-query.component.d.ts +36 -0
  1405. package/search/components/save-query-button/save-query-button.component.d.ts +23 -0
  1406. package/search/i18n/en.translations.d.ts +131 -0
  1407. package/search/i18n/fr.translations.d.ts +131 -0
  1408. package/search/index.d.ts +5 -0
  1409. package/search/public-api.d.ts +12 -0
  1410. package/search/search-fulltext/search-fulltext/search-fulltext.component.d.ts +56 -0
  1411. package/search/search-fulltext/store/search-fulltext.actions.d.ts +21 -0
  1412. package/search/search-fulltext/store/search-fulltext.effects.d.ts +25 -0
  1413. package/search/search-fulltext/store/search-fulltext.service.d.ts +7 -0
  1414. package/search/search-home/search-home.component.d.ts +76 -0
  1415. package/search/search-mono-class/components/search-composed/search-composed.component.d.ts +27 -0
  1416. package/search/search-mono-class/components/search-condition/search-condition.component.d.ts +42 -0
  1417. package/search/search-mono-class/components/search-mono-class/search-mono-class.component.d.ts +15 -0
  1418. package/search/search-mono-class/components/search-order/search-order.component.d.ts +25 -0
  1419. package/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.d.ts +16 -0
  1420. package/search/search-mono-class/store/search-mono-class.actions.d.ts +119 -0
  1421. package/search/search-mono-class/store/search-mono-class.effects.d.ts +64 -0
  1422. package/search/search-mono-class/store/search-mono-class.reducer.d.ts +10 -0
  1423. package/search/search-mono-class/store/search-mono-class.selectors.d.ts +13 -0
  1424. package/search/search-mono-class/store/search-mono-class.service.d.ts +20 -0
  1425. package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +39 -0
  1426. package/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.d.ts +24 -0
  1427. package/search/search-multi-class/components/search-multi-class/search-multi-class.component.d.ts +15 -0
  1428. package/search/search-multi-class/store/search-multi-class.actions.d.ts +65 -0
  1429. package/search/search-multi-class/store/search-multi-class.effects.d.ts +39 -0
  1430. package/search/search-multi-class/store/search-multi-class.reducer.d.ts +8 -0
  1431. package/search/search-multi-class/store/search-multi-class.selectors.d.ts +9 -0
  1432. package/search/search-multi-class/store/search-multi-class.service.d.ts +15 -0
  1433. package/search/search-tools/search-tools.component.d.ts +52 -0
  1434. package/search/search.module.d.ts +37 -0
  1435. package/search/style/_m-choose-widget.scss +108 -0
  1436. package/search/style/_m-pry-search-select-attribute.scss +28 -0
  1437. package/search/style/_o-edit-named-query-modal.scss +9 -0
  1438. package/search/style/_o-edit-named-query.scss +29 -0
  1439. package/search/style/_o-multi-class-condition.scss +65 -0
  1440. package/search/style/_o-multi-class-field-selection.scss +64 -0
  1441. package/search/style/_o-pry-search-composed.scss +89 -0
  1442. package/search/style/_o-pry-search-condition.scss +54 -0
  1443. package/search/style/_o-pry-search-home.scss +91 -0
  1444. package/search/style/_o-pry-search-order.scss +14 -0
  1445. package/search/style/_o-pry-search-tools.scss +150 -0
  1446. package/search/style/_o-search-fulltext.scss +154 -0
  1447. package/search/style/_o-search-mono-class.scss +45 -0
  1448. package/search/style/_o-search-multi-class.scss +34 -0
  1449. package/search/style/css.component.d.ts +5 -0
  1450. package/styles/abstracts/_abstracts-overlays.scss +13 -0
  1451. package/styles/abstracts/_abstracts-utils.scss +82 -0
  1452. package/styles/abstracts/_functions.scss +229 -0
  1453. package/styles/abstracts/_index.scss +5 -0
  1454. package/styles/abstracts/_mixins.scss +309 -0
  1455. package/styles/abstracts/_variables.scss +3 -0
  1456. package/styles/base/_custom-scrollbar.scss +9 -0
  1457. package/styles/base/_html-body.scss +5 -0
  1458. package/styles/base/_index.scss +6 -0
  1459. package/styles/base/_normalize.scss +351 -0
  1460. package/styles/base/_reboot.scss +376 -0
  1461. package/styles/base/_typography.scss +25 -0
  1462. package/styles/base/_utils.scss +67 -0
  1463. package/styles/components/_a-badge.scss +8 -0
  1464. package/styles/components/_a-btn.scss +207 -0
  1465. package/styles/components/_a-checkbox.scss +80 -0
  1466. package/styles/components/_a-checkmark.scss +1 -0
  1467. package/styles/components/_a-expandable-value.scss +51 -0
  1468. package/styles/components/_a-form-field.scss +96 -0
  1469. package/styles/components/_a-icon.scss +16 -0
  1470. package/styles/components/_a-label.scss +16 -0
  1471. package/styles/components/_a-link.scss +17 -0
  1472. package/styles/components/_a-loader.scss +30 -0
  1473. package/styles/components/_a-pastille.scss +14 -0
  1474. package/styles/components/_a-pry-select-image.scss +16 -0
  1475. package/styles/components/_a-pry-select.scss +19 -0
  1476. package/styles/components/_a-range-slider.scss +105 -0
  1477. package/styles/components/_a-table.scss +128 -0
  1478. package/styles/components/_a-toggle.scss +150 -0
  1479. package/styles/components/_m-actions-list.scss +25 -0
  1480. package/styles/components/_m-btn-group.scss +58 -0
  1481. package/styles/components/_m-btn-sorttable.scss +75 -0
  1482. package/styles/components/_m-color-selector.scss +58 -0
  1483. package/styles/components/_m-context-menu.scss +52 -0
  1484. package/styles/components/_m-filter.scss +7 -0
  1485. package/styles/components/_m-form-label-field.scss +55 -0
  1486. package/styles/components/_m-form-radio-group.scss +47 -0
  1487. package/styles/components/_m-image-selector.scss +11 -0
  1488. package/styles/components/_m-metadata-tag.scss +55 -0
  1489. package/styles/components/_m-minus-plus.scss +81 -0
  1490. package/styles/components/_m-nav-links.scss +34 -0
  1491. package/styles/components/_m-pry-overlay.scss +56 -0
  1492. package/styles/components/_m-snackbar.scss +52 -0
  1493. package/styles/components/_m-time-picker.scss +55 -0
  1494. package/styles/components/_m-toolbox.scss +21 -0
  1495. package/styles/components/_m-tooltip.scss +91 -0
  1496. package/styles/components/_o-accordion.scss +24 -0
  1497. package/styles/components/_o-card.scss +131 -0
  1498. package/styles/components/_o-cards-list.scss +11 -0
  1499. package/styles/components/_o-dashboard.scss +169 -0
  1500. package/styles/components/_o-datasources.scss +83 -0
  1501. package/styles/components/_o-date-picker.scss +141 -0
  1502. package/styles/components/_o-draggable-menu.scss +54 -0
  1503. package/styles/components/_o-form.scss +29 -0
  1504. package/styles/components/_o-modal.scss +94 -0
  1505. package/styles/components/_o-named-query.scss +43 -0
  1506. package/styles/components/_o-object-panel.scss +109 -0
  1507. package/styles/components/_o-panel.scss +37 -0
  1508. package/styles/components/_o-properties.scss +42 -0
  1509. package/styles/components/_o-pry-admin-classes-customize.scss +130 -0
  1510. package/styles/components/_o-pry-card-menu.scss +105 -0
  1511. package/styles/components/_o-pry-card.scss +97 -0
  1512. package/styles/components/_o-pry-composed-condition.scss +84 -0
  1513. package/styles/components/_o-pry-edit.scss +9 -0
  1514. package/styles/components/_o-pry-expand-panel.scss +36 -0
  1515. package/styles/components/_o-pry-stepper.scss +103 -0
  1516. package/styles/components/_o-search-mono-class.scss +45 -0
  1517. package/styles/components/_o-search-multi-class.scss +34 -0
  1518. package/styles/components/_o-settings.scss +123 -0
  1519. package/styles/components/_o-tabs.scss +108 -0
  1520. package/styles/components/_o-widget.scss +208 -0
  1521. package/styles/components/_overlay.scss +82 -0
  1522. package/styles/layout/_o-base-layout.scss +113 -0
  1523. package/styles/layout/_o-main-layout.scss +38 -0
  1524. package/styles/layout/_o-manifest-layout.scss +89 -0
  1525. package/styles/layout/_o-workspace.scss +61 -0
  1526. package/styles/layout/grid/_grid.scss +141 -0
  1527. package/styles/layout/grid/_visibility.scss +71 -0
  1528. package/styles/layout/grid/mixins/_grid-mixins.scss +368 -0
  1529. package/styles/layout/grid/mixins/_visibility-mixins.scss +115 -0
  1530. package/styles/layout/grid/variables/_grid-variables.scss +41 -0
  1531. package/styles/libs/_reset-lib-ol.scss +35 -0
  1532. package/styles/main.scss +78 -0
  1533. package/styles-theme/abstracts-theme/_abstracts-cards.theme.scss +22 -0
  1534. package/styles-theme/abstracts-theme/_abstracts-overlays.theme.scss +10 -0
  1535. package/styles-theme/abstracts-theme/_index.scss +3 -0
  1536. package/styles-theme/abstracts-theme/_variables.theme.scss +5 -0
  1537. package/styles-theme/abstracts-theme/variables/_index.scss +4 -0
  1538. package/styles-theme/abstracts-theme/variables/_variables-colors.scss +113 -0
  1539. package/styles-theme/abstracts-theme/variables/_variables-decoration.scss +49 -0
  1540. package/styles-theme/abstracts-theme/variables/_variables-fonts.scss +40 -0
  1541. package/styles-theme/abstracts-theme/variables/_variables-typo.scss +138 -0
  1542. package/styles-theme/base-theme/_custom-scrollbar.theme.scss +8 -0
  1543. package/styles-theme/base-theme/_fonts.theme.scss +37 -0
  1544. package/styles-theme/base-theme/_html-body.theme.scss +6 -0
  1545. package/styles-theme/base-theme/_index.scss +4 -0
  1546. package/styles-theme/base-theme/_typography.theme.scss +27 -0
  1547. package/styles-theme/components-theme/_a-badge.theme.scss +21 -0
  1548. package/styles-theme/components-theme/_a-btn.theme.scss +214 -0
  1549. package/styles-theme/components-theme/_a-checkbox.theme.scss +68 -0
  1550. package/styles-theme/components-theme/_a-checkmark.theme.scss +4 -0
  1551. package/styles-theme/components-theme/_a-expandable-value.theme.scss +23 -0
  1552. package/styles-theme/components-theme/_a-form-field.theme.scss +63 -0
  1553. package/styles-theme/components-theme/_a-icon.theme.scss +17 -0
  1554. package/styles-theme/components-theme/_a-label.theme.scss +16 -0
  1555. package/styles-theme/components-theme/_a-link.theme.scss +12 -0
  1556. package/styles-theme/components-theme/_a-pastille.theme.scss +14 -0
  1557. package/styles-theme/components-theme/_a-pry-select.theme.scss +117 -0
  1558. package/styles-theme/components-theme/_a-range-slider.theme.scss +54 -0
  1559. package/styles-theme/components-theme/_a-table.theme.scss +49 -0
  1560. package/styles-theme/components-theme/_a-toggle.theme.scss +62 -0
  1561. package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +45 -0
  1562. package/styles-theme/components-theme/_m-choose-widget.theme.scss +4 -0
  1563. package/styles-theme/components-theme/_m-context-menu.theme.scss +46 -0
  1564. package/styles-theme/components-theme/_m-metadata-tag.theme.scss +17 -0
  1565. package/styles-theme/components-theme/_m-minus-plus.theme.scss +51 -0
  1566. package/styles-theme/components-theme/_m-nav-links.theme.scss +4 -0
  1567. package/styles-theme/components-theme/_m-notifications.theme.scss +90 -0
  1568. package/styles-theme/components-theme/_m-pry-search-select-attribute.theme.scss +15 -0
  1569. package/styles-theme/components-theme/_m-snackbar.theme.scss +42 -0
  1570. package/styles-theme/components-theme/_m-time-picker.theme.scss +36 -0
  1571. package/styles-theme/components-theme/_m-toolbox.theme.scss +15 -0
  1572. package/styles-theme/components-theme/_m-tooltip.theme.scss +66 -0
  1573. package/styles-theme/components-theme/_o-card.theme.scss +45 -0
  1574. package/styles-theme/components-theme/_o-catalog.theme.scss +74 -0
  1575. package/styles-theme/components-theme/_o-datasources.theme.scss +38 -0
  1576. package/styles-theme/components-theme/_o-date-picker.theme.scss +37 -0
  1577. package/styles-theme/components-theme/_o-draggable-menu.theme.scss +26 -0
  1578. package/styles-theme/components-theme/_o-modal.theme.scss +28 -0
  1579. package/styles-theme/components-theme/_o-multi-class-condition.theme.scss +22 -0
  1580. package/styles-theme/components-theme/_o-multi-class-field-selection.theme.scss +43 -0
  1581. package/styles-theme/components-theme/_o-named-query.theme.scss +19 -0
  1582. package/styles-theme/components-theme/_o-object-panel.theme.scss +11 -0
  1583. package/styles-theme/components-theme/_o-panel.theme.scss +18 -0
  1584. package/styles-theme/components-theme/_o-pipeline.theme.scss +88 -0
  1585. package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +14 -0
  1586. package/styles-theme/components-theme/_o-pry-card-menu.theme.scss +55 -0
  1587. package/styles-theme/components-theme/_o-pry-card.theme.scss +44 -0
  1588. package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +60 -0
  1589. package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +18 -0
  1590. package/styles-theme/components-theme/_o-pry-dataset.theme.scss +12 -0
  1591. package/styles-theme/components-theme/_o-pry-expand-panel.theme.scss +12 -0
  1592. package/styles-theme/components-theme/_o-pry-new-presentation.theme.scss +20 -0
  1593. package/styles-theme/components-theme/_o-pry-presentation.theme.scss +39 -0
  1594. package/styles-theme/components-theme/_o-pry-search-composed.theme.scss +44 -0
  1595. package/styles-theme/components-theme/_o-pry-search-condition.theme.scss +10 -0
  1596. package/styles-theme/components-theme/_o-pry-search-home.theme.scss +25 -0
  1597. package/styles-theme/components-theme/_o-pry-search-tools.theme.scss +54 -0
  1598. package/styles-theme/components-theme/_o-pry-stepper.theme.scss +35 -0
  1599. package/styles-theme/components-theme/_o-restitution-list.theme.scss +27 -0
  1600. package/styles-theme/components-theme/_o-restitution.theme.scss +7 -0
  1601. package/styles-theme/components-theme/_o-search-fulltext.theme.scss +83 -0
  1602. package/styles-theme/components-theme/_o-search-multi-class.theme.scss +28 -0
  1603. package/styles-theme/components-theme/_o-select-grid-layout.theme.scss +33 -0
  1604. package/styles-theme/components-theme/_o-settings.theme.scss +64 -0
  1605. package/styles-theme/components-theme/_o-tabs.theme.scss +37 -0
  1606. package/styles-theme/components-theme/_o-widget-detail.theme.scss +21 -0
  1607. package/styles-theme/components-theme/_o-widget-graph.theme.scss +32 -0
  1608. package/styles-theme/components-theme/_o-widget-iframe.theme.scss +30 -0
  1609. package/styles-theme/components-theme/_o-widget-map.theme.scss +5 -0
  1610. package/styles-theme/components-theme/_o-widget-table.theme.scss +18 -0
  1611. package/styles-theme/components-theme/_o-widget-tile.theme.scss +21 -0
  1612. package/styles-theme/components-theme/_o-widget.theme.scss +70 -0
  1613. package/styles-theme/components-theme/_overlay.theme.scss +44 -0
  1614. package/styles-theme/layout-theme/_o-base-layout.theme.scss +24 -0
  1615. package/styles-theme/layout-theme/_o-manifest-layout.theme.scss +33 -0
  1616. package/styles-theme/layout-theme/_o-workspace.theme.scss +18 -0
  1617. package/styles-theme/libs-theme/_reset-lib-ol.theme.scss +38 -0
  1618. package/styles-theme/main-theme.scss +83 -0
  1619. package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +14 -0
  1620. package/supervision/components/supervision-flow/supervision-flow.component.d.ts +14 -0
  1621. package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +18 -0
  1622. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +14 -0
  1623. package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +29 -0
  1624. package/supervision/components/supervision-layout/supervision-layout.component.d.ts +21 -0
  1625. package/supervision/components/supervision-menu/supervision-menu.component.d.ts +13 -0
  1626. package/supervision/components/supervision-title/supervision-title.component.d.ts +11 -0
  1627. package/supervision/components/supervision.component.d.ts +9 -0
  1628. package/supervision/i18n/en.translations.d.ts +57 -0
  1629. package/supervision/i18n/fr.translations.d.ts +57 -0
  1630. package/supervision/index.d.ts +5 -0
  1631. package/supervision/public-api.d.ts +1 -0
  1632. package/supervision/store/supervision-api.model.d.ts +36 -0
  1633. package/supervision/store/supervision.actions.d.ts +121 -0
  1634. package/supervision/store/supervision.effects.d.ts +51 -0
  1635. package/supervision/store/supervision.reducer.d.ts +22 -0
  1636. package/supervision/store/supervision.selectors.d.ts +18 -0
  1637. package/supervision/store/supervision.service.d.ts +19 -0
  1638. package/supervision/supervision-routing.module.d.ts +7 -0
  1639. package/supervision/supervision.module.d.ts +25 -0
  1640. package/toolbox/components/clear-view/clear-view.component.d.ts +10 -0
  1641. package/toolbox/components/drag-widgets/drag-widgets.component.d.ts +19 -0
  1642. package/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.d.ts +12 -0
  1643. package/toolbox/components/filter-settings/filter-settings.component.d.ts +80 -0
  1644. package/toolbox/components/launch-tab/launch-tab.component.d.ts +10 -0
  1645. package/toolbox/components/named-query/named-query.component.d.ts +15 -0
  1646. package/toolbox/components/save-view/save-view.component.d.ts +53 -0
  1647. package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +35 -0
  1648. package/toolbox/components/toolbox.component.d.ts +11 -0
  1649. package/toolbox/index.d.ts +5 -0
  1650. package/toolbox/public-api.d.ts +11 -0
  1651. package/toolbox/style/_o-filter-settings.scss +96 -0
  1652. package/toolbox/style/_o-select-grid-layout.scss +43 -0
  1653. package/toolbox/style/css.component.d.ts +5 -0
  1654. package/toolbox/toolbox.module.d.ts +23 -0
  1655. package/tooltips/attribute/attribute-tooltip.component.d.ts +10 -0
  1656. package/tooltips/attribute/attribute-tooltip.module.d.ts +14 -0
  1657. package/tooltips/attribute/index.d.ts +5 -0
  1658. package/tooltips/attribute/public-api.d.ts +2 -0
  1659. package/tooltips/cluster/cluster-tooltip.component.d.ts +6 -0
  1660. package/tooltips/cluster/cluster-tooltip.module.d.ts +13 -0
  1661. package/tooltips/cluster/index.d.ts +5 -0
  1662. package/tooltips/cluster/public-api.d.ts +2 -0
  1663. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +101 -0
  1664. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +103 -0
  1665. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +103 -0
  1666. package/widgets/widget-aggregated-chart/index.d.ts +5 -0
  1667. package/widgets/widget-aggregated-chart/public-api.d.ts +5 -0
  1668. package/widgets/widget-aggregated-chart/service/backend-aggregation.service.d.ts +21 -0
  1669. package/widgets/widget-aggregated-chart/service/base-aggregation.service.d.ts +21 -0
  1670. package/widgets/widget-aggregated-chart/service/frontend-aggregation.service.d.ts +32 -0
  1671. package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +43 -0
  1672. package/widgets/widget-aggregated-chart/style/css.component.d.ts +5 -0
  1673. package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +18 -0
  1674. package/widgets/widget-chart/component/vega-error.handler.d.ts +6 -0
  1675. package/widgets/widget-chart/component/vega-spec.constant.d.ts +98 -0
  1676. package/widgets/widget-chart/component/widget-chart.component.d.ts +151 -0
  1677. package/widgets/widget-chart/i18n/en.translations.d.ts +113 -0
  1678. package/widgets/widget-chart/i18n/fr.translations.d.ts +113 -0
  1679. package/widgets/widget-chart/index.d.ts +5 -0
  1680. package/widgets/widget-chart/public-api.d.ts +2 -0
  1681. package/widgets/widget-chart/style/_o-widget-chart.scss +43 -0
  1682. package/widgets/widget-chart/style/css.component.d.ts +5 -0
  1683. package/widgets/widget-chart/widget-chart.module.d.ts +18 -0
  1684. package/widgets/widget-detail/component/widget-detail.component.d.ts +45 -0
  1685. package/widgets/widget-detail/i18n/en.translations.d.ts +13 -0
  1686. package/widgets/widget-detail/i18n/fr.translations.d.ts +13 -0
  1687. package/widgets/widget-detail/index.d.ts +5 -0
  1688. package/widgets/widget-detail/public-api.d.ts +2 -0
  1689. package/widgets/widget-detail/style/_o-widget-detail.scss +60 -0
  1690. package/widgets/widget-detail/style/css.component.d.ts +5 -0
  1691. package/widgets/widget-detail/widget-detail.module.d.ts +18 -0
  1692. package/widgets/widget-graph/component/widget-graph.component.d.ts +101 -0
  1693. package/widgets/widget-graph/i18n/en.translations.d.ts +14 -0
  1694. package/widgets/widget-graph/i18n/fr.translations.d.ts +14 -0
  1695. package/widgets/widget-graph/index.d.ts +5 -0
  1696. package/widgets/widget-graph/layout/node.interface.d.ts +12 -0
  1697. package/widgets/widget-graph/layout/simple.function.d.ts +9 -0
  1698. package/widgets/widget-graph/public-api.d.ts +3 -0
  1699. package/widgets/widget-graph/style/_o-widget-graph.scss +4 -0
  1700. package/widgets/widget-graph/style/css.component.d.ts +5 -0
  1701. package/widgets/widget-graph/widget-graph.module.d.ts +18 -0
  1702. package/widgets/widget-iframe/component/widget-iframe.component.d.ts +20 -0
  1703. package/widgets/widget-iframe/i18n/en.translations.d.ts +10 -0
  1704. package/widgets/widget-iframe/i18n/fr.translations.d.ts +10 -0
  1705. package/widgets/widget-iframe/index.d.ts +5 -0
  1706. package/widgets/widget-iframe/messaging/iframe-message-type.interface.d.ts +8 -0
  1707. package/widgets/widget-iframe/messaging/iframe-messaging.service.d.ts +10 -0
  1708. package/widgets/widget-iframe/public-api.d.ts +4 -0
  1709. package/widgets/widget-iframe/style/_o-widget-iframe.scss +19 -0
  1710. package/widgets/widget-iframe/style/css.component.d.ts +5 -0
  1711. package/widgets/widget-iframe/widget-iframe.module.d.ts +18 -0
  1712. package/widgets/widget-image/component/widget-image.component.d.ts +13 -0
  1713. package/widgets/widget-image/index.d.ts +5 -0
  1714. package/widgets/widget-image/public-api.d.ts +2 -0
  1715. package/widgets/widget-image/style/_o-widget-image.scss +7 -0
  1716. package/widgets/widget-image/style/css.component.d.ts +5 -0
  1717. package/widgets/widget-image/widget-image.module.d.ts +14 -0
  1718. package/widgets/widget-map/component/widget-map-layer.service.d.ts +98 -0
  1719. package/widgets/widget-map/component/widget-map.component.d.ts +136 -0
  1720. package/widgets/widget-map/i18n/en.translations.d.ts +80 -0
  1721. package/widgets/widget-map/i18n/fr.translations.d.ts +80 -0
  1722. package/widgets/widget-map/index.d.ts +5 -0
  1723. package/widgets/widget-map/interaction/selection-interaction.class.d.ts +25 -0
  1724. package/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.d.ts +14 -0
  1725. package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +8 -0
  1726. package/widgets/widget-map/public-api.d.ts +6 -0
  1727. package/widgets/widget-map/reader/kmz-zip-reader.class.d.ts +12 -0
  1728. package/widgets/widget-map/reader/map-formats-reader.class.d.ts +15 -0
  1729. package/widgets/widget-map/reader/random-color-style.function.d.ts +6 -0
  1730. package/widgets/widget-map/reader/read-as-text.class.d.ts +10 -0
  1731. package/widgets/widget-map/reader/shp-zip-reader.class.d.ts +10 -0
  1732. package/widgets/widget-map/search-bar/search-bar.control.d.ts +27 -0
  1733. package/widgets/widget-map/style/_o-layer-legend.scss +42 -0
  1734. package/widgets/widget-map/style/_o-widget-map.scss +69 -0
  1735. package/widgets/widget-map/style/css.component.d.ts +5 -0
  1736. package/widgets/widget-map/utils/widget-map.utils.d.ts +29 -0
  1737. package/widgets/widget-map/widget-map.module.d.ts +20 -0
  1738. package/widgets/widget-table/component/widget-table.component.d.ts +41 -0
  1739. package/widgets/widget-table/expand-value/detach-row.directive.d.ts +12 -0
  1740. package/widgets/widget-table/expand-value/expand-value.component.d.ts +10 -0
  1741. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +12 -0
  1742. package/widgets/widget-table/get-value/get-value.pipe.d.ts +11 -0
  1743. package/widgets/widget-table/i18n/en.translations.d.ts +14 -0
  1744. package/widgets/widget-table/i18n/fr.translations.d.ts +14 -0
  1745. package/widgets/widget-table/index.d.ts +5 -0
  1746. package/widgets/widget-table/public-api.d.ts +5 -0
  1747. package/widgets/widget-table/resizable/resizable.component.d.ts +7 -0
  1748. package/widgets/widget-table/resizable/resizable.directive.d.ts +10 -0
  1749. package/widgets/widget-table/style/_o-widget-table.scss +64 -0
  1750. package/widgets/widget-table/style/css.component.d.ts +5 -0
  1751. package/widgets/widget-table/widget-table.module.d.ts +24 -0
  1752. package/widgets/widget-template/component/widget-template.component.d.ts +21 -0
  1753. package/widgets/widget-template/index.d.ts +5 -0
  1754. package/widgets/widget-template/public-api.d.ts +2 -0
  1755. package/widgets/widget-template/style/_o-widget-template.scss +8 -0
  1756. package/widgets/widget-template/style/css.component.d.ts +5 -0
  1757. package/widgets/widget-template/widget-template.module.d.ts +16 -0
  1758. package/widgets/widget-tile/component/widget-tile.component.d.ts +47 -0
  1759. package/widgets/widget-tile/i18n/en.translations.d.ts +12 -0
  1760. package/widgets/widget-tile/i18n/fr.translations.d.ts +12 -0
  1761. package/widgets/widget-tile/index.d.ts +5 -0
  1762. package/widgets/widget-tile/public-api.d.ts +2 -0
  1763. package/widgets/widget-tile/style/_o-widget-tile.scss +83 -0
  1764. package/widgets/widget-tile/style/css.component.d.ts +5 -0
  1765. package/widgets/widget-tile/widget-tile.module.d.ts +20 -0
@@ -0,0 +1,633 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { ClassSelectors, DataWidgetComponent, FieldSelectors, FieldType, GraphType, Operation, VegaColorType, VegaType, WIDGET_HEADER_HEIGHT } from '@provoly/dashboard';
3
+ import { BehaviorSubject, combineLatest, Subject, switchMap, withLatestFrom } from 'rxjs';
4
+ import { debounceTime, filter, map } from 'rxjs/operators';
5
+ import embed, { vega } from 'vega-embed';
6
+ import { mergeDeep } from 'vega-lite';
7
+ import { fontConfig } from 'vega-lite/build/src/config';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngrx/store";
10
+ import * as i2 from "@provoly/dashboard";
11
+ import * as i3 from "../service/base-aggregation.service";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "@angular/forms";
14
+ import * as i6 from "@provoly/dashboard/components/checkbox";
15
+ import * as i7 from "../style/css.component";
16
+ vega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);
17
+ export class WidgetAggregatedChartComponent extends DataWidgetComponent {
18
+ constructor(store, translateService, el, aggregationService) {
19
+ super(store, el);
20
+ this.translateService = translateService;
21
+ this.aggregationService = aggregationService;
22
+ this.optionsCopy$ = new BehaviorSubject(null);
23
+ this.trigger$ = new Subject();
24
+ this.WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;
25
+ this.GraphType = GraphType;
26
+ this.Operation = Operation;
27
+ this.typeOptions = [];
28
+ this.classes = [];
29
+ this.fields = [];
30
+ this.triggerOrdinateAttributes$ = new Subject();
31
+ this.schemes = [];
32
+ this.schemes = Object.values(VegaColorType).map((id) => ({ id }));
33
+ this.typeOptions = Object.values(GraphType)
34
+ .map((v) => ({
35
+ id: v,
36
+ label: this.translateService.instant('@pry.widget.chart.graphType.' + v)
37
+ }))
38
+ .sort((a, b) => a.label.localeCompare(b.label));
39
+ this.options$ = this.manifest$.pipe(map((manifest) => mergeDeep({
40
+ graph: { type: GraphType.BAR, tooltip: true, legend: false },
41
+ abscissa: { keep0: true },
42
+ ordinate: { keep0: true }
43
+ }, (manifest.options ?? {}))));
44
+ this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {
45
+ this.optionsCopy$.next(JSON.parse(JSON.stringify(options)));
46
+ });
47
+ this.fields$ = this.store.select(FieldSelectors.fields);
48
+ this.classes$ = this.store.select(ClassSelectors.classes);
49
+ this.operations$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(map(([rs, classes, fields]) => classes
50
+ .filter((clazz) => Object.keys(rs.items).includes(clazz.id))
51
+ .map((clazz) => clazz.attributes)
52
+ .map((attrs) => attrs.filter((attr) => {
53
+ const field = fields.find((field) => {
54
+ return field.id === attr.field;
55
+ });
56
+ return !!field && [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(field.type);
57
+ }))
58
+ .reduce((a, b) => [...a, ...b], [])
59
+ .filter((attr) => !!attr)), map((attributes) => (attributes.length > 0 ? Object.values(Operation) : [Operation.COUNT, Operation.DISTINCT, Operation.NONE])
60
+ .map((v) => ({
61
+ id: v,
62
+ label: this.translateService.instant('@pry.widget.chart.operation.' + v)
63
+ }))
64
+ .sort((a, b) => a.label.localeCompare(b.label))));
65
+ this.subscriptions.add(this.fields$.subscribe((fields) => (this.fields = fields)));
66
+ this.subscriptions.add(this.classes$.subscribe((classes) => (this.classes = classes)));
67
+ this.abscissaAttributes$ = combineLatest([this.classes$, this.fields$, this.resultSet$, this.optionsCopy$]).pipe(map(([classes, fields, rs, optionCopy]) => classes
68
+ .filter((clazz) => Object.keys(rs.items).includes(clazz.id))
69
+ .map((clazz) => clazz.attributes)
70
+ .map((attrs) => attrs.filter((attr) => {
71
+ const field = fields.find((field) => {
72
+ return field.id === attr.field;
73
+ });
74
+ return (!!field &&
75
+ field.type !== FieldType.RAW &&
76
+ field.type !== FieldType.STRING &&
77
+ (optionCopy?.graph.type !== GraphType.HISTOGRAM || field.type !== FieldType.KEYWORD));
78
+ }))
79
+ .reduce((a, b) => [...a, ...b], [])));
80
+ this.ordinateAttributes$ = combineLatest([
81
+ this.classes$,
82
+ this.fields$,
83
+ this.resultSet$,
84
+ this.triggerOrdinateAttributes$
85
+ ]).pipe(map(([classes, fields, rs]) => classes
86
+ .filter((clazz) => Object.keys(rs.items).includes(clazz.id))
87
+ .map((clazz) => clazz.attributes)
88
+ .map((attrs) => attrs.filter((attr) => {
89
+ const field = fields.find((field) => {
90
+ return field.id === attr.field;
91
+ });
92
+ if (this.optionsCopy$.value &&
93
+ [
94
+ Operation.MAX,
95
+ Operation.MIN,
96
+ Operation.SUM,
97
+ Operation.Q1,
98
+ Operation.Q3,
99
+ Operation.AVERAGE,
100
+ Operation.MEDIAN,
101
+ Operation.NONE
102
+ ].includes(this.optionsCopy$.value.ordinate.operation)) {
103
+ return (!!field &&
104
+ [FieldType.INTEGER, FieldType.INSTANT, FieldType.LONG, FieldType.DECIMAL].includes(field.type));
105
+ }
106
+ return !!field && field.type !== FieldType.RAW && field.type !== FieldType.STRING;
107
+ }))
108
+ .reduce((a, b) => [...a, ...b], [])));
109
+ this.isChartValid$ = combineLatest([this.options$, this.abscissaAttributes$, this.ordinateAttributes$]).pipe(map(([options, abscissaAttrs, ordinateAttrs]) => {
110
+ return (!!options.abscissa.attribute &&
111
+ abscissaAttrs.map((attr) => attr.id).includes(options.abscissa.attribute) &&
112
+ (options.ordinate.attribute
113
+ ? ordinateAttrs.map((attr) => attr.id).includes(options.ordinate.attribute)
114
+ : true));
115
+ }));
116
+ this.attributeTypes$ = combineLatest([this.options$, this.fields$, this.classes$]).pipe(filter(([options, fields, classes]) => !!options.abscissa && !!options.ordinate), map(([options, fields, classes]) => {
117
+ const abscissa = classes
118
+ .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))
119
+ .find((attr) => !!attr);
120
+ const ordinate = classes
121
+ .map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))
122
+ .find((attr) => !!attr);
123
+ const abscissaFieldType = fields.find((field) => field.id === abscissa?.field)?.type ?? FieldType.STRING;
124
+ const ordinateFieldType = fields.find((field) => field.id === ordinate?.field)?.type ?? FieldType.STRING;
125
+ return {
126
+ abscissa: {
127
+ fieldType: abscissaFieldType,
128
+ vegaType: this.translateToVegaType(abscissaFieldType, abscissa?.name ?? '')
129
+ },
130
+ ordinate: {
131
+ fieldType: ordinateFieldType,
132
+ vegaType: options.ordinate.operation === Operation.COUNT || options.ordinate.operation === Operation.DISTINCT
133
+ ? VegaType.QUANTITATIVE
134
+ : this.translateToVegaType(ordinateFieldType, ordinate?.name ?? '')
135
+ }
136
+ };
137
+ }));
138
+ this.aggregatedValues$ = combineLatest([this.datasourceIds$, this.options$, this.resultSet$]).pipe(switchMap(([datasources, options]) => this.aggregationService.aggregate(datasources, options)), debounceTime(100), withLatestFrom(this.options$), map(([aggregate, options]) => {
139
+ // @ts-ignore
140
+ if (aggregate.values.length > 0 && !aggregate.values[0].groupBy) {
141
+ return {
142
+ operation: aggregate.operation,
143
+ data: aggregate.values.map((value) => ({ ...value, series: options.ordinate.label }))
144
+ };
145
+ }
146
+ const flattened = aggregate.values
147
+ .map((value) => value.groupBy.map((groupBy) => ({
148
+ key: value.key,
149
+ series: groupBy.key,
150
+ value: groupBy.value
151
+ })))
152
+ .reduce((a, b) => [...a, ...b], []);
153
+ return { operation: aggregate.operation, data: flattened };
154
+ }));
155
+ this.noData$ = this.aggregatedValues$.pipe(map(({ operation, data }) => data.length === 0));
156
+ this.vegaLiteSpec$ = combineLatest([
157
+ this.options$,
158
+ this.attributeTypes$,
159
+ this.aggregatedValues$,
160
+ this.widgetSize$.pipe(debounceTime(100)),
161
+ this.displayHeader$
162
+ ]).pipe(map(([options, types, values, size, display]) => {
163
+ const isCircular = [GraphType.CIRCULAR, GraphType.DONUT].includes(options.graph.type);
164
+ return mergeDeep({
165
+ $schema: 'https://vega.github.io/schema/vega-lite/v5.json',
166
+ title: this.getTitle(options),
167
+ width: 'container',
168
+ height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0),
169
+ padding: 10,
170
+ autosize: { type: 'fit', contains: 'padding' },
171
+ data: { values: JSON.parse(JSON.stringify(values.data)) },
172
+ layer: [
173
+ {
174
+ mark: {
175
+ type: options.graph.type.split('-')[0],
176
+ point: options.graph.type.indexOf('point') >= 0,
177
+ line: options.graph.type.indexOf('line') >= 0,
178
+ innerRadius: options.graph.donutSize ?? 30
179
+ },
180
+ encoding: {
181
+ x: !isCircular
182
+ ? {
183
+ field: 'key',
184
+ title: options.abscissa.label,
185
+ type: types.abscissa.vegaType,
186
+ timeUnit: types.abscissa.vegaType === VegaType.TEMPORAL && options.abscissa.limit?.isTimeLimit
187
+ ? options.abscissa.limit.interval
188
+ : undefined,
189
+ bin: options.graph.type.indexOf('histogram') >= 0,
190
+ axis: {
191
+ //format: types.abscissa.vegaType === VegaType.TEMPORAL ? '%Y-%B-%dT%H:%M:%S' : undefined,
192
+ grid: false,
193
+ ...WidgetAggregatedChartComponent.minTick(types.abscissa.fieldType),
194
+ labelExpr: `height < 300 ? ${types.abscissa.vegaType === VegaType.TEMPORAL
195
+ ? "timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')"
196
+ : 'truncate(datum.value, 10)'} : ${types.abscissa.vegaType === VegaType.TEMPORAL
197
+ ? "timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')"
198
+ : 'datum.value'}`
199
+ },
200
+ scale: {
201
+ // Force a false value here so that vega understands properly
202
+ zero: !!options.abscissa.keep0
203
+ //type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined
204
+ }
205
+ }
206
+ : undefined,
207
+ y: !isCircular
208
+ ? {
209
+ field: 'value',
210
+ title: options.ordinate.label,
211
+ type: types.ordinate.vegaType,
212
+ axis: {
213
+ ...WidgetAggregatedChartComponent.minTick(types.ordinate.fieldType),
214
+ ...this.setTickCount(values.data)
215
+ },
216
+ scale: {
217
+ zero: options.ordinate.keep0
218
+ },
219
+ ...(options.graph.stacked ? { stack: true } : {})
220
+ }
221
+ : undefined,
222
+ theta: isCircular ? { field: 'value', type: types.ordinate.vegaType } : undefined,
223
+ color: {
224
+ title: this.translateService.instant(options.groupBy ? '@pry.widget.chart.series' : '@pry.widget.chart.legendLabel'),
225
+ field: !isCircular ? 'series' : 'key',
226
+ legend: options.graph.legend,
227
+ scale: options.graph.legend ? { scheme: options.groupBy?.color ?? this.schemes[0].id } : undefined
228
+ },
229
+ xOffset: options.graph.stacked && options.groupBy ? { field: 'series' } : undefined,
230
+ tooltip: options.graph.tooltip
231
+ ? options.groupBy
232
+ ? [
233
+ {
234
+ field: 'key',
235
+ type: types.abscissa.vegaType,
236
+ title: options.abscissa.label,
237
+ ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})
238
+ },
239
+ { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label },
240
+ {
241
+ field: 'series',
242
+ title: this.translateService.instant('@pry.widget.chart.series'),
243
+ type: 'nominal'
244
+ }
245
+ ]
246
+ : [
247
+ {
248
+ field: 'key',
249
+ type: types.abscissa.vegaType,
250
+ title: options.abscissa.label,
251
+ ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})
252
+ },
253
+ { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label }
254
+ ]
255
+ : undefined
256
+ }
257
+ }
258
+ ],
259
+ config: fontConfig('Ubuntu, sans-serif')
260
+ }, options.additionalSpec);
261
+ }));
262
+ }
263
+ ngAfterViewInit() {
264
+ this.subscriptions.add(combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {
265
+ if (this.vega) {
266
+ this.view?.finalize();
267
+ console.log(spec);
268
+ embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {
269
+ actions: false,
270
+ renderer: 'canvas',
271
+ formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale'),
272
+ timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale')
273
+ }).then((result) => (this.view = result.view));
274
+ }
275
+ else {
276
+ setTimeout(() => this.trigger$.next(), 100);
277
+ }
278
+ }));
279
+ this.trigger$.next();
280
+ }
281
+ translateToVegaType(type, name) {
282
+ let idRegex = new RegExp(/_id|id_|_ID|ID_|_Id|Id_/, 'g');
283
+ if (idRegex.test(name ?? '-------')) {
284
+ return VegaType.ORDINAL;
285
+ }
286
+ switch (type) {
287
+ case FieldType.DECIMAL:
288
+ case FieldType.INTEGER:
289
+ case FieldType.LONG:
290
+ return VegaType.QUANTITATIVE;
291
+ case FieldType.INSTANT:
292
+ return VegaType.TEMPORAL;
293
+ case FieldType.KEYWORD:
294
+ case FieldType.STRING:
295
+ return VegaType.NOMINAL;
296
+ default:
297
+ return VegaType.NOMINAL;
298
+ }
299
+ }
300
+ static minTick(type) {
301
+ switch (type) {
302
+ case FieldType.INTEGER:
303
+ case FieldType.LONG:
304
+ return { tickMinStep: 1 };
305
+ case FieldType.DECIMAL:
306
+ case FieldType.INSTANT:
307
+ case FieldType.KEYWORD:
308
+ case FieldType.STRING:
309
+ default:
310
+ return {};
311
+ }
312
+ }
313
+ emitManifest() {
314
+ this.manifestModified.emit({
315
+ widgetIndex: this.widgetIndex,
316
+ manifest: {
317
+ ...this.manifest,
318
+ options: { ...this.optionsCopy$.getValue() }
319
+ }
320
+ });
321
+ }
322
+ openSettings() {
323
+ this.open$.next(undefined);
324
+ }
325
+ getTitle(options) {
326
+ return options.graph?.title ?? (options.abscissa.label ?? 'key') + ' / ' + (options.ordinate.label ?? 'value');
327
+ }
328
+ changeChartTitle($event) {
329
+ if (this.optionsCopy$.value) {
330
+ this.optionsCopy$.next({
331
+ ...this.optionsCopy$.value,
332
+ graph: { ...this.optionsCopy$.value?.graph, title: $event }
333
+ });
334
+ }
335
+ }
336
+ changeType($event) {
337
+ if (this.optionsCopy$.value) {
338
+ this.optionsCopy$.next({
339
+ ...this.optionsCopy$.value,
340
+ graph: { ...this.optionsCopy$.value?.graph, type: $event }
341
+ });
342
+ if ([GraphType.CIRCULAR, GraphType.DONUT].includes($event)) {
343
+ this.optionsCopy$.next({
344
+ ...this.optionsCopy$.value,
345
+ groupBy: undefined
346
+ });
347
+ }
348
+ if ([GraphType.HISTOGRAM].includes($event)) {
349
+ this.limitElements(true);
350
+ }
351
+ }
352
+ }
353
+ changeDonutSize($event) {
354
+ if (this.optionsCopy$.value) {
355
+ this.optionsCopy$.next({
356
+ ...this.optionsCopy$.value,
357
+ graph: { ...this.optionsCopy$.value?.graph, donutSize: $event }
358
+ });
359
+ }
360
+ }
361
+ changeOperation($event) {
362
+ if (this.optionsCopy$.value) {
363
+ this.optionsCopy$.next({
364
+ ...this.optionsCopy$.value,
365
+ ordinate: { ...this.optionsCopy$.value?.ordinate, operation: $event }
366
+ });
367
+ if ($event === Operation.COUNT || $event === Operation.DISTINCT) {
368
+ this.optionsCopy$.next({
369
+ ...this.optionsCopy$.value,
370
+ ordinate: {
371
+ ...this.optionsCopy$.value?.ordinate,
372
+ label: this.translateService.instant('@pry.widget.chart.operation.' + $event),
373
+ attribute: undefined
374
+ }
375
+ });
376
+ }
377
+ setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);
378
+ }
379
+ }
380
+ changeAbscissa($event) {
381
+ if ($event && this.optionsCopy$.value) {
382
+ this.optionsCopy$.next({
383
+ ...this.optionsCopy$.value,
384
+ abscissa: { ...this.optionsCopy$.value?.abscissa, attribute: $event }
385
+ });
386
+ const attr = this.classes
387
+ .map((clazz) => clazz.attributes)
388
+ .reduce((a, b) => [...a, ...b], [])
389
+ .find((attr) => attr.id === $event);
390
+ this.optionsCopy$.next({
391
+ ...this.optionsCopy$.value,
392
+ abscissa: { ...this.optionsCopy$.value?.abscissa, label: attr?.name ?? 'attr-not-found' }
393
+ });
394
+ this.copyAbscissaField = this.fields.find((field) => attr?.field === field.id);
395
+ this.limitElements(!!this.optionsCopy$.value?.abscissa.limit);
396
+ }
397
+ }
398
+ changeAbscissaLabel($event) {
399
+ if (this.optionsCopy$.value) {
400
+ this.optionsCopy$.next({
401
+ ...this.optionsCopy$.value,
402
+ abscissa: { ...this.optionsCopy$.value?.abscissa, label: $event }
403
+ });
404
+ }
405
+ }
406
+ changeOrdinate($event) {
407
+ if ($event && this.optionsCopy$.value) {
408
+ this.optionsCopy$.next({
409
+ ...this.optionsCopy$.value,
410
+ ordinate: { ...this.optionsCopy$.value?.ordinate, attribute: $event }
411
+ });
412
+ const attr = this.classes
413
+ .map((clazz) => clazz.attributes)
414
+ .reduce((a, b) => [...a, ...b], [])
415
+ .find((attr) => attr.id === $event);
416
+ this.optionsCopy$.next({
417
+ ...this.optionsCopy$.value,
418
+ ordinate: { ...this.optionsCopy$.value?.ordinate, label: attr?.name ?? 'attr-not-found' }
419
+ });
420
+ this.copyOrdinateField = this.fields.find((field) => attr?.field === field.id);
421
+ }
422
+ }
423
+ changeOrdinateLabel($event) {
424
+ if (this.optionsCopy$.value) {
425
+ this.optionsCopy$.next({
426
+ ...this.optionsCopy$.value,
427
+ ordinate: { ...this.optionsCopy$.value?.ordinate, label: $event }
428
+ });
429
+ }
430
+ }
431
+ changeKeep0Abscissa($event) {
432
+ if (this.optionsCopy$.value) {
433
+ this.optionsCopy$.next({
434
+ ...this.optionsCopy$.value,
435
+ abscissa: { ...this.optionsCopy$.value?.abscissa, keep0: $event }
436
+ });
437
+ }
438
+ }
439
+ changeKeep0Ordinate($event) {
440
+ if (this.optionsCopy$.value) {
441
+ this.optionsCopy$.next({
442
+ ...this.optionsCopy$.value,
443
+ ordinate: { ...this.optionsCopy$.value?.ordinate, keep0: $event }
444
+ });
445
+ }
446
+ }
447
+ limitElements($event) {
448
+ if (this.optionsCopy$.value) {
449
+ if ($event) {
450
+ if (this.copyAbscissaField?.type !== FieldType.INSTANT &&
451
+ this.optionsCopy$.value?.abscissa?.limit &&
452
+ 'at' in this.optionsCopy$.value?.abscissa?.limit) {
453
+ this.optionsCopy$.next({
454
+ ...this.optionsCopy$.value,
455
+ abscissa: {
456
+ ...this.optionsCopy$.value?.abscissa,
457
+ limit: {
458
+ at: this.optionsCopy$.value?.abscissa?.limit?.at ?? 3,
459
+ others: false,
460
+ order: 'asc',
461
+ isTimeLimit: false
462
+ }
463
+ }
464
+ });
465
+ }
466
+ else {
467
+ this.optionsCopy$.next({
468
+ ...this.optionsCopy$.value,
469
+ abscissa: { ...this.optionsCopy$.value?.abscissa, limit: { interval: 'second', isTimeLimit: true } }
470
+ });
471
+ }
472
+ }
473
+ else {
474
+ this.optionsCopy$.next({
475
+ ...this.optionsCopy$.value,
476
+ abscissa: { ...this.optionsCopy$.value?.abscissa, limit: undefined }
477
+ });
478
+ }
479
+ }
480
+ }
481
+ changeLimit($event) {
482
+ if (this.optionsCopy$.value &&
483
+ this.optionsCopy$.value.abscissa.limit &&
484
+ !this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
485
+ this.optionsCopy$.next({
486
+ ...this.optionsCopy$.value,
487
+ abscissa: {
488
+ ...this.optionsCopy$.value?.abscissa,
489
+ limit: {
490
+ ...this.optionsCopy$.value?.abscissa.limit,
491
+ at: $event
492
+ }
493
+ }
494
+ });
495
+ }
496
+ }
497
+ changeLimitOthers($event) {
498
+ if (this.optionsCopy$.value &&
499
+ this.optionsCopy$.value.abscissa.limit &&
500
+ !this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
501
+ this.optionsCopy$.next({
502
+ ...this.optionsCopy$.value,
503
+ abscissa: {
504
+ ...this.optionsCopy$.value?.abscissa,
505
+ limit: {
506
+ ...this.optionsCopy$.value?.abscissa.limit,
507
+ others: $event
508
+ }
509
+ }
510
+ });
511
+ }
512
+ }
513
+ changeLimitOrder($event) {
514
+ if (this.optionsCopy$.value &&
515
+ this.optionsCopy$.value.abscissa.limit &&
516
+ !this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
517
+ this.optionsCopy$.next({
518
+ ...this.optionsCopy$.value,
519
+ abscissa: {
520
+ ...this.optionsCopy$.value?.abscissa,
521
+ limit: {
522
+ ...this.optionsCopy$.value?.abscissa.limit,
523
+ order: $event ? 'asc' : 'desc'
524
+ }
525
+ }
526
+ });
527
+ }
528
+ }
529
+ changeTimeLimit($event) {
530
+ if (this.optionsCopy$.value &&
531
+ this.optionsCopy$.value.abscissa.limit &&
532
+ this.optionsCopy$.value.abscissa.limit.isTimeLimit) {
533
+ this.optionsCopy$.next({
534
+ ...this.optionsCopy$.value,
535
+ abscissa: {
536
+ ...this.optionsCopy$.value.abscissa,
537
+ limit: {
538
+ ...this.optionsCopy$.value.abscissa.limit,
539
+ interval: $event
540
+ }
541
+ }
542
+ });
543
+ }
544
+ }
545
+ toggleLegend($event) {
546
+ if (this.optionsCopy$.value) {
547
+ this.optionsCopy$.next({
548
+ ...this.optionsCopy$.value,
549
+ graph: { ...this.optionsCopy$.value.graph, legend: $event }
550
+ });
551
+ }
552
+ }
553
+ toggleTooltip($event) {
554
+ if (this.optionsCopy$.value) {
555
+ this.optionsCopy$.next({
556
+ ...this.optionsCopy$.value,
557
+ graph: { ...this.optionsCopy$.value?.graph, tooltip: $event }
558
+ });
559
+ }
560
+ }
561
+ toggleGroupBy($event) {
562
+ if (this.optionsCopy$.value) {
563
+ if ($event) {
564
+ this.optionsCopy$.next({
565
+ ...this.optionsCopy$.value,
566
+ groupBy: { attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '', color: this.schemes[0].id }
567
+ });
568
+ }
569
+ else {
570
+ this.optionsCopy$.next({
571
+ ...this.optionsCopy$.value,
572
+ groupBy: undefined
573
+ });
574
+ }
575
+ }
576
+ }
577
+ changeGroupBy($event) {
578
+ if (typeof $event === 'string' && this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {
579
+ this.optionsCopy$.next({
580
+ ...this.optionsCopy$.value,
581
+ groupBy: {
582
+ ...this.optionsCopy$.value?.groupBy,
583
+ attribute: $event
584
+ }
585
+ });
586
+ }
587
+ }
588
+ changeColorScheme($event) {
589
+ if (this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {
590
+ this.optionsCopy$.next({
591
+ ...this.optionsCopy$.value,
592
+ groupBy: {
593
+ attribute: this.optionsCopy$.value.groupBy?.attribute,
594
+ color: $event
595
+ }
596
+ });
597
+ }
598
+ }
599
+ setTickCount(data) {
600
+ return Math.max(...data.map((val) => val.value)) < 3
601
+ ? { tickCount: Math.max(...data.map((val) => val.value)) }
602
+ : {};
603
+ }
604
+ scheme() {
605
+ return vega.scheme(this.optionsCopy$.value?.groupBy?.color ?? '');
606
+ }
607
+ toggleStacked($event) {
608
+ if (this.optionsCopy$.value) {
609
+ this.optionsCopy$.next({
610
+ ...this.optionsCopy$.value,
611
+ graph: {
612
+ ...this.optionsCopy$.value?.graph,
613
+ stacked: $event
614
+ }
615
+ });
616
+ }
617
+ }
618
+ toImage() {
619
+ return new Promise((resolve, reject) => {
620
+ resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));
621
+ });
622
+ }
623
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i0.ElementRef }, { token: i3.PryAggregationService }], target: i0.ɵɵFactoryTarget.Component }); }
624
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetAggregatedChartComponent, selector: "pry-widget-aggregated-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["saveTriggered"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "additionalOptions", "headerOptions", "displayCount", "datasourceIds$", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i7.PryWidgetAggregatedChartCssComponent, selector: "pry-widget-aggregated-chart-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
625
+ }
626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, decorators: [{
627
+ type: Component,
628
+ args: [{ selector: 'pry-widget-aggregated-chart', template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds$]=\"datasourceIds$\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n" }]
629
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i0.ElementRef }, { type: i3.PryAggregationService }]; }, propDecorators: { vega: [{
630
+ type: ViewChild,
631
+ args: ['vega']
632
+ }] } });
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYWdncmVnYXRlZC1jaGFydC9jb21wb25lbnQvd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFJTCxjQUFjLEVBQ2QsbUJBQW1CLEVBRW5CLGNBQWMsRUFDZCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFHVCxhQUFhLEVBQ2IsUUFBUSxFQUNSLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBU3hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBTTFELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxtQkFBbUI7SUE4QnJFLFlBQ0UsS0FBaUIsRUFDVCxnQkFBZ0MsRUFDeEMsRUFBYyxFQUNOLGtCQUF5QztRQUVqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSlQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQjtRQUVoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBL0JuRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFzQyxJQUFJLENBQUMsQ0FBQztRQUU5RSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVMvQix5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFFdEIsZ0JBQVcsR0FBb0MsRUFBRSxDQUFDO1FBR2xELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUVyQiwrQkFBMEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR2pELFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBVTdCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQzthQUN4QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDWCxFQUFFLEVBQUUsQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDhCQUE4QixHQUFHLENBQUMsQ0FBQztTQUN6RSxDQUFDLENBQUM7YUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQ0QsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLFNBQVMsQ0FDUDtZQUNFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUM1RCxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3pCLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDTSxFQUNqQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFpQyxDQUN6QixDQUNwQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25GLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQzVCLE9BQU87YUFDSixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDM0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQ0g7YUFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUM1QixFQUNELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2pCLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2RyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDWCxFQUFFLEVBQUUsQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDhCQUE4QixHQUFHLENBQUMsQ0FBQztTQUN6RSxDQUFDLENBQUM7YUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDbEQsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQ3hDLE9BQU87YUFDSixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDM0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsR0FBRztnQkFDNUIsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTTtnQkFDL0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUNyRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0g7YUFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3RDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxDQUFDLDBCQUEwQjtTQUNoQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzVCLE9BQU87YUFDSixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDM0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDdkI7b0JBQ0UsU0FBUyxDQUFDLEdBQUc7b0JBQ2IsU0FBUyxDQUFDLEdBQUc7b0JBQ2IsU0FBUyxDQUFDLEdBQUc7b0JBQ2IsU0FBUyxDQUFDLEVBQUU7b0JBQ1osU0FBUyxDQUFDLEVBQUU7b0JBQ1osU0FBUyxDQUFDLE9BQU87b0JBQ2pCLFNBQVMsQ0FBQyxNQUFNO29CQUNoQixTQUFTLENBQUMsSUFBSTtpQkFDZixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3REO2dCQUNBLE9BQU8sQ0FDTCxDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUMvRixDQUFDO2FBQ0g7WUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FDSDthQUNBLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDdEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsT0FBTyxDQUNMLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7Z0JBQzVCLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO29CQUN6QixDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFDM0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQ2hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLE9BQU87aUJBQ3JCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDdkYsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsT0FBTztpQkFDckIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2RixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3pHLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDekcsT0FBTztnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztpQkFDNUU7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLFNBQVMsRUFBRSxpQkFBaUI7b0JBQzVCLFFBQVEsRUFDTixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRO3dCQUNqRyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVk7d0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7aUJBQ3hFO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEcsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQzlGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUMzQixhQUFhO1lBQ2IsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDL0QsT0FBTztvQkFDTCxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7b0JBQzlCLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ3RGLENBQUM7YUFDSDtZQUNELE1BQU0sU0FBUyxHQUNiLFNBQVMsQ0FBQyxNQU9YO2lCQUNFLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzthQUNyQixDQUFDLENBQUMsQ0FDSjtpQkFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYztTQUNwQixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RixPQUFPLFNBQVMsQ0FDZDtnQkFDRSxPQUFPLEVBQUUsaURBQWlEO2dCQUMxRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7Z0JBQzlDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pELEtBQUssRUFBRTtvQkFDTDt3QkFDRSxJQUFJLEVBQUU7NEJBQ0osSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQThDOzRCQUNuRixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQy9DLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDN0MsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUU7eUJBQzNDO3dCQUNELFFBQVEsRUFBRTs0QkFDUixDQUFDLEVBQUUsQ0FBQyxVQUFVO2dDQUNaLENBQUMsQ0FBQztvQ0FDRSxLQUFLLEVBQUUsS0FBSztvQ0FDWixLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO29DQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29DQUM3QixRQUFRLEVBQ04sS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXO3dDQUNsRixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUTt3Q0FDakMsQ0FBQyxDQUFDLFNBQVM7b0NBQ2YsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29DQUNqRCxJQUFJLEVBQUU7d0NBQ0osMEZBQTBGO3dDQUMxRixJQUFJLEVBQUUsS0FBSzt3Q0FDWCxHQUFHLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQzt3Q0FDbkUsU0FBUyxFQUFFLGtCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxRQUFROzRDQUMzQyxDQUFDLENBQUMsOENBQThDOzRDQUNoRCxDQUFDLENBQUMsMkJBQ04sTUFDRSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsUUFBUTs0Q0FDM0MsQ0FBQyxDQUFDLDhDQUE4Qzs0Q0FDaEQsQ0FBQyxDQUFDLGFBQ04sRUFBRTtxQ0FDSDtvQ0FDRCxLQUFLLEVBQUU7d0NBQ0wsNkRBQTZEO3dDQUM3RCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzt3Q0FDOUIsNEVBQTRFO3FDQUM3RTtpQ0FDRjtnQ0FDSCxDQUFDLENBQUMsU0FBUzs0QkFDYixDQUFDLEVBQUUsQ0FBQyxVQUFVO2dDQUNaLENBQUMsQ0FBQztvQ0FDRSxLQUFLLEVBQUUsT0FBTztvQ0FDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO29DQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29DQUM3QixJQUFJLEVBQUU7d0NBQ0osR0FBRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7d0NBQ25FLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3FDQUNsQztvQ0FDRCxLQUFLLEVBQUU7d0NBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztxQ0FDN0I7b0NBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lDQUNsRDtnQ0FDSCxDQUFDLENBQUMsU0FBUzs0QkFDYixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7NEJBQ2pGLEtBQUssRUFBRTtnQ0FDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUMvRTtnQ0FDRCxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztnQ0FDckMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTTtnQ0FDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTOzZCQUNuRzs0QkFDRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7NEJBQ25GLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU87Z0NBQzVCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQ0FDZixDQUFDLENBQUM7d0NBQ0U7NENBQ0UsS0FBSyxFQUFFLEtBQUs7NENBQ1osSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUTs0Q0FDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzs0Q0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lDQUNuRjt3Q0FDRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTt3Q0FDaEY7NENBQ0UsS0FBSyxFQUFFLFFBQVE7NENBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7NENBQ2hFLElBQUksRUFBRSxTQUFTO3lDQUNoQjtxQ0FDRjtvQ0FDSCxDQUFDLENBQUM7d0NBQ0U7NENBQ0UsS0FBSyxFQUFFLEtBQUs7NENBQ1osSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUTs0Q0FDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzs0Q0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lDQUNuRjt3Q0FDRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtxQ0FDakY7Z0NBQ0wsQ0FBQyxDQUFDLFNBQVM7eUJBQ2Q7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQzthQUNsQyxFQUNSLE9BQU8sQ0FBQyxjQUFjLENBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQy9ELE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxRQUFRO29CQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FBUTtvQkFDMUYsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxvQ0FBb0MsQ0FBUTtpQkFDbkcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWdCLEVBQUUsSUFBYTtRQUNqRCxJQUFJLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUN6QjtRQUVELFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDL0IsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzNCLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUNuQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDMUI7Z0JBQ0UsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBZTtRQUM1QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDdkIsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN0QjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFO2FBQzdDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVCxJQUFJLENBQUMsS0FBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFxQztRQUNwRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDNUQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWlCO1FBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQzNELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztvQkFDMUIsT0FBTyxFQUFFLFNBQVM7aUJBQ25CLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTthQUNoRSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsTUFBaUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7YUFDdEUsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDLEtBQUssSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO29CQUMxQixRQUFRLEVBQUU7d0JBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRO3dCQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsR0FBRyxNQUFNLENBQUM7d0JBQzdFLFNBQVMsRUFBRSxTQUFTO3FCQUNyQjtpQkFDRixDQUFDLENBQUM7YUFDSjtZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2FBQ3RFLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPO2lCQUN0QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLGdCQUFnQixFQUFFO2FBQzFGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWM7UUFDaEMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDbEUsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVc7UUFDeEIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2FBQ3RFLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPO2lCQUN0QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLGdCQUFnQixFQUFFO2FBQzFGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEY7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBVztRQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFXO1FBQzdCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2FBQ2xFLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQVc7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDbEUsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUNFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLE9BQU87b0JBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO29CQUN4QyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFDaEQ7b0JBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixRQUFRLEVBQUU7NEJBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFROzRCQUNwQyxLQUFLLEVBQUU7Z0NBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUM7Z0NBQ3JELE1BQU0sRUFBRSxLQUFLO2dDQUNiLEtBQUssRUFBRSxLQUFLO2dDQUNaLFdBQVcsRUFBRSxLQUFLOzZCQUNuQjt5QkFDRjtxQkFDRixDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRTtxQkFDckcsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO29CQUMxQixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2lCQUNyRSxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFXO1FBQ3JCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQ3RDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQ25EO1lBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRO29CQUNwQyxLQUFLLEVBQUU7d0JBQ0wsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDMUMsRUFBRSxFQUFFLE1BQU07cUJBQ1g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFXO1FBQzNCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQ3RDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQ25EO1lBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRO29CQUNwQyxLQUFLLEVBQUU7d0JBQ0wsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDMUMsTUFBTSxFQUFFLE1BQU07cUJBQ2Y7aUJBQ0Y7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQzFCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQ3RDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQ25EO1lBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRO29CQUNwQyxLQUFLLEVBQUU7d0JBQ0wsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDMUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNO3FCQUMvQjtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUNsRDtZQUNBLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDMUIsUUFBUSxFQUFFO29CQUNSLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDbkMsS0FBSyxFQUFFO3dCQUNMLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUs7d0JBQ3pDLFFBQVEsRUFBRSxNQUFNO3FCQUNqQjtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFXO1FBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO2FBQzVELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO2FBQzlELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO29CQUMxQixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2lCQUNyRyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7b0JBQzFCLE9BQU8sRUFBRSxTQUFTO2lCQUNuQixDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUM1RixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLE9BQU8sRUFBRTtvQkFDUCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU87b0JBQ25DLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQVc7UUFDM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUMxQixPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTO29CQUNyRCxLQUFLLEVBQUUsTUFBTTtpQkFDZDthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDdkQsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMvRCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRTtvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUs7b0JBQ2pDLE9BQU8sRUFBRSxNQUFNO2lCQUNoQjthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVRLE9BQU87UUFDZCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBN3VCVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3TEN2QzNDLGsyWUE4U0E7OzJGRHZRYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNkJBQTZCO3NMQUlwQixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnMsXG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgRGF0YVdpZGdldENvbXBvbmVudCxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBGaWVsZFR5cGUsXG4gIEdyYXBoVHlwZSxcbiAgT3BlcmF0aW9uLFxuICBQcnlJMThuU2VydmljZSxcbiAgVmFsdWVUeXBlLFxuICBWZWdhQ29sb3JUeXBlLFxuICBWZWdhVHlwZSxcbiAgV0lER0VUX0hFQURFUl9IRUlHSFRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICd2ZWdhJztcbmltcG9ydCBlbWJlZCwgeyB2ZWdhIH0gZnJvbSAndmVnYS1lbWJlZCc7XG5pbXBvcnQgeyBtZXJnZURlZXAsIFRvcExldmVsU3BlYyB9IGZyb20gJ3ZlZ2EtbGl0ZSc7XG5pbXBvcnQgeyBmb250Q29uZmlnIH0gZnJvbSAndmVnYS1saXRlL2J1aWxkL3NyYy9jb25maWcnO1xuaW1wb3J0IHsgUHJ5QWdncmVnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9iYXNlLWFnZ3JlZ2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBSYWRhclZhbHVlID0ge1xuICBjYXRlZ29yeTogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn07XG5cbnZlZ2Euc2NoZW1lKCdLTy9XL09LJywgWycjQzA0RDNGJywgJyNGRDk4NDMnLCAnIzlBQkUyOSddKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRBZ2dyZWdhdGVkQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3ZlZ2EnKSB2ZWdhITogRWxlbWVudFJlZjtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucz47XG4gIG9wdGlvbnNDb3B5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucyB8IG51bGw+KG51bGwpO1xuICB2aWV3PzogVmlldztcbiAgdHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB2ZWdhTGl0ZVNwZWMkOiBPYnNlcnZhYmxlPFRvcExldmVsU3BlYz47XG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBhdHRyaWJ1dGVUeXBlcyQ6IE9ic2VydmFibGU8e1xuICAgIG9yZGluYXRlOiB7IHZlZ2FUeXBlOiBWZWdhVHlwZTsgZmllbGRUeXBlOiBhbnkgfTtcbiAgICBhYnNjaXNzYTogeyB2ZWdhVHlwZTogVmVnYVR5cGU7IGZpZWxkVHlwZTogYW55IH07XG4gIH0+O1xuICBhZ2dyZWdhdGVkVmFsdWVzJDogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueTsgb3BlcmF0aW9uOiBhbnkgfT47XG4gIFdJREdFVF9IRUFERVJfSEVJR0hUID0gV0lER0VUX0hFQURFUl9IRUlHSFQ7XG4gIEdyYXBoVHlwZSA9IEdyYXBoVHlwZTtcbiAgT3BlcmF0aW9uID0gT3BlcmF0aW9uO1xuICBpc0NoYXJ0VmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0eXBlT3B0aW9uczogeyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtdO1xuICBvcGVyYXRpb25zJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdPjtcbiAgYWJzY2lzc2FBdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT47XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIG9yZGluYXRlQXR0cmlidXRlcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+O1xuICB0cmlnZ2VyT3JkaW5hdGVBdHRyaWJ1dGVzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvcHlBYnNjaXNzYUZpZWxkPzogRmllbGQ7XG4gIGNvcHlPcmRpbmF0ZUZpZWxkPzogRmllbGQ7XG4gIHNjaGVtZXM6IHsgaWQ6IHN0cmluZyB9W10gPSBbXTtcbiAgbm9EYXRhJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYWdncmVnYXRpb25TZXJ2aWNlOiBQcnlBZ2dyZWdhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUsIGVsKTtcbiAgICB0aGlzLnNjaGVtZXMgPSBPYmplY3QudmFsdWVzKFZlZ2FDb2xvclR5cGUpLm1hcCgoaWQpID0+ICh7IGlkIH0pKTtcbiAgICB0aGlzLnR5cGVPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhHcmFwaFR5cGUpXG4gICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICBpZDogdixcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5ncmFwaFR5cGUuJyArIHYpXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuXG4gICAgdGhpcy5vcHRpb25zJCA9IHRoaXMubWFuaWZlc3QkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICBtZXJnZURlZXAoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGdyYXBoOiB7IHR5cGU6IEdyYXBoVHlwZS5CQVIsIHRvb2x0aXA6IHRydWUsIGxlZ2VuZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgYWJzY2lzc2E6IHsga2VlcDA6IHRydWUgfSxcbiAgICAgICAgICAgICAgb3JkaW5hdGU6IHsga2VlcDA6IHRydWUgfVxuICAgICAgICAgICAgfSBhcyBDaGFydEFnZ3JlZ2F0ZWRXaWRnZXRPcHRpb25zLFxuICAgICAgICAgICAgKG1hbmlmZXN0Lm9wdGlvbnMgPz8ge30pIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgICAgICApIGFzIENoYXJ0QWdncmVnYXRlZFdpZGdldE9wdGlvbnNcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMub3B0aW9ucyQucGlwZShmaWx0ZXIoKG9wdCkgPT4gISFvcHQpKS5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuZmllbGRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyk7XG4gICAgdGhpcy5jbGFzc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmVzdWx0U2V0JCwgdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3JzLCBjbGFzc2VzLCBmaWVsZHNdKSA9PlxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKS5pbmNsdWRlcyhjbGF6ei5pZCkpXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLm1hcCgoYXR0cnMpID0+XG4gICAgICAgICAgICBhdHRycy5maWx0ZXIoKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gISFmaWVsZCAmJiBbRmllbGRUeXBlLklOVEVHRVIsIEZpZWxkVHlwZS5ERUNJTUFMLCBGaWVsZFR5cGUuTE9OR10uaW5jbHVkZXMoZmllbGQudHlwZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+ICEhYXR0cilcbiAgICAgICksXG4gICAgICBtYXAoKGF0dHJpYnV0ZXMpID0+XG4gICAgICAgIChhdHRyaWJ1dGVzLmxlbmd0aCA+IDAgPyBPYmplY3QudmFsdWVzKE9wZXJhdGlvbikgOiBbT3BlcmF0aW9uLkNPVU5ULCBPcGVyYXRpb24uRElTVElOQ1QsIE9wZXJhdGlvbi5OT05FXSlcbiAgICAgICAgICAubWFwKCh2KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHYsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9wZXJhdGlvbi4nICsgdilcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZmllbGRzJC5zdWJzY3JpYmUoKGZpZWxkcykgPT4gKHRoaXMuZmllbGRzID0gZmllbGRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5jbGFzc2VzJC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+ICh0aGlzLmNsYXNzZXMgPSBjbGFzc2VzKSkpO1xuXG4gICAgdGhpcy5hYnNjaXNzYUF0dHJpYnV0ZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jbGFzc2VzJCwgdGhpcy5maWVsZHMkLCB0aGlzLnJlc3VsdFNldCQsIHRoaXMub3B0aW9uc0NvcHkkXSkucGlwZShcbiAgICAgIG1hcCgoW2NsYXNzZXMsIGZpZWxkcywgcnMsIG9wdGlvbkNvcHldKSA9PlxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgLmZpbHRlcigoY2xhenopID0+IE9iamVjdC5rZXlzKHJzLml0ZW1zKS5pbmNsdWRlcyhjbGF6ei5pZCkpXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLm1hcCgoYXR0cnMpID0+XG4gICAgICAgICAgICBhdHRycy5maWx0ZXIoKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQuaWQgPT09IGF0dHIuZmllbGQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICEhZmllbGQgJiZcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlICE9PSBGaWVsZFR5cGUuUkFXICYmXG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlNUUklORyAmJlxuICAgICAgICAgICAgICAgIChvcHRpb25Db3B5Py5ncmFwaC50eXBlICE9PSBHcmFwaFR5cGUuSElTVE9HUkFNIHx8IGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5LRVlXT1JEKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gWy4uLmEsIC4uLmJdLCBbXSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5vcmRpbmF0ZUF0dHJpYnV0ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNsYXNzZXMkLFxuICAgICAgdGhpcy5maWVsZHMkLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkLFxuICAgICAgdGhpcy50cmlnZ2VyT3JkaW5hdGVBdHRyaWJ1dGVzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjbGFzc2VzLCBmaWVsZHMsIHJzXSkgPT5cbiAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgIC5maWx0ZXIoKGNsYXp6KSA9PiBPYmplY3Qua2V5cyhycy5pdGVtcykuaW5jbHVkZXMoY2xhenouaWQpKVxuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5tYXAoKGF0dHJzKSA9PlxuICAgICAgICAgICAgYXR0cnMuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlkID09PSBhdHRyLmZpZWxkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk1BWCxcbiAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbi5NSU4sXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uU1VNLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlExLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLlEzLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLkFWRVJBR0UsXG4gICAgICAgICAgICAgICAgICBPcGVyYXRpb24uTUVESUFOLFxuICAgICAgICAgICAgICAgICAgT3BlcmF0aW9uLk5PTkVcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLm9yZGluYXRlLm9wZXJhdGlvbilcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICEhZmllbGQgJiZcbiAgICAgICAgICAgICAgICAgIFtGaWVsZFR5cGUuSU5URUdFUiwgRmllbGRUeXBlLklOU1RBTlQsIEZpZWxkVHlwZS5MT05HLCBGaWVsZFR5cGUuREVDSU1BTF0uaW5jbHVkZXMoZmllbGQudHlwZSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAhIWZpZWxkICYmIGZpZWxkLnR5cGUgIT09IEZpZWxkVHlwZS5SQVcgJiYgZmllbGQudHlwZSAhPT0gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuaXNDaGFydFZhbGlkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMuYWJzY2lzc2FBdHRyaWJ1dGVzJCwgdGhpcy5vcmRpbmF0ZUF0dHJpYnV0ZXMkXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIGFic2Npc3NhQXR0cnMsIG9yZGluYXRlQXR0cnNdKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgISFvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSAmJlxuICAgICAgICAgIGFic2Npc3NhQXR0cnMubWFwKChhdHRyKSA9PiBhdHRyLmlkKS5pbmNsdWRlcyhvcHRpb25zLmFic2Npc3NhLmF0dHJpYnV0ZSkgJiZcbiAgICAgICAgICAob3B0aW9ucy5vcmRpbmF0ZS5hdHRyaWJ1dGVcbiAgICAgICAgICAgID8gb3JkaW5hdGVBdHRycy5tYXAoKGF0dHIpID0+IGF0dHIuaWQpLmluY2x1ZGVzKG9wdGlvbnMub3JkaW5hdGUuYXR0cmlidXRlKVxuICAgICAgICAgICAgOiB0cnVlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVUeXBlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmZpZWxkcyQsIHRoaXMuY2xhc3NlcyRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbb3B0aW9ucywgZmllbGRzLCBjbGFzc2VzXSkgPT4gISFvcHRpb25zLmFic2Npc3NhICYmICEhb3B0aW9ucy5vcmRpbmF0ZSksXG4gICAgICBtYXAoKFtvcHRpb25zLCBmaWVsZHMsIGNsYXNzZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFic2Npc3NhID0gY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IG9wdGlvbnMuYWJzY2lzc2EuYXR0cmlidXRlKSlcbiAgICAgICAgICAuZmluZCgoYXR0cikgPT4gISFhdHRyKTtcbiAgICAgICAgY29uc3Qgb3JkaW5hdGUgPSBjbGFzc2VzXG4gICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gb3B0aW9ucy5vcmRpbmF0ZS5hdHRyaWJ1dGUpKVxuICAgICAgICAgIC5maW5kKChhdHRyKSA9PiAhIWF0dHIpO1xuICAgICAgICBjb25zdCBhYnNjaXNzYUZpZWxkVHlwZSA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuaWQgPT09IGFic2Npc3NhPy5maWVsZCk/LnR5cGUgPz8gRmllbGRUeXBlLlNUUklORztcbiAgICAgICAgY29uc3Qgb3JkaW5hdGVGaWVsZFR5cGUgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmlkID09PSBvcmRpbmF0ZT8uZmllbGQpPy50eXBlID8/IEZpZWxkVHlwZS5TVFJJTkc7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAgIGZpZWxkVHlwZTogYWJzY2lzc2FGaWVsZFR5cGUsXG4gICAgICAgICAgICB2ZWdhVHlwZTogdGhpcy50cmFuc2xhdGVUb1ZlZ2FUeXBlKGFic2Npc3NhRmllbGRUeXBlLCBhYnNjaXNzYT8ubmFtZSA/PyAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9yZGluYXRlOiB7XG4gICAgICAgICAgICBmaWVsZFR5cGU6IG9yZGluYXRlRmllbGRUeXBlLFxuICAgICAgICAgICAgdmVnYVR5cGU6XG4gICAgICAgICAgICAgIG9wdGlvbnMub3JkaW5hdGUub3BlcmF0aW9uID09PSBPcGVyYXRpb24uQ09VTlQgfHwgb3B0aW9ucy5vcmRpbmF0ZS5vcGVyYXRpb24gPT09IE9wZXJhdGlvbi5ESVNUSU5DVFxuICAgICAgICAgICAgICAgID8gVmVnYVR5cGUuUVVBTlRJVEFUSVZFXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVRvVmVnYVR5cGUob3JkaW5hdGVGaWVsZFR5cGUsIG9yZGluYXRlPy5uYW1lID8/ICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuYWdncmVnYXRlZFZhbHVlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGFzb3VyY2VJZHMkLCB0aGlzLm9wdGlvbnMkLCB0aGlzLnJlc3VsdFNldCRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbZGF0YXNvdXJjZXMsIG9wdGlvbnNdKSA9PiB0aGlzLmFnZ3JlZ2F0aW9uU2VydmljZS5hZ2dyZWdhdGUoZGF0YXNvdXJjZXMsIG9wdGlvbnMpKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5vcHRpb25zJCksXG4gICAgICBtYXAoKFthZ2dyZWdhdGUsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGFnZ3JlZ2F0ZS52YWx1ZXMubGVuZ3RoID4gMCAmJiAhYWdncmVnYXRlLnZhbHVlc1swXS5ncm91cEJ5KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogYWdncmVnYXRlLm9wZXJhdGlvbixcbiAgICAgICAgICAgIGRhdGE6IGFnZ3JlZ2F0ZS52YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIHNlcmllczogb3B0aW9ucy5vcmRpbmF0ZS5sYWJlbCB9KSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IChcbiAgICAgICAgICBhZ2dyZWdhdGUudmFsdWVzIGFzIHtcbiAgICAgICAgICAgIGtleTogVmFsdWVUeXBlO1xuICAgICAgICAgICAgZ3JvdXBCeToge1xuICAgICAgICAgICAgICBrZXk6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgICAgdmFsdWU6IFZhbHVlVHlwZTtcbiAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICB9W11cbiAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdmFsdWUuZ3JvdXBCeS5tYXAoKGdyb3VwQnkpID0+ICh7XG4gICAgICAgICAgICAgIGtleTogdmFsdWUua2V5LFxuICAgICAgICAgICAgICBzZXJpZXM6IGdyb3VwQnkua2V5LFxuICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXBCeS52YWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pO1xuICAgICAgICByZXR1cm4geyBvcGVyYXRpb246IGFnZ3JlZ2F0ZS5vcGVyYXRpb24sIGRhdGE6IGZsYXR0ZW5lZCB9O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5ub0RhdGEkID0gdGhpcy5hZ2dyZWdhdGVkVmFsdWVzJC5waXBlKG1hcCgoeyBvcGVyYXRpb24sIGRhdGEgfSkgPT4gZGF0YS5sZW5ndGggPT09IDApKTtcblxuICAgIHRoaXMudmVnYUxpdGVTcGVjJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMuYXR0cmlidXRlVHlwZXMkLFxuICAgICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzJCxcbiAgICAgIHRoaXMud2lkZ2V0U2l6ZSQucGlwZShkZWJvdW5jZVRpbWUoMTAwKSksXG4gICAgICB0aGlzLmRpc3BsYXlIZWFkZXIkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHR5cGVzLCB2YWx1ZXMsIHNpemUsIGRpc3BsYXldKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2lyY3VsYXIgPSBbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKG9wdGlvbnMuZ3JhcGgudHlwZSk7XG4gICAgICAgIHJldHVybiBtZXJnZURlZXAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgJHNjaGVtYTogJ2h0dHBzOi8vdmVnYS5naXRodWIuaW8vc2NoZW1hL3ZlZ2EtbGl0ZS92NS5qc29uJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKG9wdGlvbnMpLFxuICAgICAgICAgICAgd2lkdGg6ICdjb250YWluZXInLFxuICAgICAgICAgICAgaGVpZ2h0OiAoc2l6ZS5oZWlnaHQgPz8gMTAwKSAtIChkaXNwbGF5ID8gV0lER0VUX0hFQURFUl9IRUlHSFQgOiAwKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgYXV0b3NpemU6IHsgdHlwZTogJ2ZpdCcsIGNvbnRhaW5zOiAncGFkZGluZycgfSxcbiAgICAgICAgICAgIGRhdGE6IHsgdmFsdWVzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlcy5kYXRhKSkgfSxcbiAgICAgICAgICAgIGxheWVyOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJrOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBvcHRpb25zLmdyYXBoLnR5cGUuc3BsaXQoJy0nKVswXSBhcyAnYXJjJyB8ICdsaW5lJyB8ICdwb2ludCcgfCAnYmFyJyB8ICdhcmVhJyxcbiAgICAgICAgICAgICAgICAgIHBvaW50OiBvcHRpb25zLmdyYXBoLnR5cGUuaW5kZXhPZigncG9pbnQnKSA+PSAwLFxuICAgICAgICAgICAgICAgICAgbGluZTogb3B0aW9ucy5ncmFwaC50eXBlLmluZGV4T2YoJ2xpbmUnKSA+PSAwLFxuICAgICAgICAgICAgICAgICAgaW5uZXJSYWRpdXM6IG9wdGlvbnMuZ3JhcGguZG9udXRTaXplID8/IDMwXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbmNvZGluZzoge1xuICAgICAgICAgICAgICAgICAgeDogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2tleScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy5hYnNjaXNzYS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZVVuaXQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTCAmJiBvcHRpb25zLmFic2Npc3NhLmxpbWl0Py5pc1RpbWVMaW1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5hYnNjaXNzYS5saW1pdC5pbnRlcnZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmluOiBvcHRpb25zLmdyYXBoLnR5cGUuaW5kZXhPZignaGlzdG9ncmFtJykgPj0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3JtYXQ6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTCA/ICclWS0lQi0lZFQlSDolTTolUycgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5XaWRnZXRBZ2dyZWdhdGVkQ2hhcnRDb21wb25lbnQubWluVGljayh0eXBlcy5hYnNjaXNzYS5maWVsZFR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEV4cHI6IGBoZWlnaHQgPCAzMDAgPyAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInRpbWVGb3JtYXQoZGF0dW0udmFsdWUsICclWS0lQi0lZFQlSDolTTolUycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RydW5jYXRlKGRhdHVtLnZhbHVlLCAxMCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlID09PSBWZWdhVHlwZS5URU1QT1JBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcInRpbWVGb3JtYXQoZGF0dW0udmFsdWUsICclWS0lQi0lZFQlSDolTTolUycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2RhdHVtLnZhbHVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcmNlIGEgZmFsc2UgdmFsdWUgaGVyZSBzbyB0aGF0IHZlZ2EgdW5kZXJzdGFuZHMgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgemVybzogISFvcHRpb25zLmFic2Npc3NhLmtlZXAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vdHlwZTogV2lkZ2V0Q2hhcnRDb21wb25lbnQuaXNUaW1lVW5pdFVUQyh2YXJpYWJsZXNbMF0pID8gJ3V0YycgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgeTogIWlzQ2lyY3VsYXJcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBheGlzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLldpZGdldEFnZ3JlZ2F0ZWRDaGFydENvbXBvbmVudC5taW5UaWNrKHR5cGVzLm9yZGluYXRlLmZpZWxkVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2V0VGlja0NvdW50KHZhbHVlcy5kYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHplcm86IG9wdGlvbnMub3JkaW5hdGUua2VlcDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ob3B0aW9ucy5ncmFwaC5zdGFja2VkID8geyBzdGFjazogdHJ1ZSB9IDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRoZXRhOiBpc0NpcmN1bGFyID8geyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmdyb3VwQnkgPyAnQHByeS53aWRnZXQuY2hhcnQuc2VyaWVzJyA6ICdAcHJ5LndpZGdldC5jaGFydC5sZWdlbmRMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICFpc0NpcmN1bGFyID8gJ3NlcmllcycgOiAna2V5JyxcbiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiBvcHRpb25zLmdyYXBoLmxlZ2VuZCxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IG9wdGlvbnMuZ3JhcGgubGVnZW5kID8geyBzY2hlbWU6IG9wdGlvbnMuZ3JvdXBCeT8uY29sb3IgPz8gdGhpcy5zY2hlbWVzWzBdLmlkIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB4T2Zmc2V0OiBvcHRpb25zLmdyYXBoLnN0YWNrZWQgJiYgb3B0aW9ucy5ncm91cEJ5ID8geyBmaWVsZDogJ3NlcmllcycgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IG9wdGlvbnMuZ3JhcGgudG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMuZ3JvdXBCeVxuICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gJ3RlbXBvcmFsJyA/IHsgZm9ybWF0OiAnJVktJUItJWRUJUg6JU06JVMnIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NlcmllcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5zZXJpZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbm9taW5hbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdrZXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVzLmFic2Npc3NhLnZlZ2FUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLmFic2Npc3NhLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0eXBlcy5hYnNjaXNzYS52ZWdhVHlwZSA9PT0gJ3RlbXBvcmFsJyA/IHsgZm9ybWF0OiAnJVktJUItJWRUJUg6JU06JVMnIH0gOiB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3ZhbHVlJywgdHlwZTogdHlwZXMub3JkaW5hdGUudmVnYVR5cGUsIHRpdGxlOiBvcHRpb25zLm9yZGluYXRlLmxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb25maWc6IGZvbnRDb25maWcoJ1VidW50dSwgc2Fucy1zZXJpZicpXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgb3B0aW9ucy5hZGRpdGlvbmFsU3BlY1xuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnZlZ2FMaXRlU3BlYyQsIHRoaXMudHJpZ2dlciRdKS5zdWJzY3JpYmUoKFtzcGVjLCBfXSkgPT4ge1xuICAgICAgICBpZiAodGhpcy52ZWdhKSB7XG4gICAgICAgICAgdGhpcy52aWV3Py5maW5hbGl6ZSgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKHNwZWMpO1xuICAgICAgICAgIGVtYmVkKHRoaXMudmVnYS5uYXRpdmVFbGVtZW50LCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNwZWMpKSwge1xuICAgICAgICAgICAgYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgICByZW5kZXJlcjogJ2NhbnZhcycsXG4gICAgICAgICAgICBmb3JtYXRMb2NhbGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50T2JqZWN0KCdAcHJ5LndpZGdldC5jaGFydC5udW1iZXJMb2NhbGUnKSBhcyBhbnksXG4gICAgICAgICAgICB0aW1lRm9ybWF0TG9jYWxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudE9iamVjdCgnQHByeS53aWRnZXQuY2hhcnQudGltZUZvcm1hdExvY2FsZScpIGFzIGFueVxuICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gKHRoaXMudmlldyA9IHJlc3VsdC52aWV3KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRyaWdnZXIkLm5leHQoKSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlciQubmV4dCgpO1xuICB9XG5cbiAgdHJhbnNsYXRlVG9WZWdhVHlwZSh0eXBlPzogRmllbGRUeXBlLCBuYW1lPzogc3RyaW5nKTogVmVnYVR5cGUge1xuICAgIGxldCBpZFJlZ2V4ID0gbmV3IFJlZ0V4cCgvX2lkfGlkX3xfSUR8SURffF9JZHxJZF8vLCAnZycpO1xuICAgIGlmIChpZFJlZ2V4LnRlc3QobmFtZSA/PyAnLS0tLS0tLScpKSB7XG4gICAgICByZXR1cm4gVmVnYVR5cGUuT1JESU5BTDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLlFVQU5USVRBVElWRTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLklOU1RBTlQ6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5URU1QT1JBTDtcbiAgICAgIGNhc2UgRmllbGRUeXBlLktFWVdPUkQ6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5TVFJJTkc6XG4gICAgICAgIHJldHVybiBWZWdhVHlwZS5OT01JTkFMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFZlZ2FUeXBlLk5PTUlOQUw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1pblRpY2sodHlwZTogRmllbGRUeXBlKTogeyB0aWNrTWluU3RlcDogbnVtYmVyIH0gfCB7fSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlRFR0VSOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuTE9ORzpcbiAgICAgICAgcmV0dXJuIHsgdGlja01pblN0ZXA6IDEgfTtcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRFQ0lNQUw6XG4gICAgICBjYXNlIEZpZWxkVHlwZS5JTlNUQU5UOlxuICAgICAgY2FzZSBGaWVsZFR5cGUuS0VZV09SRDpcbiAgICAgIGNhc2UgRmllbGRUeXBlLlNUUklORzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMud2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDoge1xuICAgICAgICAuLi50aGlzLm1hbmlmZXN0LFxuICAgICAgICBvcHRpb25zOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLmdldFZhbHVlKCkgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3BlblNldHRpbmdzKCkge1xuICAgICh0aGlzLm9wZW4kIGFzIFN1YmplY3Q8dm9pZD4pLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGl0bGUob3B0aW9uczogQ2hhcnRBZ2dyZWdhdGVkV2lkZ2V0T3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmdyYXBoPy50aXRsZSA/PyAob3B0aW9ucy5hYnNjaXNzYS5sYWJlbCA/PyAna2V5JykgKyAnIC8gJyArIChvcHRpb25zLm9yZGluYXRlLmxhYmVsID8/ICd2YWx1ZScpO1xuICB9XG5cbiAgY2hhbmdlQ2hhcnRUaXRsZSgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHRpdGxlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVHlwZSgkZXZlbnQ6IEdyYXBoVHlwZSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncmFwaDogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uZ3JhcGgsIHR5cGU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmIChbR3JhcGhUeXBlLkNJUkNVTEFSLCBHcmFwaFR5cGUuRE9OVVRdLmluY2x1ZGVzKCRldmVudCkpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFtHcmFwaFR5cGUuSElTVE9HUkFNXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICAgIHRoaXMubGltaXRFbGVtZW50cyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VEb251dFNpemUoJGV2ZW50OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCBkb251dFNpemU6ICRldmVudCB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VPcGVyYXRpb24oJGV2ZW50OiBPcGVyYXRpb24pIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBvcGVyYXRpb246ICRldmVudCB9XG4gICAgICB9KTtcbiAgICAgIGlmICgkZXZlbnQgPT09IE9wZXJhdGlvbi5DT1VOVCB8fCAkZXZlbnQgPT09IE9wZXJhdGlvbi5ESVNUSU5DVCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBvcmRpbmF0ZToge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5jaGFydC5vcGVyYXRpb24uJyArICRldmVudCksXG4gICAgICAgICAgICBhdHRyaWJ1dGU6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHJpZ2dlck9yZGluYXRlQXR0cmlidXRlcyQubmV4dCgpLCAxMCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2EoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlBYnNjaXNzYUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG5cbiAgICAgIHRoaXMubGltaXRFbGVtZW50cyghIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYS5saW1pdCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50ICYmIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIG9yZGluYXRlOiB7IC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5vcmRpbmF0ZSwgYXR0cmlidXRlOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBhdHRyID0gdGhpcy5jbGFzc2VzXG4gICAgICAgIC5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKVxuICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKVxuICAgICAgICAuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gJGV2ZW50KTtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgb3JkaW5hdGU6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lm9yZGluYXRlLCBsYWJlbDogYXR0cj8ubmFtZSA/PyAnYXR0ci1ub3QtZm91bmQnIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvcHlPcmRpbmF0ZUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHI/LmZpZWxkID09PSBmaWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlT3JkaW5hdGVMYWJlbCgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGxhYmVsOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBBYnNjaXNzYSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBvcmRpbmF0ZTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8ub3JkaW5hdGUsIGtlZXAwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbGltaXRFbGVtZW50cygkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb3B5QWJzY2lzc2FGaWVsZD8udHlwZSAhPT0gRmllbGRUeXBlLklOU1RBTlQgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0ICYmXG4gICAgICAgICAgJ2F0JyBpbiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2E/LmxpbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgICBhYnNjaXNzYToge1xuICAgICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsXG4gICAgICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAgICAgYXQ6IHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5hYnNjaXNzYT8ubGltaXQ/LmF0ID8/IDMsXG4gICAgICAgICAgICAgICAgb3RoZXJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcmRlcjogJ2FzYycsXG4gICAgICAgICAgICAgICAgaXNUaW1lTGltaXQ6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICAgICAgYWJzY2lzc2E6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLCBsaW1pdDogeyBpbnRlcnZhbDogJ3NlY29uZCcsIGlzVGltZUxpbWl0OiB0cnVlIH0gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBhYnNjaXNzYTogeyAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EsIGxpbWl0OiB1bmRlZmluZWQgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBhdDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VMaW1pdE90aGVycygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvdGhlcnM6ICRldmVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGltaXRPcmRlcigkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgIXRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLmFic2Npc3NhLmxpbWl0LmlzVGltZUxpbWl0XG4gICAgKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGFic2Npc3NhOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmFic2Npc3NhLFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZT8uYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBvcmRlcjogJGV2ZW50ID8gJ2FzYycgOiAnZGVzYydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpbWVMaW1pdCgkZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlICYmXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYS5saW1pdCAmJlxuICAgICAgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcbiAgICApIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgYWJzY2lzc2E6IHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5hYnNjaXNzYSxcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuYWJzY2lzc2EubGltaXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogJGV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMZWdlbmQoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JhcGgsIGxlZ2VuZDogJGV2ZW50IH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRvb2x0aXAoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgZ3JhcGg6IHsgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLCB0b29sdGlwOiAkZXZlbnQgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlR3JvdXBCeSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSkge1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnNDb3B5JC52YWx1ZSxcbiAgICAgICAgICBncm91cEJ5OiB7IGF0dHJpYnV0ZTogdGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lmdyb3VwQnk/LmF0dHJpYnV0ZSA/PyAnJywgY29sb3I6IHRoaXMuc2NoZW1lc1swXS5pZCB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgICAgZ3JvdXBCeTogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUdyb3VwQnkoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodHlwZW9mICRldmVudCA9PT0gJ3N0cmluZycgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/Lmdyb3VwQnksXG4gICAgICAgICAgYXR0cmlidXRlOiAkZXZlbnRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zQ29weSQudmFsdWUgJiYgdGhpcy5vcHRpb25zQ29weSQudmFsdWUuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMub3B0aW9uc0NvcHkkLnZhbHVlLFxuICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgYXR0cmlidXRlOiB0aGlzLm9wdGlvbnNDb3B5JC52YWx1ZS5ncm91cEJ5Py5hdHRyaWJ1dGUsXG4gICAgICAgICAgY29sb3I6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRUaWNrQ291bnQoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLmRhdGEubWFwKCh2YWw6IGFueSkgPT4gdmFsLnZhbHVlKSkgPCAzXG4gICAgICA/IHsgdGlja0NvdW50OiBNYXRoLm1heCguLi5kYXRhLm1hcCgodmFsOiBhbnkpID0+IHZhbC52YWx1ZSkpIH1cbiAgICAgIDoge307XG4gIH1cblxuICBzY2hlbWUoKSB7XG4gICAgcmV0dXJuIHZlZ2Euc2NoZW1lKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlPy5ncm91cEJ5Py5jb2xvciA/PyAnJyk7XG4gIH1cblxuICB0b2dnbGVTdGFja2VkKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0NvcHkkLnZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5JC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWUsXG4gICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgLi4udGhpcy5vcHRpb25zQ29weSQudmFsdWU/LmdyYXBoLFxuICAgICAgICAgIHN0YWNrZWQ6ICRldmVudFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB0b0ltYWdlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlc29sdmUodGhpcy52ZWdhLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnY2FudmFzJylbMF0udG9EYXRhVVJMKCdpbWFnZS9wbmcnKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LWFnZ3JlZ2F0ZWQtY2hhcnQtY3NzPjwvcHJ5LXdpZGdldC1hZ2dyZWdhdGVkLWNoYXJ0LWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldC0tY2hhcnRcIiAqbmdJZj1cIm9wdGlvbnNDb3B5JCB8IGFzeW5jIGFzIG9wdGlvbnNDb3B5XCI+XG4gIDxwcnktd2lkZ2V0LWhlYWRlclxuICAgIFtkYXRhc291cmNlSWRzJF09XCJkYXRhc291cmNlSWRzJFwiXG4gICAgKm5nSWY9XCJkaXNwbGF5SGVhZGVyJCB8IGFzeW5jXCJcbiAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgIFttYW5pZmVzdF09XCJtYW5pZmVzdFwiXG4gICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwibWFuaWZlc3RNb2RpZmllZC5lbWl0KCRldmVudClcIlxuICAgICNoZWFkZXJcbiAgICBbaGVhZGVyT3B0aW9uc109XCIoZGlzcGxheUhlYWRlciQgfCBhc3luYykgPz8ge31cIlxuICAgIFtkaXNwbGF5Q291bnRdPVwiZmFsc2VcIlxuICA+XG4gICAgPHByeS1zZXR0aW5nc1xuICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50X19maWVsZHMgLWNvbmRlbnNlZFwiPlxuICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICBsYWJlbD1cIkBwcnkud2lkZ2V0LmNoYXJ0LnRpdGxlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDaGFydFRpdGxlKCRldmVudClcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmdyYXBoLnRpdGxlXCJcbiAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnNDb3B5XCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfdHlwZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC50eXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VUeXBlKCRldmVudClcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwidHlwZU9wdGlvbnNcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBpZD1cImNoYXJ0X3R5cGVcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5ncmFwaC50eXBlID09PSBHcmFwaFR5cGUuRE9OVVRcIj5cbiAgICAgICAgICA8cHJ5LXJhbmdlXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncmFwaC5kb251dFNpemVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlRG9udXRTaXplKCRldmVudClcIlxuICAgICAgICAgICAgbGFiZWxUcmFuc2xhdGU9XCJAcHJ5LndpZGdldC5jaGFydC5kb251dFNpemVcIlxuICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICBtYXg9XCI1MDBcIlxuICAgICAgICAgID48L3ByeS1yYW5nZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlTGVnZW5kKCRldmVudClcIiBbbmdNb2RlbF09XCIhIW9wdGlvbnNDb3B5LmdyYXBoLmxlZ2VuZFwiPlxuICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LmxlZ2VuZCcgfCBpMThuIH19XG4gICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8cHJ5LWNoZWNrYm94IChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVRvb2x0aXAoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuZ3JhcGgudG9vbHRpcFwiXG4gICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnRvb2x0aXAnIHwgaTE4biB9fVxuICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncmFwaC50eXBlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudF9fZmllbGRzIC1jb25kZW5zZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiYWJzY2lzc2FcIj57eyAnQHByeS53aWRnZXQuY2hhcnQuYWJzY2lzc2EnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VBYnNjaXNzYSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhYnNjaXNzYUF0dHJpYnV0ZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5hdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgIGlkPVwiYWJzY2lzc2FcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwcnktZWRpdC1pbnB1dFxuICAgICAgICAgICAgbGFiZWw9XCJAcHJ5LndpZGdldC5jaGFydC5kYXRhTGFiZWxcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWJzY2lzc2FMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxhYmVsXCJcbiAgICAgICAgICA+PC9wcnktZWRpdC1pbnB1dD5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIFsncXVhbnRpdGF0aXZlJywgJ3RlbXBvcmFsJ10uaW5jbHVkZXModHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5QWJzY2lzc2FGaWVsZD8udHlwZSkpICYmXG4gICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ET05VVCAmJlxuICAgICAgICAgICAgICBvcHRpb25zQ29weS5ncmFwaC50eXBlICE9PSBHcmFwaFR5cGUuQ0lSQ1VMQVJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VLZWVwMEFic2Npc3NhKCRldmVudClcIiBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5rZWVwMFwiXG4gICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQub3JpZ2luJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImxpbWl0RWxlbWVudHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXRcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSA9PT0gR3JhcGhUeXBlLkhJU1RPR1JBTVwiXG4gICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQubGltaXQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIW9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pc1RpbWVMaW1pdCA9PT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICA8cHJ5LXJhbmdlXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5hdFwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMaW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGxhYmVsVHJhbnNsYXRlPVwiQHByeS53aWRnZXQuY2hhcnQubGltaXRcIlxuICAgICAgICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICAgICAgICBtYXg9XCIxMFwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXJhbmdlPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5ISVNUT0dSQU1cIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGltaXRPdGhlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0Lm90aGVyc1wiXG4gICAgICAgICAgICAgICAgICAgID57eyAnQHByeS53aWRnZXQuY2hhcnQub3RoZXJzJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZGF0ZV9saW1pdFwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5vcmRlcicgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUxpbWl0T3JkZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiW3sgaWQ6ICdhc2MnIH0sIHsgaWQ6ICdkZXNjJyB9XVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmFic2Npc3NhLmxpbWl0Lm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2Jhc2VUcmFuc2xhdGVdPVwiJ0Bwcnkud2lkZ2V0LmNoYXJ0LidcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwib3RoZXJfbGltaXRcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhb3B0aW9uc0NvcHkuYWJzY2lzc2EubGltaXQuaXNUaW1lTGltaXRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZGF0ZV9saW1pdFwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC50aW1lSW50ZXJ2YWwnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRpbWVMaW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIltcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ3NlY29uZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ21pbnV0ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogJ2hvdXInIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdkYXknIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICd3ZWVrJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAnbW9udGgnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6ICdxdWFydGVyJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiAneWVhcicgfVxuICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5hYnNjaXNzYS5saW1pdC5pbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBiYXNlVHJhbnNsYXRlPVwiQHByeS53aWRnZXQuY2hhcnQudGltZS5cIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJkYXRlX2xpbWl0XCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cIm9wZXJhdGlvbnNcIj57eyAnQHByeS53aWRnZXQuY2hhcnQub3BlcmF0aW9uLnRpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlT3BlcmF0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cIm9wZXJhdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5vcGVyYXRpb25cIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICBpZD1cIm9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5vcGVyYXRpb24gIT09IE9wZXJhdGlvbi5DT1VOVFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwib3JkaW5hdGVcIj57eyAnQHByeS53aWRnZXQuY2hhcnQub3JkaW5hdGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlT3JkaW5hdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm9yZGluYXRlQXR0cmlidXRlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUuYXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwib3JkaW5hdGVcIlxuICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8cHJ5LWVkaXQtaW5wdXRcbiAgICAgICAgICAgIGxhYmVsPVwiQHByeS53aWRnZXQuY2hhcnQuZGF0YUxhYmVsXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZU9yZGluYXRlTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5vcmRpbmF0ZS5sYWJlbFwiXG4gICAgICAgICAgPjwvcHJ5LWVkaXQtaW5wdXQ+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHJhbnNsYXRlVG9WZWdhVHlwZShjb3B5T3JkaW5hdGVGaWVsZD8udHlwZSkgPT09ICdxdWFudGl0YXRpdmUnXCIgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlS2VlcDBPcmRpbmF0ZSgkZXZlbnQpXCIgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkub3JkaW5hdGUua2VlcDBcIlxuICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm9yaWdpbicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NvcHkuZ3JhcGgudHlwZSAhPT0gR3JhcGhUeXBlLkRPTlVUICYmIG9wdGlvbnNDb3B5LmdyYXBoLnR5cGUgIT09IEdyYXBoVHlwZS5DSVJDVUxBUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRfX2ZpZWxkcyAtY29uZGVuc2VkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlR3JvdXBCeSgkZXZlbnQpXCIgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCJcbiAgICAgICAgICAgICAgICA+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lmdyb3VwQnknIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFvcHRpb25zQ29weS5ncm91cEJ5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY2hhcnRfc2VyaWVzQXR0clwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5ncm91cEF0dHInIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUdyb3VwQnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWJzY2lzc2FBdHRyaWJ1dGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zZXJpZXNBdHRyXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNoYXJ0X3Nlcmllc1NjaGVtZVwiPnt7ICdAcHJ5LndpZGdldC5jaGFydC5jb2xvclNjaGVtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5ncm91cEJ5LmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInNjaGVtZXNcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJjaGFydF9zZXJpZXNTY2hlbWVcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsVHJhbnNsYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgYmFzZVRyYW5zbGF0ZT1cIkBwcnkud2lkZ2V0LmNoYXJ0LnNjaGVtZS5cIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiaWRcIlxuICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXdpZGdldC0tY2hhcnQtY29sb3ItdGh1bWJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2NoZW1lQ29sb3Igb2Ygc2NoZW1lKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvLXdpZGdldC0tY2hhcnQtY29sb3ItdGh1bWItaXRlbVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwic2NoZW1lQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2NoZW1lQ29sb3JcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuZ3JhcGguc3RhY2tlZFwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVN0YWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0LnN0YWNrZWQnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcHJ5LXNldHRpbmdzPlxuICA8L3ByeS13aWRnZXQtaGVhZGVyPlxuICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0XCIgKm5nSWY9XCIoaXNDaGFydFZhbGlkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICA8aW1nXG4gICAgICBjbGFzcz1cIm5vLXJlc3VsdF9fc2VhcmNoXCJcbiAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGVfcGFzX2RlX3Jlc3VsdGF0LnN2Z1wiXG4gICAgICBhbHQ9XCJ7eyAnQHByeS53aWRnZXQuY2hhcnQubm9EYXRhJyB8IGkxOG4gfX1cIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAvPlxuICAgIDxzcGFuIGNsYXNzPVwibm8tcmVzdWx0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0NoYXJ0VmFsaWQkIHwgYXN5bmMpICYmICEobm9EYXRhJCB8IGFzeW5jKVwiPlxuICAgIDxkaXYgI3ZlZ2E+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlzQ2hhcnRWYWxpZCQgfCBhc3luYylcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2Nob29zZS1wYXJhbWV0ZXJzXCI+XG4gICAgICA8cCBjbGFzcz1cImEtcFwiPlxuICAgICAgICB7eyAnQHByeS53aWRnZXQuY2hhcnQuY2hvb3NlUGFyYW1ldGVycycgfCBpMThuIH19XG4gICAgICA8L3A+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblNldHRpbmdzKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhJCB8IGFzeW5jXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19jaG9vc2UtcGFyYW1ldGVyc1wiPlxuICAgICAgPHAgY2xhc3M9XCJhLXBcIj5cbiAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmNoYXJ0Lm5vRGF0YScgfCBpMThuIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=