@ng-atomic/components 18.2.0 → 18.4.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 (302) hide show
  1. package/atoms/smart-menu-button/smart-menu-button.atom.d.ts +3 -3
  2. package/components.module.d.ts +6 -1
  3. package/esm2022/atoms/icon/icon.atom.mjs +2 -2
  4. package/esm2022/atoms/smart-menu-button/smart-menu-button.atom.mjs +77 -114
  5. package/esm2022/components.module.mjs +7 -3
  6. package/esm2022/extras/editor/editor.component.mjs +78 -46
  7. package/esm2022/frames/app/app.frame.mjs +130 -70
  8. package/esm2022/frames/auto-layout/auto-layout.frame.mjs +29 -7
  9. package/esm2022/frames/columns/columns.frame.mjs +2 -2
  10. package/esm2022/frames/divider/divider.frame.mjs +2 -2
  11. package/esm2022/frames/drawer/drawer.frame.mjs +2 -2
  12. package/esm2022/frames/entrance/entrance.frame.mjs +2 -2
  13. package/esm2022/frames/fab/fab.frame.mjs +2 -2
  14. package/esm2022/frames/frames.module.mjs +3 -3
  15. package/esm2022/frames/line-up/line-up.animations.mjs +3 -7
  16. package/esm2022/frames/line-up/line-up.frame.mjs +2 -2
  17. package/esm2022/frames/loading/loading.frame.mjs +2 -2
  18. package/esm2022/frames/progress-bar/index.mjs +2 -0
  19. package/esm2022/frames/progress-bar/ng-atomic-components-frames-progress-bar.mjs +5 -0
  20. package/esm2022/frames/progress-bar/progress-bar.frame.mjs +53 -0
  21. package/esm2022/frames/router-outlet/router-outlet.frame.mjs +96 -41
  22. package/esm2022/frames/scroll/scroll.frame.mjs +32 -14
  23. package/esm2022/frames/scroll-v2/index.mjs +2 -2
  24. package/esm2022/frames/side-app/index.mjs +2 -0
  25. package/esm2022/frames/side-app/ng-atomic-components-frames-side-app.mjs +5 -0
  26. package/esm2022/frames/side-app/side-app.frame.mjs +74 -0
  27. package/esm2022/frames/side-nav/side-nav.frame.mjs +27 -21
  28. package/esm2022/frames/smart-menu/smart-menu.frame.mjs +2 -2
  29. package/esm2022/frames/tabs/tabs.frame.mjs +13 -7
  30. package/esm2022/frames/vertical-hide/vertical-hide.frame.mjs +11 -18
  31. package/esm2022/molecules/action-input-field/action-input-field.molecule.mjs +2 -2
  32. package/esm2022/molecules/actions-column/actions-column.molecule.mjs +13 -7
  33. package/esm2022/molecules/checkbox-column/checkbox-column.molecule.mjs +48 -21
  34. package/esm2022/molecules/date-input-field/date-input-field.molecule.mjs +2 -2
  35. package/esm2022/molecules/date-range-input-field/date-range-input-field.molecule.mjs +2 -2
  36. package/esm2022/molecules/file-input-field/file-input-field.molecule.mjs +2 -2
  37. package/esm2022/molecules/grid-item/grid-item.molecule.mjs +2 -2
  38. package/esm2022/molecules/list-item/index.mjs +2 -0
  39. package/esm2022/molecules/list-item/list-item.molecule.mjs +198 -0
  40. package/esm2022/molecules/list-item/ng-atomic-components-molecules-list-item.mjs +5 -0
  41. package/esm2022/molecules/loading-box/loading-box.molecule.mjs +2 -2
  42. package/esm2022/molecules/molecules.module.mjs +4 -1
  43. package/esm2022/molecules/navigation-list-item/navigation-list-item.molecule.mjs +2 -2
  44. package/esm2022/molecules/select-input-field/select-input-field.molecule.mjs +9 -5
  45. package/esm2022/molecules/smart-column/smart-column.molecule.mjs +129 -43
  46. package/esm2022/molecules/tree-column/tree-column.molecule.mjs +37 -25
  47. package/esm2022/organisms/action-buttons-section/action-buttons-section.organism.mjs +2 -2
  48. package/esm2022/organisms/action-input-section/action-input-section.organism.mjs +2 -2
  49. package/esm2022/organisms/agreement-input-section/agreement-input-section.organism.mjs +3 -3
  50. package/esm2022/organisms/card-input-section/card-input-section.organism.mjs +2 -2
  51. package/esm2022/organisms/cvc-and-exp-input-section/cvc-and-exp-input-section.organism.mjs +2 -2
  52. package/esm2022/organisms/date-input-section/date-input-section.organism.mjs +4 -4
  53. package/esm2022/organisms/date-range-input-section/date-range-input-section.organism.mjs +4 -4
  54. package/esm2022/organisms/definition-list/definition-list.organism.mjs +2 -2
  55. package/esm2022/organisms/file-input-section/file-input-section.organism.mjs +2 -2
  56. package/esm2022/organisms/filters-section/filters-section.organism.mjs +5 -5
  57. package/esm2022/organisms/graphql-editor/graphql-editor.organism.mjs +1 -1
  58. package/esm2022/organisms/grid-cards-section/grid-cards-section.organism.mjs +2 -2
  59. package/esm2022/organisms/heading/heading.organism.mjs +2 -2
  60. package/esm2022/{sheets/actions → organisms/list}/index.mjs +2 -2
  61. package/esm2022/organisms/list/list.organism.mjs +161 -0
  62. package/esm2022/{sheets/actions/ng-atomic-components-sheets-actions.mjs → organisms/list/ng-atomic-components-organisms-list.mjs} +1 -1
  63. package/esm2022/organisms/menu-footer/menu-footer.organism.mjs +2 -2
  64. package/esm2022/organisms/menu-header/menu-header.organism.mjs +2 -2
  65. package/esm2022/organisms/mermaid-section/mermaid-section.organism.mjs +39 -33
  66. package/esm2022/organisms/messages-section/messages-section.organism.mjs +2 -2
  67. package/esm2022/organisms/navigation-list/navigation-list.organism.mjs +2 -2
  68. package/esm2022/organisms/navigator/navigator.organism.mjs +49 -19
  69. package/esm2022/organisms/number-input-section/number-input-section.organism.mjs +2 -2
  70. package/esm2022/organisms/organisms.module.mjs +5 -5
  71. package/esm2022/organisms/paginator/paginator.organism.mjs +2 -2
  72. package/esm2022/organisms/password-input-section/password-input-section.organism.mjs +2 -2
  73. package/esm2022/organisms/select-input-section/select-input-section.organism.mjs +4 -4
  74. package/esm2022/organisms/selection-list/selection-list.organism.mjs +1 -1
  75. package/esm2022/organisms/slider-input-section/slider-input-section.organism.mjs +4 -4
  76. package/esm2022/organisms/social-login-section/social-login-section.organism.mjs +2 -2
  77. package/esm2022/organisms/table/index.mjs +2 -1
  78. package/esm2022/organisms/table/table.helpers.mjs +4 -4
  79. package/esm2022/organisms/table/table.organism.mjs +152 -141
  80. package/esm2022/organisms/text-input-section/text-input-section.organism.mjs +4 -4
  81. package/esm2022/organisms/textarea-section/textarea-section.organism.mjs +2 -2
  82. package/esm2022/organisms/thread-messages-section/thread-messages-section.organism.mjs +2 -2
  83. package/esm2022/organisms/tree-list/index.mjs +2 -0
  84. package/esm2022/organisms/tree-list/ng-atomic-components-organisms-tree-list.mjs +5 -0
  85. package/esm2022/organisms/tree-list/tree-list.organism.mjs +125 -0
  86. package/esm2022/pages/_index/index.page.mjs +169 -62
  87. package/esm2022/pages/columns/columns.page.mjs +10 -9
  88. package/esm2022/pages/form/form.page.mjs +27 -12
  89. package/esm2022/pages/terms/terms.page.mjs +2 -2
  90. package/esm2022/templates/_index/index.template.mjs +276 -155
  91. package/esm2022/templates/background/background.template.mjs +2 -2
  92. package/esm2022/templates/code-editor/code-editor.template.mjs +52 -15
  93. package/esm2022/templates/columns/columns.template.mjs +6 -4
  94. package/esm2022/templates/entrance/entrance.template.mjs +12 -11
  95. package/esm2022/templates/form/form.builder.mjs +93 -71
  96. package/esm2022/templates/form/form.template.mjs +47 -28
  97. package/esm2022/templates/icon-button-menu/icon-button-menu.template.mjs +69 -16
  98. package/esm2022/templates/menu/menu.template.mjs +2 -2
  99. package/esm2022/templates/messages/messages.template.mjs +71 -65
  100. package/esm2022/templates/selection/selection.template.mjs +2 -2
  101. package/esm2022/templates/settings/settings.template.mjs +2 -2
  102. package/extras/editor/editor.component.d.ts +19 -10
  103. package/fesm2022/ng-atomic-components-atoms-icon.mjs +2 -2
  104. package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs +76 -113
  105. package/fesm2022/ng-atomic-components-atoms-smart-menu-button.mjs.map +1 -1
  106. package/fesm2022/ng-atomic-components-extras-editor.mjs +79 -47
  107. package/fesm2022/ng-atomic-components-extras-editor.mjs.map +1 -1
  108. package/fesm2022/ng-atomic-components-frames-app.mjs +129 -69
  109. package/fesm2022/ng-atomic-components-frames-app.mjs.map +1 -1
  110. package/fesm2022/ng-atomic-components-frames-auto-layout.mjs +29 -7
  111. package/fesm2022/ng-atomic-components-frames-auto-layout.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-components-frames-columns.mjs +2 -2
  113. package/fesm2022/ng-atomic-components-frames-divider.mjs +2 -2
  114. package/fesm2022/ng-atomic-components-frames-drawer.mjs +2 -2
  115. package/fesm2022/ng-atomic-components-frames-entrance.mjs +2 -2
  116. package/fesm2022/ng-atomic-components-frames-fab.mjs +2 -2
  117. package/fesm2022/ng-atomic-components-frames-line-up.mjs +4 -8
  118. package/fesm2022/ng-atomic-components-frames-line-up.mjs.map +1 -1
  119. package/fesm2022/ng-atomic-components-frames-loading.mjs +2 -2
  120. package/fesm2022/ng-atomic-components-frames-progress-bar.mjs +60 -0
  121. package/fesm2022/ng-atomic-components-frames-progress-bar.mjs.map +1 -0
  122. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs +96 -41
  123. package/fesm2022/ng-atomic-components-frames-router-outlet.mjs.map +1 -1
  124. package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs +1 -48
  125. package/fesm2022/ng-atomic-components-frames-scroll-v2.mjs.map +1 -1
  126. package/fesm2022/ng-atomic-components-frames-scroll.mjs +31 -13
  127. package/fesm2022/ng-atomic-components-frames-scroll.mjs.map +1 -1
  128. package/fesm2022/ng-atomic-components-frames-side-app.mjs +81 -0
  129. package/fesm2022/ng-atomic-components-frames-side-app.mjs.map +1 -0
  130. package/fesm2022/ng-atomic-components-frames-side-nav.mjs +26 -20
  131. package/fesm2022/ng-atomic-components-frames-side-nav.mjs.map +1 -1
  132. package/fesm2022/ng-atomic-components-frames-smart-menu.mjs +2 -2
  133. package/fesm2022/ng-atomic-components-frames-tabs.mjs +12 -6
  134. package/fesm2022/ng-atomic-components-frames-tabs.mjs.map +1 -1
  135. package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs +10 -17
  136. package/fesm2022/ng-atomic-components-frames-vertical-hide.mjs.map +1 -1
  137. package/fesm2022/ng-atomic-components-frames.mjs +2 -2
  138. package/fesm2022/ng-atomic-components-frames.mjs.map +1 -1
  139. package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs +1 -1
  140. package/fesm2022/ng-atomic-components-molecules-action-input-field.mjs.map +1 -1
  141. package/fesm2022/ng-atomic-components-molecules-actions-column.mjs +12 -6
  142. package/fesm2022/ng-atomic-components-molecules-actions-column.mjs.map +1 -1
  143. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs +47 -21
  144. package/fesm2022/ng-atomic-components-molecules-checkbox-column.mjs.map +1 -1
  145. package/fesm2022/ng-atomic-components-molecules-date-input-field.mjs +2 -2
  146. package/fesm2022/ng-atomic-components-molecules-date-range-input-field.mjs +2 -2
  147. package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs +1 -1
  148. package/fesm2022/ng-atomic-components-molecules-file-input-field.mjs.map +1 -1
  149. package/fesm2022/ng-atomic-components-molecules-grid-item.mjs +2 -2
  150. package/fesm2022/ng-atomic-components-molecules-list-item.mjs +203 -0
  151. package/fesm2022/ng-atomic-components-molecules-list-item.mjs.map +1 -0
  152. package/fesm2022/ng-atomic-components-molecules-loading-box.mjs +2 -2
  153. package/fesm2022/ng-atomic-components-molecules-navigation-list-item.mjs +2 -2
  154. package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs +8 -4
  155. package/fesm2022/ng-atomic-components-molecules-select-input-field.mjs.map +1 -1
  156. package/fesm2022/ng-atomic-components-molecules-smart-column.mjs +128 -43
  157. package/fesm2022/ng-atomic-components-molecules-smart-column.mjs.map +1 -1
  158. package/fesm2022/ng-atomic-components-molecules-tree-column.mjs +36 -24
  159. package/fesm2022/ng-atomic-components-molecules-tree-column.mjs.map +1 -1
  160. package/fesm2022/ng-atomic-components-molecules.mjs +3 -0
  161. package/fesm2022/ng-atomic-components-molecules.mjs.map +1 -1
  162. package/fesm2022/ng-atomic-components-organisms-action-buttons-section.mjs +2 -2
  163. package/fesm2022/ng-atomic-components-organisms-action-input-section.mjs +2 -2
  164. package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs +2 -2
  165. package/fesm2022/ng-atomic-components-organisms-agreement-input-section.mjs.map +1 -1
  166. package/fesm2022/ng-atomic-components-organisms-card-input-section.mjs +2 -2
  167. package/fesm2022/ng-atomic-components-organisms-cvc-and-exp-input-section.mjs +2 -2
  168. package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs +3 -3
  169. package/fesm2022/ng-atomic-components-organisms-date-input-section.mjs.map +1 -1
  170. package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs +3 -3
  171. package/fesm2022/ng-atomic-components-organisms-date-range-input-section.mjs.map +1 -1
  172. package/fesm2022/ng-atomic-components-organisms-definition-list.mjs +2 -2
  173. package/fesm2022/ng-atomic-components-organisms-file-input-section.mjs +2 -2
  174. package/fesm2022/ng-atomic-components-organisms-filters-section.mjs +4 -4
  175. package/fesm2022/ng-atomic-components-organisms-filters-section.mjs.map +1 -1
  176. package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs +1 -1
  177. package/fesm2022/ng-atomic-components-organisms-graphql-editor.mjs.map +1 -1
  178. package/fesm2022/ng-atomic-components-organisms-grid-cards-section.mjs +2 -2
  179. package/fesm2022/ng-atomic-components-organisms-heading.mjs +2 -2
  180. package/fesm2022/ng-atomic-components-organisms-list.mjs +166 -0
  181. package/fesm2022/ng-atomic-components-organisms-list.mjs.map +1 -0
  182. package/fesm2022/ng-atomic-components-organisms-menu-footer.mjs +2 -2
  183. package/fesm2022/ng-atomic-components-organisms-menu-header.mjs +2 -2
  184. package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs +38 -32
  185. package/fesm2022/ng-atomic-components-organisms-mermaid-section.mjs.map +1 -1
  186. package/fesm2022/ng-atomic-components-organisms-messages-section.mjs +2 -2
  187. package/fesm2022/ng-atomic-components-organisms-navigation-list.mjs +2 -2
  188. package/fesm2022/ng-atomic-components-organisms-navigator.mjs +48 -18
  189. package/fesm2022/ng-atomic-components-organisms-navigator.mjs.map +1 -1
  190. package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs +2 -2
  191. package/fesm2022/ng-atomic-components-organisms-number-input-section.mjs.map +1 -1
  192. package/fesm2022/ng-atomic-components-organisms-paginator.mjs +2 -2
  193. package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs +2 -2
  194. package/fesm2022/ng-atomic-components-organisms-password-input-section.mjs.map +1 -1
  195. package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs +3 -3
  196. package/fesm2022/ng-atomic-components-organisms-select-input-section.mjs.map +1 -1
  197. package/fesm2022/ng-atomic-components-organisms-selection-list.mjs +1 -1
  198. package/fesm2022/ng-atomic-components-organisms-selection-list.mjs.map +1 -1
  199. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs +3 -3
  200. package/fesm2022/ng-atomic-components-organisms-slider-input-section.mjs.map +1 -1
  201. package/fesm2022/ng-atomic-components-organisms-social-login-section.mjs +2 -2
  202. package/fesm2022/ng-atomic-components-organisms-table.mjs +156 -145
  203. package/fesm2022/ng-atomic-components-organisms-table.mjs.map +1 -1
  204. package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs +3 -3
  205. package/fesm2022/ng-atomic-components-organisms-text-input-section.mjs.map +1 -1
  206. package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs +2 -2
  207. package/fesm2022/ng-atomic-components-organisms-textarea-section.mjs.map +1 -1
  208. package/fesm2022/ng-atomic-components-organisms-thread-messages-section.mjs +2 -2
  209. package/fesm2022/ng-atomic-components-organisms-tree-list.mjs +132 -0
  210. package/fesm2022/ng-atomic-components-organisms-tree-list.mjs.map +1 -0
  211. package/fesm2022/ng-atomic-components-organisms.mjs +4 -4
  212. package/fesm2022/ng-atomic-components-organisms.mjs.map +1 -1
  213. package/fesm2022/ng-atomic-components-pages-_index.mjs +168 -62
  214. package/fesm2022/ng-atomic-components-pages-_index.mjs.map +1 -1
  215. package/fesm2022/ng-atomic-components-pages-columns.mjs +9 -8
  216. package/fesm2022/ng-atomic-components-pages-columns.mjs.map +1 -1
  217. package/fesm2022/ng-atomic-components-pages-form.mjs +26 -11
  218. package/fesm2022/ng-atomic-components-pages-form.mjs.map +1 -1
  219. package/fesm2022/ng-atomic-components-pages-terms.mjs +1 -1
  220. package/fesm2022/ng-atomic-components-pages-terms.mjs.map +1 -1
  221. package/fesm2022/ng-atomic-components-templates-_index.mjs +276 -155
  222. package/fesm2022/ng-atomic-components-templates-_index.mjs.map +1 -1
  223. package/fesm2022/ng-atomic-components-templates-background.mjs +2 -2
  224. package/fesm2022/ng-atomic-components-templates-code-editor.mjs +51 -14
  225. package/fesm2022/ng-atomic-components-templates-code-editor.mjs.map +1 -1
  226. package/fesm2022/ng-atomic-components-templates-columns.mjs +5 -3
  227. package/fesm2022/ng-atomic-components-templates-columns.mjs.map +1 -1
  228. package/fesm2022/ng-atomic-components-templates-entrance.mjs +11 -10
  229. package/fesm2022/ng-atomic-components-templates-entrance.mjs.map +1 -1
  230. package/fesm2022/ng-atomic-components-templates-form.mjs +139 -99
  231. package/fesm2022/ng-atomic-components-templates-form.mjs.map +1 -1
  232. package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs +68 -15
  233. package/fesm2022/ng-atomic-components-templates-icon-button-menu.mjs.map +1 -1
  234. package/fesm2022/ng-atomic-components-templates-menu.mjs +2 -2
  235. package/fesm2022/ng-atomic-components-templates-messages.mjs +71 -65
  236. package/fesm2022/ng-atomic-components-templates-messages.mjs.map +1 -1
  237. package/fesm2022/ng-atomic-components-templates-selection.mjs +2 -2
  238. package/fesm2022/ng-atomic-components-templates-settings.mjs +2 -2
  239. package/fesm2022/ng-atomic-components.mjs +7 -3
  240. package/fesm2022/ng-atomic-components.mjs.map +1 -1
  241. package/frames/app/app.frame.d.ts +13 -1
  242. package/frames/auto-layout/auto-layout.frame.d.ts +7 -1
  243. package/frames/progress-bar/index.d.ts +1 -0
  244. package/frames/progress-bar/progress-bar.frame.d.ts +14 -0
  245. package/frames/router-outlet/router-outlet.frame.d.ts +20 -9
  246. package/frames/scroll/scroll.frame.d.ts +5 -1
  247. package/frames/scroll-v2/index.d.ts +1 -1
  248. package/frames/side-app/index.d.ts +1 -0
  249. package/frames/side-app/side-app.frame.d.ts +20 -0
  250. package/frames/side-nav/side-nav.frame.d.ts +6 -2
  251. package/frames/tabs/tabs.frame.d.ts +2 -1
  252. package/frames/vertical-hide/vertical-hide.frame.d.ts +2 -2
  253. package/molecules/actions-column/actions-column.molecule.d.ts +3 -2
  254. package/molecules/checkbox-column/checkbox-column.molecule.d.ts +12 -4
  255. package/molecules/list-item/index.d.ts +1 -0
  256. package/molecules/list-item/list-item.molecule.d.ts +50 -0
  257. package/molecules/molecules.module.d.ts +3 -0
  258. package/molecules/smart-column/smart-column.molecule.d.ts +34 -9
  259. package/molecules/tree-column/tree-column.molecule.d.ts +6 -2
  260. package/organisms/list/index.d.ts +1 -0
  261. package/organisms/{smart-list/smart-list.organism.d.ts → list/list.organism.d.ts} +11 -11
  262. package/organisms/mermaid-section/mermaid-section.organism.d.ts +10 -10
  263. package/organisms/navigator/navigator.organism.d.ts +8 -6
  264. package/organisms/organisms.module.d.ts +1 -1
  265. package/organisms/table/index.d.ts +1 -0
  266. package/organisms/table/table.helpers.d.ts +1 -1
  267. package/organisms/table/table.organism.d.ts +32 -1
  268. package/organisms/tree-list/index.d.ts +1 -0
  269. package/organisms/tree-list/tree-list.organism.d.ts +33 -0
  270. package/package.json +37 -25
  271. package/pages/_index/index.page.d.ts +72 -43
  272. package/pages/columns/columns.page.d.ts +5 -2
  273. package/pages/form/form.page.d.ts +11 -2
  274. package/templates/_index/index.template.d.ts +40 -11
  275. package/templates/code-editor/code-editor.template.d.ts +6 -3
  276. package/templates/entrance/entrance.template.d.ts +1 -1
  277. package/templates/form/form.builder.d.ts +10 -3
  278. package/templates/form/form.template.d.ts +2 -1
  279. package/templates/icon-button-menu/icon-button-menu.template.d.ts +3 -2
  280. package/templates/messages/messages.template.d.ts +21 -17
  281. package/esm2022/frames/scroll-v2/scroll.frame.mjs +0 -46
  282. package/esm2022/organisms/smart-list/index.mjs +0 -2
  283. package/esm2022/organisms/smart-list/ng-atomic-components-organisms-smart-list.mjs +0 -5
  284. package/esm2022/organisms/smart-list/smart-list.organism.mjs +0 -218
  285. package/esm2022/sheets/actions/actions.sheet.mjs +0 -45
  286. package/esm2022/sheets/index.mjs +0 -3
  287. package/esm2022/sheets/ng-atomic-components-sheets.mjs +0 -5
  288. package/esm2022/sheets/sheets.module.mjs +0 -25
  289. package/esm2022/sheets/sheets.service.mjs +0 -20
  290. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs +0 -223
  291. package/fesm2022/ng-atomic-components-organisms-smart-list.mjs.map +0 -1
  292. package/fesm2022/ng-atomic-components-sheets-actions.mjs +0 -52
  293. package/fesm2022/ng-atomic-components-sheets-actions.mjs.map +0 -1
  294. package/fesm2022/ng-atomic-components-sheets.mjs +0 -48
  295. package/fesm2022/ng-atomic-components-sheets.mjs.map +0 -1
  296. package/frames/scroll-v2/scroll.frame.d.ts +0 -9
  297. package/organisms/smart-list/index.d.ts +0 -1
  298. package/sheets/actions/actions.sheet.d.ts +0 -9
  299. package/sheets/actions/index.d.ts +0 -1
  300. package/sheets/index.d.ts +0 -2
  301. package/sheets/sheets.module.d.ts +0 -11
  302. package/sheets/sheets.service.d.ts +0 -10
@@ -1,7 +1,7 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, Directive, effect, inject, input } from '@angular/core';
2
2
  import { DateInputSectionOrganism } from '@ng-atomic/components/organisms/date-input-section';
3
3
  import { DomainPipe } from '@ng-atomic/common/pipes/domain';
4
- import { ActionInputSectionOrganismStore } from '@ng-atomic/components/organisms/action-input-section';
4
+ import { InjectableComponent } from '@ng-atomic/core';
5
5
  import { NgAtomicComponent } from '@ng-atomic/core';
6
6
  import { FileInputSectionOrganism, FileInputSectionOrganismStore } from '@ng-atomic/components/organisms/file-input-section';
7
7
  import { DateRangeInputSectionOrganism } from '@ng-atomic/components/organisms/date-range-input-section';
@@ -33,7 +33,7 @@ var ActionId;
33
33
  ActionId["FILE_SELECTED"] = "[@ng-atomic/components:templates/form/ng-atomic-form-section-switcher] File selected";
34
34
  ActionId["CANCEL"] = "[@ng-atomic/components:templates/form/ng-atomic-form-section-switcher] Cancel";
35
35
  })(ActionId || (ActionId = {}));
36
- export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
36
+ export class NgAtomicFormSectionSwitcherStore extends InjectableComponent {
37
37
  constructor() {
38
38
  super(...arguments);
39
39
  this.name = input.required();
@@ -41,6 +41,22 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
41
41
  this.field = input.required();
42
42
  }
43
43
  static { this.ActionId = ActionId; }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionSwitcherStore, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
45
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: NgAtomicFormSectionSwitcherStore, isStandalone: true, selector: "ng-atomic-form-section-switcher", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionSwitcherStore, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: 'ng-atomic-form-section-switcher',
51
+ standalone: true,
52
+ }]
53
+ }] });
54
+ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
55
+ constructor() {
56
+ super(...arguments);
57
+ this.store = inject(NgAtomicFormSectionSwitcherStore);
58
+ }
59
+ static { this.ActionId = ActionId; }
44
60
  dispatchFileInputAction(action, name) {
45
61
  switch (action.id) {
46
62
  case FileInputSectionOrganism.ActionId.FILE_SELECTED: {
@@ -52,14 +68,14 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
52
68
  }
53
69
  }
54
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionSwitcher, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NgAtomicFormSectionSwitcher, isStandalone: true, selector: "ng-atomic-form-section-switcher", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
56
- @if (field(); as field) {
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NgAtomicFormSectionSwitcher, isStandalone: true, selector: "ng-atomic-form-section-switcher", usesInheritance: true, hostDirectives: [{ directive: NgAtomicFormSectionSwitcherStore, inputs: ["name", "name", "control", "control", "field", "field"] }], ngImport: i0, template: `
72
+ @if (store.field(); as field) {
57
73
  @switch (field.type) {
58
74
  @case ('select') {
59
75
  @defer {
60
76
  <organisms-select-input-section injectable
61
- [label]="name() | domain"
62
- [control]="control()"
77
+ [label]="store.name() | domain"
78
+ [control]="store.control()"
63
79
  [hint]="field.hint"
64
80
  [options]="field.options"
65
81
  [placeholder]="field.placeholder"
@@ -70,19 +86,19 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
70
86
  }
71
87
  }
72
88
  @case ('date') {
73
- <organisms-date-input-section
74
- [label]="name() | domain"
75
- [hint]="field.hint"
76
- [control]="control()"
77
- [actions]="field.actions"
78
- (action)="dispatch($event)"
79
- />
89
+ <organisms-date-input-section
90
+ [label]="store.name() | domain"
91
+ [hint]="field.hint"
92
+ [control]="store.control()"
93
+ [actions]="field.actions"
94
+ (action)="dispatch($event)"
95
+ />
80
96
  }
81
97
  @case ('date-range') {
82
98
  <organisms-date-range-input-section
83
- [label]="name() | domain"
99
+ [label]="store.name() | domain"
84
100
  [hint]="field.hint"
85
- [control]="control()"
101
+ [control]="store.control()"
86
102
  [actions]="field.actions"
87
103
  (action)="dispatch($event)"
88
104
  />
@@ -90,8 +106,8 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
90
106
  @case ('text') {
91
107
  @defer {
92
108
  <organisms-text-input-section injectable
93
- [label]="name() | domain"
94
- [control]="control()"
109
+ [label]="store.name() | domain"
110
+ [control]="store.control()"
95
111
  [actions]="field.actions"
96
112
  [hint]="field.hint"
97
113
  [placeholder]="field.placeholder"
@@ -103,8 +119,8 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
103
119
  @case ('number') {
104
120
  @defer {
105
121
  <organisms-number-input-section injectable
106
- [label]="name() | domain"
107
- [control]="control()"
122
+ [label]="store.name() | domain"
123
+ [control]="store.control()"
108
124
  [actions]="field.actions"
109
125
  [hint]="field.hint"
110
126
  [placeholder]="field.placeholder"
@@ -115,8 +131,8 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
115
131
  @case ('textarea') {
116
132
  @defer {
117
133
  <organisms-textarea-section injectable
118
- [label]="name() | domain"
119
- [control]="control()"
134
+ [label]="store.name() | domain"
135
+ [control]="store.control()"
120
136
  [hint]="field.hint"
121
137
  [rows]="field.rows"
122
138
  [placeholder]="field.placeholder"
@@ -127,8 +143,8 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
127
143
  @case ('password') {
128
144
  @defer {
129
145
  <organisms-password-input-section injectable
130
- [label]="name() | domain"
131
- [control]="control()"
146
+ [label]="store.name() | domain"
147
+ [control]="store.control()"
132
148
  [hint]="field.hint"
133
149
  [placeholder]="field.placeholder"
134
150
  [actions]="field.actions"
@@ -149,19 +165,19 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
149
165
  @case ('file') {
150
166
  @defer {
151
167
  <organisms-file-input-section injectable
152
- [label]="name() | domain"
153
- [control]="control()"
168
+ [label]="store.name() | domain"
169
+ [control]="store.control()"
154
170
  [hint]="field.hint"
155
171
  [progress]="field?.progress"
156
- (action)="dispatchFileInputAction($event, name())"
172
+ (action)="dispatchFileInputAction($event, store.name())"
157
173
  />
158
174
  }
159
175
  }
160
176
  @case ('slider') {
161
177
  @defer {
162
178
  <organisms-slider-input-section injectable
163
- [label]="name() | domain"
164
- [control]="control()"
179
+ [label]="store.name() | domain"
180
+ [control]="store.control()"
165
181
  [max]="field?.slider?.max"
166
182
  [min]="field?.slider?.min"
167
183
  [step]="field?.slider?.step"
@@ -172,7 +188,7 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
172
188
  @case ('agreement') {
173
189
  @defer {
174
190
  <organisms-agreement-input-section injectable
175
- [control]="control()"
191
+ [control]="store.control()"
176
192
  [labelTemp]="field?.labelTemp"
177
193
  />
178
194
  }
@@ -180,7 +196,7 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
180
196
  @case ('preview') {
181
197
  @defer {
182
198
  <organisms-video-section injectable
183
- [src]="control().value"
199
+ [src]="store.control().value"
184
200
  [autoplay]="false"
185
201
  />
186
202
  }
@@ -188,7 +204,7 @@ export class NgAtomicFormSectionSwitcher extends NgAtomicComponent {
188
204
  @case ('preview:image') {
189
205
  @defer {
190
206
  <organisms-image-preview-section
191
- [src]="control().value"
207
+ [src]="store.control().value"
192
208
  />
193
209
  }
194
210
  }
@@ -204,7 +220,6 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
204
220
  DomainPipe,
205
221
  ActionButtonsSectionOrganismStore,
206
222
  AgreementInputSectionOrganism,
207
- ActionInputSectionOrganismStore,
208
223
  FileInputSectionOrganismStore,
209
224
  DateInputSectionOrganism,
210
225
  DateRangeInputSectionOrganism,
@@ -217,13 +232,13 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
217
232
  ImagePreviewSectionOrganism,
218
233
  PasswordInputSectionOrganismStore,
219
234
  ], template: `
220
- @if (field(); as field) {
235
+ @if (store.field(); as field) {
221
236
  @switch (field.type) {
222
237
  @case ('select') {
223
238
  @defer {
224
239
  <organisms-select-input-section injectable
225
- [label]="name() | domain"
226
- [control]="control()"
240
+ [label]="store.name() | domain"
241
+ [control]="store.control()"
227
242
  [hint]="field.hint"
228
243
  [options]="field.options"
229
244
  [placeholder]="field.placeholder"
@@ -234,19 +249,19 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
234
249
  }
235
250
  }
236
251
  @case ('date') {
237
- <organisms-date-input-section
238
- [label]="name() | domain"
239
- [hint]="field.hint"
240
- [control]="control()"
241
- [actions]="field.actions"
242
- (action)="dispatch($event)"
243
- />
252
+ <organisms-date-input-section
253
+ [label]="store.name() | domain"
254
+ [hint]="field.hint"
255
+ [control]="store.control()"
256
+ [actions]="field.actions"
257
+ (action)="dispatch($event)"
258
+ />
244
259
  }
245
260
  @case ('date-range') {
246
261
  <organisms-date-range-input-section
247
- [label]="name() | domain"
262
+ [label]="store.name() | domain"
248
263
  [hint]="field.hint"
249
- [control]="control()"
264
+ [control]="store.control()"
250
265
  [actions]="field.actions"
251
266
  (action)="dispatch($event)"
252
267
  />
@@ -254,8 +269,8 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
254
269
  @case ('text') {
255
270
  @defer {
256
271
  <organisms-text-input-section injectable
257
- [label]="name() | domain"
258
- [control]="control()"
272
+ [label]="store.name() | domain"
273
+ [control]="store.control()"
259
274
  [actions]="field.actions"
260
275
  [hint]="field.hint"
261
276
  [placeholder]="field.placeholder"
@@ -267,8 +282,8 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
267
282
  @case ('number') {
268
283
  @defer {
269
284
  <organisms-number-input-section injectable
270
- [label]="name() | domain"
271
- [control]="control()"
285
+ [label]="store.name() | domain"
286
+ [control]="store.control()"
272
287
  [actions]="field.actions"
273
288
  [hint]="field.hint"
274
289
  [placeholder]="field.placeholder"
@@ -279,8 +294,8 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
279
294
  @case ('textarea') {
280
295
  @defer {
281
296
  <organisms-textarea-section injectable
282
- [label]="name() | domain"
283
- [control]="control()"
297
+ [label]="store.name() | domain"
298
+ [control]="store.control()"
284
299
  [hint]="field.hint"
285
300
  [rows]="field.rows"
286
301
  [placeholder]="field.placeholder"
@@ -291,8 +306,8 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
291
306
  @case ('password') {
292
307
  @defer {
293
308
  <organisms-password-input-section injectable
294
- [label]="name() | domain"
295
- [control]="control()"
309
+ [label]="store.name() | domain"
310
+ [control]="store.control()"
296
311
  [hint]="field.hint"
297
312
  [placeholder]="field.placeholder"
298
313
  [actions]="field.actions"
@@ -313,19 +328,19 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
313
328
  @case ('file') {
314
329
  @defer {
315
330
  <organisms-file-input-section injectable
316
- [label]="name() | domain"
317
- [control]="control()"
331
+ [label]="store.name() | domain"
332
+ [control]="store.control()"
318
333
  [hint]="field.hint"
319
334
  [progress]="field?.progress"
320
- (action)="dispatchFileInputAction($event, name())"
335
+ (action)="dispatchFileInputAction($event, store.name())"
321
336
  />
322
337
  }
323
338
  }
324
339
  @case ('slider') {
325
340
  @defer {
326
341
  <organisms-slider-input-section injectable
327
- [label]="name() | domain"
328
- [control]="control()"
342
+ [label]="store.name() | domain"
343
+ [control]="store.control()"
329
344
  [max]="field?.slider?.max"
330
345
  [min]="field?.slider?.min"
331
346
  [step]="field?.slider?.step"
@@ -336,7 +351,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
336
351
  @case ('agreement') {
337
352
  @defer {
338
353
  <organisms-agreement-input-section injectable
339
- [control]="control()"
354
+ [control]="store.control()"
340
355
  [labelTemp]="field?.labelTemp"
341
356
  />
342
357
  }
@@ -344,7 +359,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
344
359
  @case ('preview') {
345
360
  @defer {
346
361
  <organisms-video-section injectable
347
- [src]="control().value"
362
+ [src]="store.control().value"
348
363
  [autoplay]="false"
349
364
  />
350
365
  }
@@ -352,18 +367,24 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.1.2", ng
352
367
  @case ('preview:image') {
353
368
  @defer {
354
369
  <organisms-image-preview-section
355
- [src]="control().value"
370
+ [src]="store.control().value"
356
371
  />
357
372
  }
358
373
  }
359
374
  @case ('hidden') { }
360
375
  }
361
376
  }
362
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}\n"] }]
377
+ `, hostDirectives: [
378
+ {
379
+ directive: NgAtomicFormSectionSwitcherStore,
380
+ inputs: ['name', 'control', 'field'],
381
+ },
382
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}\n"] }]
363
383
  }], ctorParameters: null, propDecorators: null }) });
364
384
  export class NgAtomicFormSectionBuilder extends NgAtomicComponent {
385
+ static { this.ActionId = ActionId; }
365
386
  constructor() {
366
- super(...arguments);
387
+ super();
367
388
  this.form = input.required();
368
389
  this.formFlatExcludes = input([]);
369
390
  this.fieldMap = input.required();
@@ -372,8 +393,7 @@ export class NgAtomicFormSectionBuilder extends NgAtomicComponent {
372
393
  if (get(fieldMap, name))
373
394
  return get(fieldMap, name);
374
395
  for (const key of Object.keys(fieldMap ?? {})) {
375
- const regex = new RegExp(`^${key.replace(/\./g, '\\.')}(\\..+)?$`);
376
- if (regex.test(name))
396
+ if (new RegExp(key).test(name))
377
397
  return get(fieldMap, key);
378
398
  }
379
399
  return undefined;
@@ -384,9 +404,11 @@ export class NgAtomicFormSectionBuilder extends NgAtomicComponent {
384
404
  field: _get(this.fieldMap(), name) ?? { type: 'text' },
385
405
  }));
386
406
  });
407
+ effect(() => {
408
+ console.debug('[NgAtomicFormSectionBuilder] controlEntries:', this.controlEntries());
409
+ });
387
410
  }
388
- static { this.ActionId = ActionId; }
389
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionBuilder, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
411
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
390
412
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NgAtomicFormSectionBuilder, isStandalone: true, selector: "ng-atomic-form-section-builder", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, formFlatExcludes: { classPropertyName: "formFlatExcludes", publicName: "formFlatExcludes", isSignal: true, isRequired: false, transformFunction: null }, fieldMap: { classPropertyName: "fieldMap", publicName: "fieldMap", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
391
413
  @for (entry of controlEntries(); track entry.name;) {
392
414
  <ng-atomic-form-section-switcher
@@ -396,7 +418,7 @@ export class NgAtomicFormSectionBuilder extends NgAtomicComponent {
396
418
  (action)="dispatch($event)"
397
419
  />
398
420
  }
399
- `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: NgAtomicFormSectionSwitcher, selector: "ng-atomic-form-section-switcher", inputs: ["name", "control", "field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
421
+ `, isInline: true, styles: [":host{--horizontal-padding: 16px;--horizontal-padding-SCOPED-IN-form-builder-zu8B: var(--horizontal-padding);--vertical-padding: 24px;--vertical-padding-SCOPED-IN-form-builder-zu8B: var(--vertical-padding)}:host{display:contents}:host ng-atomic-form-section-switcher ::ng-deep>*{--horizontal-padding: var(--horizontal-padding-SCOPED-IN-form-builder-zu8B);--vertical-padding: var(--vertical-padding-SCOPED-IN-form-builder-zu8B)}\n"], dependencies: [{ kind: "component", type: NgAtomicFormSectionSwitcher, selector: "ng-atomic-form-section-switcher" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
400
422
  }
401
423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgAtomicFormSectionBuilder, decorators: [{
402
424
  type: Component,
@@ -411,6 +433,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
411
433
  (action)="dispatch($event)"
412
434
  />
413
435
  }
414
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}\n"] }]
415
- }] });
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2Zvcm0vZm9ybS5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUc5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHNUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFNN0gsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHaEMsU0FBUyxZQUFZLENBQUMsUUFBYSxFQUFFLEVBQXdDLEVBQUUsV0FBcUIsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFO0lBQy9HLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFNLEVBQUUsRUFBRTtRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2xELElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLEVB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QU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsSUFBSTtnQkFDSixPQUFPO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQzthQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0tBQ0o7YUF0QmlCLGFBQVEsR0FBRyxRQUFRLEFBQVgsQ0FBWTs4R0FEekIsMEJBQTBCO2tHQUExQiwwQkFBMEIsMGdCQWIzQjs7Ozs7Ozs7O0dBU1QsbUdBakNVLDJCQUEyQjs7MkZBcUMzQiwwQkFBMEI7a0JBbkJ0QyxTQUFTO2lDQUNJLElBQUksWUFDTixnQ0FBZ0MsV0FDakM7d0JBQ1AsMkJBQTJCO3FCQUM1QixZQUNTOzs7Ozs7Ozs7R0FTVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dGFyZWFTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGV4dGFyZWEtc2VjdGlvbic7XG5pbXBvcnQgeyBUZXh0SW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGV4dC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IERhdGVJbnB1dFNlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvZGF0ZS1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFNlbGVjdElucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlbGVjdC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1GaWVsZCwgRm9ybUZpZWxkTWFwIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc21hcnQtZmllbGQnO1xuaW1wb3J0IHsgRG9tYWluUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RvbWFpbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBfY29tcHV0ZWQsIEFjdGlvbiB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25JbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9hY3Rpb24taW5wdXQtc2VjdGlvbic7XG5pbXBvcnQgeyBOZ0F0b21pY0NvbXBvbmVudCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBGaWxlSW5wdXRTZWN0aW9uT3JnYW5pc20sIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9maWxlLWlucHV0LXNlY3Rpb24nO1xuaW1wb3J0IHsgQWdyZWVtZW50SW5wdXRTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FncmVlbWVudC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFZpZGVvU2VjdGlvbk9yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy92aWRlby1zZWN0aW9uJztcbmltcG9ydCB7IE51bWJlcklucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL251bWJlci1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IEltYWdlUHJldmlld1NlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvaW1hZ2UtcHJldmlldy1zZWN0aW9uJztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvcGFzc3dvcmQtaW5wdXQtc2VjdGlvbic7XG5pbXBvcnQgeyBEYXRlUmFuZ2VJbnB1dFNlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvZGF0ZS1yYW5nZS1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFNsaWRlcklucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3NsaWRlci1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBY3Rpb25CdXR0b25zU2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FjdGlvbi1idXR0b25zLXNlY3Rpb24nO1xuXG5mdW5jdGlvbiB3YWxrQ29udHJvbHMoY29udHJvbHM6IGFueSwgY2I6IChuYW1lOiBzdHJpbmcsIGNvbnRyb2w6IGFueSkgPT4gdm9pZCwgZXhjbHVkZXM6IHN0cmluZ1tdID0gW10sIG5hbWUgPSAnJykge1xuICBPYmplY3QuZW50cmllcyhjb250cm9scykuZm9yRWFjaCgoW2tleSwgY29udHJvbF06IGFueSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBuYW1lID09PSAnJyA/IGtleSA6IGAke25hbWV9LiR7a2V5fWA7XG4gICAgaWYgKGV4Y2x1ZGVzLmluY2x1ZGVzKHBhdGgpKSB7XG4gICAgICBjYihwYXRoLCBjb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgIHdhbGtDb250cm9scyhjb250cm9sLmNvbnRyb2xzLCBjYiwgZXhjbHVkZXMsIHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihwYXRoLCBjb250cm9sKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmbGF0Q29udHJvbHMoZm9ybTogRm9ybUdyb3VwLCBleGNsdWRlczogc3RyaW5nW10pOiBbc3RyaW5nLCBBYnN0cmFjdENvbnRyb2xdW10ge1xuICBjb25zdCBjb250cm9sTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFic3RyYWN0Q29udHJvbD4oKTtcbiAgd2Fsa0NvbnRyb2xzKGZvcm0/LmNvbnRyb2xzLCAobmFtZSwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBjb250cm9sTWFwLnNldChuYW1lLCBjb250cm9sKSwgW1xuICAgIC4uLmV4Y2x1ZGVzLFxuICBdKTtcbiAgcmV0dXJuIFsuLi5jb250cm9sTWFwLmVudHJpZXMoKV07XG59XG5cblxuZW51bSBBY3Rpb25JZCB7XG4gIEZJTEVfU0VMRUNURUQgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czp0ZW1wbGF0ZXMvZm9ybS9uZy1hdG9taWMtZm9ybS1zZWN0aW9uLXN3aXRjaGVyXSBGaWxlIHNlbGVjdGVkJyxcbiAgQ0FOQ0VMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6dGVtcGxhdGVzL2Zvcm0vbmctYXRvbWljLWZvcm0tc2VjdGlvbi1zd2l0Y2hlcl0gQ2FuY2VsJyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctYXRvbWljLWZvcm0tc2VjdGlvbi1zd2l0Y2hlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEb21haW5QaXBlLFxuICAgIEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBBZ3JlZW1lbnRJbnB1dFNlY3Rpb25PcmdhbmlzbSxcbiAgICBBY3Rpb25JbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICAgIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICAgIERhdGVJbnB1dFNlY3Rpb25PcmdhbmlzbSxcbiAgICBEYXRlUmFuZ2VJbnB1dFNlY3Rpb25PcmdhbmlzbSxcbiAgICBUZXh0SW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBOdW1iZXJJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICAgIFRleHRhcmVhU2VjdGlvbk9yZ2FuaXNtU3RvcmUsXG4gICAgU2VsZWN0SW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBTbGlkZXJJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICAgIFZpZGVvU2VjdGlvbk9yZ2FuaXNtLFxuICAgIEltYWdlUHJldmlld1NlY3Rpb25PcmdhbmlzbSxcbiAgICBQYXNzd29yZElucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChmaWVsZCgpOyBhcyBmaWVsZCkge1xuICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1zZWxlY3QtaW5wdXQtc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJuYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIFthY3Rpb25zXT1cImZpZWxkLmFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmllbGQ/Lm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZGF0ZScpIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtZGF0ZS1pbnB1dC1zZWN0aW9uXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJuYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQuYWN0aW9uc1wiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZGF0ZS1yYW5nZScpIHtcbiAgICAgICAgICA8b3JnYW5pc21zLWRhdGUtcmFuZ2UtaW5wdXQtc2VjdGlvblxuICAgICAgICAgICAgW2xhYmVsXT1cIm5hbWUoKSB8IGRvbWFpblwiXG4gICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcbiAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2woKVwiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJmaWVsZC5hY3Rpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3RleHQnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtdGV4dC1pbnB1dC1zZWN0aW9uIGluamVjdGFibGVcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hbWUoKSB8IGRvbWFpblwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2woKVwiXG4gICAgICAgICAgICAgIFthY3Rpb25zXT1cImZpZWxkLmFjdGlvbnNcIlxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW2F1dG9Db21wbGV0ZV09XCJmaWVsZC5hdXRvQ29tcGxldGVcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtbnVtYmVyLWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwibmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQuYWN0aW9uc1wiXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy10ZXh0YXJlYS1zZWN0aW9uIGluamVjdGFibGVcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hbWUoKSB8IGRvbWFpblwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2woKVwiXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgICBbcm93c109XCJmaWVsZC5yb3dzXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgncGFzc3dvcmQnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtcGFzc3dvcmQtaW5wdXQtc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJuYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQuYWN0aW9uc1wiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2FjdGlvbicpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1hY3Rpb24tYnV0dG9ucy1zZWN0aW9uXG4gICAgICAgICAgICAgIFthY3Rpb25zXT1cImZpZWxkPy5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiZmllbGQ/LmJ1dHRvblR5cGVcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgICBpbmplY3RhYmxlXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtZmlsZS1pbnB1dC1zZWN0aW9uIGluamVjdGFibGVcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hbWUoKSB8IGRvbWFpblwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2woKVwiXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgICBbcHJvZ3Jlc3NdPVwiZmllbGQ/LnByb2dyZXNzXCJcbiAgICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaEZpbGVJbnB1dEFjdGlvbigkZXZlbnQsIG5hbWUoKSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzbGlkZXInKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtc2xpZGVyLWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwibmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW21heF09XCJmaWVsZD8uc2xpZGVyPy5tYXhcIlxuICAgICAgICAgICAgICBbbWluXT1cImZpZWxkPy5zbGlkZXI/Lm1pblwiXG4gICAgICAgICAgICAgIFtzdGVwXT1cImZpZWxkPy5zbGlkZXI/LnN0ZXBcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdhZ3JlZW1lbnQnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtYWdyZWVtZW50LWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICAgICAgICAgICAgICBbbGFiZWxUZW1wXT1cImZpZWxkPy5sYWJlbFRlbXBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdwcmV2aWV3Jykge1xuICAgICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgICA8b3JnYW5pc21zLXZpZGVvLXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbc3JjXT1cImNvbnRyb2woKS52YWx1ZVwiXG4gICAgICAgICAgICAgIFthdXRvcGxheV09XCJmYWxzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3ByZXZpZXc6aW1hZ2UnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtaW1hZ2UtcHJldmlldy1zZWN0aW9uXG4gICAgICAgICAgICAgIFtzcmNdPVwiY29udHJvbCgpLnZhbHVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnaGlkZGVuJykgeyB9XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3R5bGVzOiBbYDpob3N0IHsgZGlzcGxheTogY29udGVudHM7IH1gXVxufSlcbmV4cG9ydCBjbGFzcyBOZ0F0b21pY0Zvcm1TZWN0aW9uU3dpdGNoZXIgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICByZWFkb25seSBuYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBjb250cm9sID0gaW5wdXQucmVxdWlyZWQ8QWJzdHJhY3RDb250cm9sPigpO1xuICByZWFkb25seSBmaWVsZCA9IGlucHV0LnJlcXVpcmVkPEZvcm1GaWVsZE1hcCB8IEZvcm1GaWVsZD4oKTtcblxuICBwcm90ZWN0ZWQgZGlzcGF0Y2hGaWxlSW5wdXRBY3Rpb24oYWN0aW9uOiBBY3Rpb24sIG5hbWU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoYWN0aW9uLmlkKSB7XG4gICAgICBjYXNlIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5GSUxFX1NFTEVDVEVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgcGF5bG9hZDoge3Njb3BlOiBuYW1lLCBmaWxlczogYWN0aW9uLnBheWxvYWR9fSk7XG4gICAgICB9XG4gICAgICBjYXNlIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5DQU5DRUw6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5DQU5DRUwsIHBheWxvYWQ6IHtzY29wZTogbmFtZX19KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbmctYXRvbWljLWZvcm0tc2VjdGlvbi1idWlsZGVyJyxcbiAgaW1wb3J0czogW1xuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25Td2l0Y2hlcixcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAZm9yIChlbnRyeSBvZiBjb250cm9sRW50cmllcygpOyB0cmFjayBlbnRyeS5uYW1lOykge1xuICAgICAgPG5nLWF0b21pYy1mb3JtLXNlY3Rpb24tc3dpdGNoZXJcbiAgICAgICAgW25hbWVdPVwiZW50cnkubmFtZVwiXG4gICAgICAgIFtjb250cm9sXT1cImVudHJ5LmNvbnRyb2xcIlxuICAgICAgICBbZmllbGRdPVwiZW50cnkuZmllbGRcIlxuICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgLz5cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZXM6IGA6aG9zdCB7IGRpc3BsYXk6IGNvbnRlbnRzOyB9YCxcbn0pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNGb3JtU2VjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA+KCk7XG4gIHJlYWRvbmx5IGZvcm1GbGF0RXhjbHVkZXMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBmaWVsZE1hcCA9IGlucHV0LnJlcXVpcmVkPEZvcm1GaWVsZE1hcD4oKTtcblxuICByZWFkb25seSBjb250cm9sRW50cmllcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBmdW5jdGlvbiBfZ2V0KGZpZWxkTWFwOiBGb3JtRmllbGRNYXAsIG5hbWU6IHN0cmluZykge1xuICAgICAgaWYgKGdldChmaWVsZE1hcCwgbmFtZSkpIHJldHVybiBnZXQoZmllbGRNYXAsIG5hbWUpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGRNYXAgPz8ge30pKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7a2V5LnJlcGxhY2UoL1xcLi9nLCAnXFxcXC4nKX0oXFxcXC4uKyk/JGApO1xuICAgICAgICBpZiAocmVnZXgudGVzdChuYW1lKSkgcmV0dXJuIGdldChmaWVsZE1hcCwga2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRDb250cm9scyh0aGlzLmZvcm0oKSwgdGhpcy5mb3JtRmxhdEV4Y2x1ZGVzKCkpLm1hcCgoW25hbWUsIGNvbnRyb2xdKSA9PiAoe1xuICAgICAgbmFtZSxcbiAgICAgIGNvbnRyb2wsXG4gICAgICBmaWVsZDogX2dldCh0aGlzLmZpZWxkTWFwKCksIG5hbWUpID8/IHt0eXBlOiAndGV4dCd9LFxuICAgIH0pKTtcbiAgfSk7XG59XG4iXX0=
436
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{--horizontal-padding: 16px;--horizontal-padding-SCOPED-IN-form-builder-zu8B: var(--horizontal-padding);--vertical-padding: 24px;--vertical-padding-SCOPED-IN-form-builder-zu8B: var(--vertical-padding)}:host{display:contents}:host ng-atomic-form-section-switcher ::ng-deep>*{--horizontal-padding: var(--horizontal-padding-SCOPED-IN-form-builder-zu8B);--vertical-padding: var(--vertical-padding-SCOPED-IN-form-builder-zu8B)}\n"] }]
437
+ }], ctorParameters: () => [] });
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2Zvcm0vZm9ybS5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUc5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBTTdILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBRXpHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBR2hDLFNBQVMsWUFBWSxDQUFDLFFBQWEsRUFBRSxFQUF3QyxFQUFFLFdBQXFCLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUMvRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBTSxFQUFFLEVBQUU7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNsRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENB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d0JBQ1AsMkJBQTJCO3FCQUM1QixZQUNTOzs7Ozs7Ozs7R0FTVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dGFyZWFTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGV4dGFyZWEtc2VjdGlvbic7XG5pbXBvcnQgeyBUZXh0SW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvdGV4dC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IERhdGVJbnB1dFNlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvZGF0ZS1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFNlbGVjdElucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlbGVjdC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1GaWVsZCwgRm9ybUZpZWxkTWFwIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc21hcnQtZmllbGQnO1xuaW1wb3J0IHsgRG9tYWluUGlwZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RvbWFpbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBfY29tcHV0ZWQsIEFjdGlvbiwgSW5qZWN0YWJsZUNvbXBvbmVudCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25JbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9hY3Rpb24taW5wdXQtc2VjdGlvbic7XG5pbXBvcnQgeyBOZ0F0b21pY0NvbXBvbmVudCB9IGZyb20gJ0BuZy1hdG9taWMvY29yZSc7XG5pbXBvcnQgeyBGaWxlSW5wdXRTZWN0aW9uT3JnYW5pc20sIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9maWxlLWlucHV0LXNlY3Rpb24nO1xuaW1wb3J0IHsgQWdyZWVtZW50SW5wdXRTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FncmVlbWVudC1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFZpZGVvU2VjdGlvbk9yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy92aWRlby1zZWN0aW9uJztcbmltcG9ydCB7IE51bWJlcklucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL251bWJlci1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IEltYWdlUHJldmlld1NlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvaW1hZ2UtcHJldmlldy1zZWN0aW9uJztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvcGFzc3dvcmQtaW5wdXQtc2VjdGlvbic7XG5pbXBvcnQgeyBEYXRlUmFuZ2VJbnB1dFNlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvZGF0ZS1yYW5nZS1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IFNsaWRlcklucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL3NsaWRlci1pbnB1dC1zZWN0aW9uJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBY3Rpb25CdXR0b25zU2VjdGlvbk9yZ2FuaXNtU3RvcmUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FjdGlvbi1idXR0b25zLXNlY3Rpb24nO1xuXG5mdW5jdGlvbiB3YWxrQ29udHJvbHMoY29udHJvbHM6IGFueSwgY2I6IChuYW1lOiBzdHJpbmcsIGNvbnRyb2w6IGFueSkgPT4gdm9pZCwgZXhjbHVkZXM6IHN0cmluZ1tdID0gW10sIG5hbWUgPSAnJykge1xuICBPYmplY3QuZW50cmllcyhjb250cm9scykuZm9yRWFjaCgoW2tleSwgY29udHJvbF06IGFueSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBuYW1lID09PSAnJyA/IGtleSA6IGAke25hbWV9LiR7a2V5fWA7XG4gICAgaWYgKGV4Y2x1ZGVzLmluY2x1ZGVzKHBhdGgpKSB7XG4gICAgICBjYihwYXRoLCBjb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgIHdhbGtDb250cm9scyhjb250cm9sLmNvbnRyb2xzLCBjYiwgZXhjbHVkZXMsIHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihwYXRoLCBjb250cm9sKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmbGF0Q29udHJvbHMoZm9ybTogRm9ybUdyb3VwLCBleGNsdWRlczogc3RyaW5nW10pOiBbc3RyaW5nLCBBYnN0cmFjdENvbnRyb2xdW10ge1xuICBjb25zdCBjb250cm9sTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFic3RyYWN0Q29udHJvbD4oKTtcbiAgd2Fsa0NvbnRyb2xzKGZvcm0/LmNvbnRyb2xzLCAobmFtZSwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBjb250cm9sTWFwLnNldChuYW1lLCBjb250cm9sKSwgW1xuICAgIC4uLmV4Y2x1ZGVzLFxuICBdKTtcbiAgcmV0dXJuIFsuLi5jb250cm9sTWFwLmVudHJpZXMoKV07XG59XG5cblxuZW51bSBBY3Rpb25JZCB7XG4gIEZJTEVfU0VMRUNURUQgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50czp0ZW1wbGF0ZXMvZm9ybS9uZy1hdG9taWMtZm9ybS1zZWN0aW9uLXN3aXRjaGVyXSBGaWxlIHNlbGVjdGVkJyxcbiAgQ0FOQ0VMID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHM6dGVtcGxhdGVzL2Zvcm0vbmctYXRvbWljLWZvcm0tc2VjdGlvbi1zd2l0Y2hlcl0gQ2FuY2VsJyxcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbmctYXRvbWljLWZvcm0tc2VjdGlvbi1zd2l0Y2hlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljRm9ybVNlY3Rpb25Td2l0Y2hlclN0b3JlIGV4dGVuZHMgSW5qZWN0YWJsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyByZWFkb25seSBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICByZWFkb25seSBuYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBjb250cm9sID0gaW5wdXQucmVxdWlyZWQ8QWJzdHJhY3RDb250cm9sPigpO1xuICByZWFkb25seSBmaWVsZCA9IGlucHV0LnJlcXVpcmVkPEZvcm1GaWVsZE1hcCB8IEZvcm1GaWVsZD4oKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctYXRvbWljLWZvcm0tc2VjdGlvbi1zd2l0Y2hlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEb21haW5QaXBlLFxuICAgIEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBBZ3JlZW1lbnRJbnB1dFNlY3Rpb25PcmdhbmlzbSxcbiAgICBGaWxlSW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBEYXRlSW5wdXRTZWN0aW9uT3JnYW5pc20sXG4gICAgRGF0ZVJhbmdlSW5wdXRTZWN0aW9uT3JnYW5pc20sXG4gICAgVGV4dElucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUsXG4gICAgTnVtYmVySW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBUZXh0YXJlYVNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICAgIFNlbGVjdElucHV0U2VjdGlvbk9yZ2FuaXNtU3RvcmUsXG4gICAgU2xpZGVySW5wdXRTZWN0aW9uT3JnYW5pc21TdG9yZSxcbiAgICBWaWRlb1NlY3Rpb25PcmdhbmlzbSxcbiAgICBJbWFnZVByZXZpZXdTZWN0aW9uT3JnYW5pc20sXG4gICAgUGFzc3dvcmRJbnB1dFNlY3Rpb25PcmdhbmlzbVN0b3JlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoc3RvcmUuZmllbGQoKTsgYXMgZmllbGQpIHtcbiAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtc2VsZWN0LWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3RvcmUubmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUuY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBbYWN0aW9uc109XCJmaWVsZC5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZpZWxkPy5tdWx0aXBsZVwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICAgICAgPG9yZ2FuaXNtcy1kYXRlLWlucHV0LXNlY3Rpb25cbiAgICAgICAgICAgIFtsYWJlbF09XCJzdG9yZS5uYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXG4gICAgICAgICAgICBbY29udHJvbF09XCJzdG9yZS5jb250cm9sKClcIlxuICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQuYWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdkYXRlLXJhbmdlJykge1xuICAgICAgICAgIDxvcmdhbmlzbXMtZGF0ZS1yYW5nZS1pbnB1dC1zZWN0aW9uXG4gICAgICAgICAgICBbbGFiZWxdPVwic3RvcmUubmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUuY29udHJvbCgpXCJcbiAgICAgICAgICAgIFthY3Rpb25zXT1cImZpZWxkLmFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgndGV4dCcpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy10ZXh0LWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3RvcmUubmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUuY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQuYWN0aW9uc1wiXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBbYXV0b0NvbXBsZXRlXT1cImZpZWxkLmF1dG9Db21wbGV0ZVwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1udW1iZXItaW5wdXQtc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJzdG9yZS5uYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJzdG9yZS5jb250cm9sKClcIlxuICAgICAgICAgICAgICBbYWN0aW9uc109XCJmaWVsZC5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3RleHRhcmVhJykge1xuICAgICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgICA8b3JnYW5pc21zLXRleHRhcmVhLXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3RvcmUubmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUuY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXG4gICAgICAgICAgICAgIFtyb3dzXT1cImZpZWxkLnJvd3NcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdwYXNzd29yZCcpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1wYXNzd29yZC1pbnB1dC1zZWN0aW9uIGluamVjdGFibGVcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInN0b3JlLm5hbWUoKSB8IGRvbWFpblwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInN0b3JlLmNvbnRyb2woKVwiXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBbYWN0aW9uc109XCJmaWVsZC5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgKGFjdGlvbik9XCJkaXNwYXRjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnYWN0aW9uJykge1xuICAgICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgICA8b3JnYW5pc21zLWFjdGlvbi1idXR0b25zLXNlY3Rpb25cbiAgICAgICAgICAgICAgW2FjdGlvbnNdPVwiZmllbGQ/LmFjdGlvbnNcIlxuICAgICAgICAgICAgICBbdHlwZV09XCJmaWVsZD8uYnV0dG9uVHlwZVwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGluamVjdGFibGVcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1maWxlLWlucHV0LXNlY3Rpb24gaW5qZWN0YWJsZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3RvcmUubmFtZSgpIHwgZG9tYWluXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwic3RvcmUuY29udHJvbCgpXCJcbiAgICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXG4gICAgICAgICAgICAgIFtwcm9ncmVzc109XCJmaWVsZD8ucHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoRmlsZUlucHV0QWN0aW9uKCRldmVudCwgc3RvcmUubmFtZSgpKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3NsaWRlcicpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1zbGlkZXItaW5wdXQtc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJzdG9yZS5uYW1lKCkgfCBkb21haW5cIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJzdG9yZS5jb250cm9sKClcIlxuICAgICAgICAgICAgICBbbWF4XT1cImZpZWxkPy5zbGlkZXI/Lm1heFwiXG4gICAgICAgICAgICAgIFttaW5dPVwiZmllbGQ/LnNsaWRlcj8ubWluXCJcbiAgICAgICAgICAgICAgW3N0ZXBdPVwiZmllbGQ/LnNsaWRlcj8uc3RlcFwiXG4gICAgICAgICAgICAgIChhY3Rpb24pPVwiZGlzcGF0Y2goJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2FncmVlbWVudCcpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1hZ3JlZW1lbnQtaW5wdXQtc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInN0b3JlLmNvbnRyb2woKVwiXG4gICAgICAgICAgICAgIFtsYWJlbFRlbXBdPVwiZmllbGQ/LmxhYmVsVGVtcFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3ByZXZpZXcnKSB7XG4gICAgICAgICAgQGRlZmVyIHtcbiAgICAgICAgICAgIDxvcmdhbmlzbXMtdmlkZW8tc2VjdGlvbiBpbmplY3RhYmxlXG4gICAgICAgICAgICAgIFtzcmNdPVwic3RvcmUuY29udHJvbCgpLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2F1dG9wbGF5XT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgncHJldmlldzppbWFnZScpIHtcbiAgICAgICAgICBAZGVmZXIge1xuICAgICAgICAgICAgPG9yZ2FuaXNtcy1pbWFnZS1wcmV2aWV3LXNlY3Rpb25cbiAgICAgICAgICAgICAgW3NyY109XCJzdG9yZS5jb250cm9sKCkudmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdoaWRkZW4nKSB7IH1cbiAgICAgIH1cbiAgICB9XG4gIGAsXG4gIGhvc3REaXJlY3RpdmVzOltcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IE5nQXRvbWljRm9ybVNlY3Rpb25Td2l0Y2hlclN0b3JlLFxuICAgICAgaW5wdXRzOiBbJ25hbWUnLCAnY29udHJvbCcsICdmaWVsZCddLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZXM6IGA6aG9zdCB7IGRpc3BsYXk6IGNvbnRlbnRzOyB9YCxcbn0pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNGb3JtU2VjdGlvblN3aXRjaGVyIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5nQXRvbWljRm9ybVNlY3Rpb25Td2l0Y2hlclN0b3JlKTtcblxuICBwcm90ZWN0ZWQgZGlzcGF0Y2hGaWxlSW5wdXRBY3Rpb24oYWN0aW9uOiBBY3Rpb24sIG5hbWU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoYWN0aW9uLmlkKSB7XG4gICAgICBjYXNlIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5GSUxFX1NFTEVDVEVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKHtpZDogQWN0aW9uSWQuRklMRV9TRUxFQ1RFRCwgcGF5bG9hZDoge3Njb3BlOiBuYW1lLCBmaWxlczogYWN0aW9uLnBheWxvYWR9fSk7XG4gICAgICB9XG4gICAgICBjYXNlIEZpbGVJbnB1dFNlY3Rpb25PcmdhbmlzbS5BY3Rpb25JZC5DQU5DRUw6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goe2lkOiBBY3Rpb25JZC5DQU5DRUwsIHBheWxvYWQ6IHtzY29wZTogbmFtZX19KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbmctYXRvbWljLWZvcm0tc2VjdGlvbi1idWlsZGVyJyxcbiAgaW1wb3J0czogW1xuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25Td2l0Y2hlcixcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAZm9yIChlbnRyeSBvZiBjb250cm9sRW50cmllcygpOyB0cmFjayBlbnRyeS5uYW1lOykge1xuICAgICAgPG5nLWF0b21pYy1mb3JtLXNlY3Rpb24tc3dpdGNoZXJcbiAgICAgICAgW25hbWVdPVwiZW50cnkubmFtZVwiXG4gICAgICAgIFtjb250cm9sXT1cImVudHJ5LmNvbnRyb2xcIlxuICAgICAgICBbZmllbGRdPVwiZW50cnkuZmllbGRcIlxuICAgICAgICAoYWN0aW9uKT1cImRpc3BhdGNoKCRldmVudClcIlxuICAgICAgLz5cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybDogJy4vZm9ybS5idWlsZGVyLnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgQWN0aW9uSWQgPSBBY3Rpb25JZDtcblxuICByZWFkb25seSBmb3JtID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUdyb3VwPigpO1xuICByZWFkb25seSBmb3JtRmxhdEV4Y2x1ZGVzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgZmllbGRNYXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtRmllbGRNYXA+KCk7XG5cbiAgcmVhZG9ubHkgY29udHJvbEVudHJpZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gX2dldChmaWVsZE1hcDogRm9ybUZpZWxkTWFwLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgIGlmIChnZXQoZmllbGRNYXAsIG5hbWUpKSByZXR1cm4gZ2V0KGZpZWxkTWFwLCBuYW1lKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkTWFwID8/IHt9KSkge1xuICAgICAgICBpZiAobmV3IFJlZ0V4cChrZXkpLnRlc3QobmFtZSkpIHJldHVybiBnZXQoZmllbGRNYXAsIGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBmbGF0Q29udHJvbHModGhpcy5mb3JtKCksIHRoaXMuZm9ybUZsYXRFeGNsdWRlcygpKS5tYXAoKFtuYW1lLCBjb250cm9sXSkgPT4gKHtcbiAgICAgIG5hbWUsXG4gICAgICBjb250cm9sLFxuICAgICAgZmllbGQ6IF9nZXQodGhpcy5maWVsZE1hcCgpLCBuYW1lKSA/PyB7dHlwZTogJ3RleHQnfSxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tOZ0F0b21pY0Zvcm1TZWN0aW9uQnVpbGRlcl0gY29udHJvbEVudHJpZXM6JywgdGhpcy5jb250cm9sRW50cmllcygpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19